[jboss-cvs] JBossAS SVN: r73339 - projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/common.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue May 13 06:05:44 EDT 2008


Author: wolfc
Date: 2008-05-13 06:05:44 -0400 (Tue, 13 May 2008)
New Revision: 73339

Modified:
   projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/common/EmbeddedTestMcBootstrap.java
Log:
EJBTHREE-1345: rewrote shutdown and added lookup

Modified: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/common/EmbeddedTestMcBootstrap.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/common/EmbeddedTestMcBootstrap.java	2008-05-13 09:18:40 UTC (rev 73338)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/common/EmbeddedTestMcBootstrap.java	2008-05-13 10:05:44 UTC (rev 73339)
@@ -23,9 +23,11 @@
 
 import java.net.URL;
 
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
 import org.jboss.kernel.plugins.bootstrap.basic.BasicBootstrap;
-import org.jboss.kernel.plugins.deployment.AbstractKernelDeployer;
 import org.jboss.kernel.plugins.deployment.xml.BasicXMLDeployer;
+import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.logging.Logger;
 
 /**
@@ -52,6 +54,8 @@
    // --------------------------------------------------------------------------------||
 
    private BasicXMLDeployer deployer;
+   
+   private Thread shutdownHook;
 
    // --------------------------------------------------------------------------------||
    // Constructors -------------------------------------------------------------------||
@@ -92,7 +96,8 @@
       this.setDeployer(new BasicXMLDeployer(this.getKernel()));
 
       // Add a shutdown hook
-      Runtime.getRuntime().addShutdownHook(new ShutdownDeployerThread(this.getDeployer()));
+      shutdownHook = new ShutdownDeployerThread();
+      Runtime.getRuntime().addShutdownHook(shutdownHook);
    }
 
    // --------------------------------------------------------------------------------||
@@ -153,6 +158,26 @@
    }
 
    /**
+    * @param name
+    */
+   public <T> T lookup(String name, Class<T> expectedType) throws Throwable
+   {
+      KernelController controller = getKernel().getController();
+      ControllerContext context = controller.getContext(name, null);
+      controller.change(context, ControllerState.INSTALLED);
+      if(context.getError() != null)
+         throw context.getError();
+      
+      if(context.getState() != ControllerState.INSTALLED) {
+         System.err.println(context.getDependencyInfo().getUnresolvedDependencies(null));
+      }
+      // TODO: it can be stalled because of dependencies
+      assert context.getState() == ControllerState.INSTALLED;
+      
+      return expectedType.cast(context.getTarget());
+   }
+   
+   /**
     * Undeploys the specified URL
     * 
     * @param url
@@ -233,20 +258,12 @@
     */
    protected final class ShutdownDeployerThread extends Thread
    {
-      private AbstractKernelDeployer deployer;
-
-      public ShutdownDeployerThread(AbstractKernelDeployer deployer)
-      {
-         this.deployer = deployer;
-      }
-
       @Override
       public void run()
       {
          super.run();
-         log.debug("Shutting down " + this.deployer + "...");
-         getDeployer().shutdown();
-         log.info("Shut down: " + getDeployer());
+         
+         shutdownHook();
       }
 
    }
@@ -302,4 +319,23 @@
       }
       return url;
    }
+   
+   /**
+    * Perform a clean shutdown. 
+    */
+   public void shutdown()
+   {
+      // remove the hook
+      Runtime.getRuntime().removeShutdownHook(shutdownHook);
+      
+      // and call it.
+      shutdownHook();
+   }
+   
+   private void shutdownHook()
+   {
+      log.debug("Shutting down " + this.deployer + "...");
+      getDeployer().shutdown();
+      log.info("Shut down: " + getDeployer());      
+   }
 }




More information about the jboss-cvs-commits mailing list