Fixes https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=236541. Andrew. 2007-05-03 Andrew Haley <aph@xxxxxxxxxx> * gnu/javax/management/Server.java (Server): Record the delegate. (registerMBean): Notify the delegate. (unregisterMBean): Likewise. (notify): New method. Index: Server.java =================================================================== --- Server.java (revision 124185) +++ Server.java (working copy) @@ -53,6 +53,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicLong; import javax.management.Attribute; import javax.management.AttributeList; @@ -75,6 +76,7 @@ import javax.management.MBeanRegistrationException; import javax.management.MBeanServer; import javax.management.MBeanServerDelegate; +import javax.management.MBeanServerNotification; import javax.management.MBeanTrustPermission; import javax.management.NotCompliantMBeanException; import javax.management.Notification; @@ -137,6 +139,15 @@ private Map listeners; /** + * An MBean that emits notifications when an MBean is registered and + * unregistered with this server. + * + */ + private final MBeanServerDelegate delegate; + + static private final AtomicLong sequenceNumber = new AtomicLong(); + + /** * Initialise the delegate name. */ static @@ -171,6 +182,7 @@ { this.defaultDomain = defaultDomain; this.outer = outer; + this.delegate = delegate; try { registerMBean(delegate, DELEGATE_NAME); @@ -1703,6 +1715,7 @@ beans.put(name, new ServerInfo(obji, obj)); if (register != null) register.postRegister(Boolean.TRUE); + notify(name, MBeanServerNotification.REGISTRATION_NOTIFICATION); return obji; } @@ -2088,6 +2101,7 @@ } } beans.remove(name); + notify(name, MBeanServerNotification.UNREGISTRATION_NOTIFICATION); if (register != null) register.postDeregister(); } @@ -2149,6 +2163,13 @@ } } + private void notify(ObjectName name, String type) + { + delegate.sendNotification + (new MBeanServerNotification + (type, DELEGATE_NAME, sequenceNumber.getAndIncrement(), name)); + } + /** * Notification listener which removes direct references * to beans.