jdk/src/share/classes/javax/management/event/EventClientDelegate.java
changeset 1156 bbc2d15aaf7a
parent 1004 5ba8217eb504
child 1247 b4c26443dee5
equal deleted inserted replaced
1155:a9a142fcf1b5 1156:bbc2d15aaf7a
   719             logger.trace("checkListenerPermission", "");
   719             logger.trace("checkListenerPermission", "");
   720         }
   720         }
   721         SecurityManager sm = System.getSecurityManager();
   721         SecurityManager sm = System.getSecurityManager();
   722         if (sm != null) {
   722         if (sm != null) {
   723             try {
   723             try {
   724                 ObjectInstance oi = (ObjectInstance) AccessController.doPrivileged(
   724                 final String serverName = getMBeanServerName();
       
   725 
       
   726                 ObjectInstance oi = (ObjectInstance)
       
   727                     AccessController.doPrivileged(
   725                         new PrivilegedExceptionAction<Object>() {
   728                         new PrivilegedExceptionAction<Object>() {
   726                     public Object run()
   729                     public Object run()
   727                     throws InstanceNotFoundException {
   730                     throws InstanceNotFoundException {
   728                         return mbeanServer.getObjectInstance(name);
   731                         return mbeanServer.getObjectInstance(name);
   729                     }
   732                     }
   730                 });
   733                 });
   731 
   734 
   732                 String classname = oi.getClassName();
   735                 String classname = oi.getClassName();
   733                 MBeanPermission perm = new MBeanPermission(
   736                 MBeanPermission perm = new MBeanPermission(
       
   737                         serverName,
   734                         classname,
   738                         classname,
   735                         null,
   739                         null,
   736                         name,
   740                         name,
   737                         "addNotificationListener");
   741                         "addNotificationListener");
   738                 sm.checkPermission(perm, acc);
   742                 sm.checkPermission(perm, acc);
   744             }
   748             }
   745         }
   749         }
   746         return true;
   750         return true;
   747     }
   751     }
   748 
   752 
       
   753     private String getMBeanServerName() {
       
   754         if (mbeanServerName != null) return mbeanServerName;
       
   755         else return (mbeanServerName = getMBeanServerName(mbeanServer));
       
   756     }
       
   757 
       
   758     private static String getMBeanServerName(final MBeanServer server) {
       
   759         final PrivilegedAction<String> action = new PrivilegedAction<String>() {
       
   760             public String run() {
       
   761                 return Util.getMBeanServerSecurityName(server);
       
   762             }
       
   763         };
       
   764         return AccessController.doPrivileged(action);
       
   765     }
       
   766 
   749     // ------------------------------------
   767     // ------------------------------------
   750     // private variables
   768     // private variables
   751     // ------------------------------------
   769     // ------------------------------------
   752     private final MBeanServer mbeanServer;
   770     private final MBeanServer mbeanServer;
   753     private volatile String mbeanServerName = null;
   771     private volatile String mbeanServerName = null;