Author: drobiazko
Date: Fri May 28 20:10:27 2010
New Revision: 949275

URL: http://svn.apache.org/viewvc?rev=949275&view=rev
Log:
Rename ObjectName of PagePool's ObjectName and use OneShotLock inside 
MBeanSupportImpl

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MBeanSupportImpl.java
    
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RemotePoolManagement.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java?rev=949275&r1=949274&r2=949275&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
 Fri May 28 20:10:27 2010
@@ -192,7 +192,7 @@ public class InternalModule
 
         updateListenerHub.addUpdateListener(service);
 
-        final ObjectName objectName = 
buildObjectName("org.apache.tapestry5:type=PagePool");
+        final ObjectName objectName = 
buildObjectName("org.apache.tapestry5:service=PagePool");
         
         managedBeanSupport.register(service, objectName);
 

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MBeanSupportImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MBeanSupportImpl.java?rev=949275&r1=949274&r2=949275&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MBeanSupportImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MBeanSupportImpl.java
 Fri May 28 20:10:27 2010
@@ -22,10 +22,10 @@ import java.util.Set;
 
 import javax.management.MBeanServer;
 import javax.management.MBeanServerFactory;
-import javax.management.ObjectInstance;
 import javax.management.ObjectName;
 
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.ioc.internal.util.OneShotLock;
 import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
 import org.slf4j.Logger;
 
@@ -34,6 +34,8 @@ public class MBeanSupportImpl implements
     private Logger logger;
 
     private MBeanServer server;
+    
+    private final OneShotLock lock = new OneShotLock();
 
     private final Set<ObjectName> registeredBeans = CollectionFactory.newSet();
 
@@ -57,6 +59,8 @@ public class MBeanSupportImpl implements
 
     public void register(final Object object, final ObjectName objectName)
     {
+        lock.check();
+        
         try
         {
             this.server.registerMBean(object, objectName);
@@ -73,6 +77,8 @@ public class MBeanSupportImpl implements
 
     public void unregister(final ObjectName objectName)
     {
+        lock.check();
+        
         if (this.server.isRegistered(objectName))
         {
             try
@@ -80,6 +86,9 @@ public class MBeanSupportImpl implements
                 this.server.unregisterMBean(objectName);
 
                 this.logger.info(format("Unegistered MBean '%s' from server", 
objectName));
+                
+                if(registeredBeans.contains(objectName))
+                    registeredBeans.remove(objectName);
             }
             catch (final Exception e)
             {
@@ -90,6 +99,8 @@ public class MBeanSupportImpl implements
 
     public void registryDidShutdown()
     {
+        lock.lock();
+        
         for (final ObjectName name : this.registeredBeans)
         {
             unregister(name);

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RemotePoolManagement.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RemotePoolManagement.java?rev=949275&r1=949274&r2=949275&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RemotePoolManagement.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RemotePoolManagement.java
 Fri May 28 20:10:27 2010
@@ -25,7 +25,7 @@ public class RemotePoolManagement
     {
         MBeanServer server = ManagementFactory.getPlatformMBeanServer();
         
-        return server.getAttribute(new 
ObjectName("org.apache.tapestry5:type=PagePool"), "SoftWait");
+        return server.getAttribute(new 
ObjectName("org.apache.tapestry5:service=PagePool"), "SoftWait");
     }
 
 }


Reply via email to