Server.java (Server): Record the delegate.

2007-05-03  Andrew Haley  <aph@redhat.com>

        * gnu/javax/management/Server.java (Server): Record the delegate.
        (registerMBean): Notify the delegate.
        (unregisterMBean): Likewise.
        (notify): New method.

From-SVN: r124383
This commit is contained in:
Andrew Haley 2007-05-03 18:30:33 +00:00 committed by Andrew Haley
parent a45bce6e9f
commit 6696d65299
2 changed files with 28 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2007-05-03 Andrew Haley <aph@redhat.com>
* gnu/javax/management/Server.java (Server): Record the delegate.
(registerMBean): Notify the delegate.
(unregisterMBean): Likewise.
(notify): New method.
2007-04-04 Francis Kung <fkung@redhat.com>
* gnu/java/awt/peer/gtk/ComponentGraphics.java

View File

@ -53,6 +53,7 @@ import java.util.HashSet;
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.MBeanRegistration;
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;
@ -136,6 +138,15 @@ public class Server
*/
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(1);
/**
* Initialise the delegate name.
*/
@ -171,6 +182,7 @@ public class Server
{
this.defaultDomain = defaultDomain;
this.outer = outer;
this.delegate = delegate;
try
{
registerMBean(delegate, DELEGATE_NAME);
@ -1703,6 +1715,7 @@ public class Server
beans.put(name, new ServerInfo(obji, obj));
if (register != null)
register.postRegister(Boolean.TRUE);
notify(name, MBeanServerNotification.REGISTRATION_NOTIFICATION);
return obji;
}
@ -2088,10 +2101,18 @@ public class Server
}
}
beans.remove(name);
notify(name, MBeanServerNotification.UNREGISTRATION_NOTIFICATION);
if (register != null)
register.postDeregister();
}
private void notify(ObjectName name, String type)
{
delegate.sendNotification
(new MBeanServerNotification
(type, DELEGATE_NAME, sequenceNumber.getAndIncrement(), name));
}
/**
* Input stream which deserializes using the given classloader.
*/