[jboss-svn-commits] JBoss Common SVN: r4663 - in arquillian/trunk: protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jul 2 05:13:11 EDT 2010


Author: thomas.diesler at jboss.com
Date: 2010-07-02 05:13:11 -0400 (Fri, 02 Jul 2010)
New Revision: 4663

Modified:
   arquillian/trunk/.gitignore
   arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXMethodExecutor.java
Log:
Fix client side issue when the MBeanServer is not available

Modified: arquillian/trunk/.gitignore
===================================================================
--- arquillian/trunk/.gitignore	2010-07-01 17:56:27 UTC (rev 4662)
+++ arquillian/trunk/.gitignore	2010-07-02 09:13:11 UTC (rev 4663)
@@ -1,68 +1,70 @@
 .project
-.settings/
+.settings
 api/.classpath
 api/.project
-api/.settings/
+api/.settings
 api/target
 build/.project
-build/.settings/
+build/.settings
 bundle/.classpath
 bundle/target
-containers/glassfish-embedded-30/target
-containers/jbossas-embedded-60/target
-containers/jbossas-local-51/target
-containers/jbossas-local-60/target
-containers/jbossas-remote-50/target
-containers/jbossas-remote-51/target
-containers/jbossas-remote-60/.classpath
-containers/jbossas-remote-60/.project
-containers/jbossas-remote-60/.settings/
-containers/jbossas-remote-60/target
-containers/openejb/target
-containers/openwebbeans-embedded/target
-containers/osgi-embedded/target/
-containers/reloaded/target
-containers/weld-ee-embedded/target
-containers/weld-embedded/.classpath
-containers/weld-embedded/target
+containers/glassfish-embedded-3/target
+containers/glassfish-remote-3/target
+containers/jbossas-embedded-6/target
+containers/jbossas-managed-5.1/target
+containers/jbossas-managed-6/target
+containers/jbossas-remote-5.1/target
+containers/jbossas-remote-5/target
+containers/jbossas-remote-6/target
+containers/jetty-embedded-6.1/target
+containers/jsr88-remote-1.2/target
+containers/openejb-embedded-3.1/target
+containers/openwebbeans-embedded-1/target
+containers/osgi-embedded-4.2/.classpath
+containers/osgi-embedded-4.2/target
+containers/reloaded-embedded-1/target
+containers/tomcat-embedded-6/target
+containers/weld-ee-embedded-1.1/target
+containers/weld-se-embedded-1/target
 doc/reference/target
 examples/.project
-examples/.settings/
+examples/.settings
 examples/domain/.classpath
 examples/domain/.project
-examples/domain/.settings/
+examples/domain/.settings
 examples/domain/target
 examples/junit/.classpath
 examples/junit/.project
-examples/junit/.settings/
+examples/junit/.settings
 examples/junit/target
 examples/testng/target
 frameworks/jsfunit/target
 impl-base/.classpath
 impl-base/.project
-impl-base/.settings/
+impl-base/.settings
 impl-base/target
 junit/.classpath
 junit/.project
-junit/.settings/
+junit/.settings
 junit/target
 packagers/applicationarchive/.classpath
 packagers/applicationarchive/target
 packagers/javaee/.classpath
 packagers/javaee/.project
-packagers/javaee/.settings/
+packagers/javaee/.settings
 packagers/javaee/target
 protocols/jmx/.classpath
 protocols/jmx/target
 protocols/local/.classpath
 protocols/local/target
-packagers/osgi/target/
+packagers/osgi/.classpath
+packagers/osgi/target
 protocols/servlet-ee5/target
 protocols/servlet-ee6/.classpath
 protocols/servlet-ee6/target
 spi/.classpath
 spi/.project
-spi/.settings/
+spi/.settings
 spi/target
 testenrichers/cdi/.classpath
 testenrichers/cdi/target
@@ -73,3 +75,4 @@
 testenrichers/resource/.classpath
 testenrichers/resource/target
 testng/target
+

Modified: arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXMethodExecutor.java
===================================================================
--- arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXMethodExecutor.java	2010-07-01 17:56:27 UTC (rev 4662)
+++ arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXMethodExecutor.java	2010-07-02 09:13:11 UTC (rev 4663)
@@ -29,6 +29,7 @@
 import org.jboss.arquillian.spi.TestMethodExecutor;
 import org.jboss.arquillian.spi.TestResult;
 import org.jboss.arquillian.spi.TestResult.Status;
+import org.jboss.logging.Logger;
 
 /**
  * JMXMethodExecutor
@@ -38,7 +39,8 @@
  */
 public class JMXMethodExecutor implements ContainerMethodExecutor
 {
-   private MBeanServer cachedMBeanServer;
+   // Provide logging
+   private static Logger log = Logger.getLogger(JMXMethodExecutor.class);
    
    @Override
    public TestResult invoke(TestMethodExecutor testMethodExecutor)
@@ -52,7 +54,7 @@
       TestResult result = null;
       try 
       {
-         MBeanServer mbeanServer = getMBeanServer();
+         MBeanServer mbeanServer = findOrCreateMBeanServer();
          ObjectName objectName = new ObjectName(JMXTestRunnerMBean.OBJECT_NAME);
          JMXTestRunnerMBean testRunner = getMBeanProxy(mbeanServer, objectName, JMXTestRunnerMBean.class);
 
@@ -75,21 +77,31 @@
       return result;
    }
 
-   private MBeanServer getMBeanServer()
+   private <T> T getMBeanProxy(MBeanServer mbeanServer, ObjectName name, Class<T> interf)
    {
-      if (cachedMBeanServer == null)
+      return (T)MBeanServerInvocationHandler.newProxyInstance(mbeanServer, name, interf, false);
+   }
+
+   private MBeanServer findOrCreateMBeanServer()
+   {
+      MBeanServer mbeanServer = null;
+
+      ArrayList<MBeanServer> serverArr = MBeanServerFactory.findMBeanServer(null);
+      if (serverArr.size() > 1)
+         log.warn("Multiple MBeanServer instances: " + serverArr);
+
+      if (serverArr.size() > 0)
       {
-         ArrayList<MBeanServer> mbeanServers = MBeanServerFactory.findMBeanServer(null);
-         if (mbeanServers.size() < 1)
-            throw new IllegalStateException("No MBeanServer available");
-         
-         cachedMBeanServer = mbeanServers.get(0);
+         mbeanServer = serverArr.get(0);
+         log.debug("Found MBeanServer: " + mbeanServer.getDefaultDomain());
       }
-      return cachedMBeanServer;
-   }
 
-   private <T> T getMBeanProxy(MBeanServer mbeanServer, ObjectName name, Class<T> interf)
-   {
-      return (T)MBeanServerInvocationHandler.newProxyInstance(mbeanServer, name, interf, false);
+      if (mbeanServer == null)
+      {
+         log.debug("No MBeanServer, create one ...");
+         mbeanServer = MBeanServerFactory.createMBeanServer();
+      }
+
+      return mbeanServer;
    }
 }
\ No newline at end of file



More information about the jboss-svn-commits mailing list