[jboss-cvs] JBossAS SVN: r102091 - in projects/weld-int/trunk: deployer and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Mar 8 17:08:59 EST 2010


Author: alesj
Date: 2010-03-08 17:08:59 -0500 (Mon, 08 Mar 2010)
New Revision: 102091

Modified:
   projects/weld-int/trunk/deployer/pom.xml
   projects/weld-int/trunk/deployer/src/test/java/org/jboss/test/deployers/test/BootDeployerTestCase.java
   projects/weld-int/trunk/pom.xml
Log:
Test Kernel's class leak.

Modified: projects/weld-int/trunk/deployer/pom.xml
===================================================================
--- projects/weld-int/trunk/deployer/pom.xml	2010-03-08 22:07:11 UTC (rev 102090)
+++ projects/weld-int/trunk/deployer/pom.xml	2010-03-08 22:08:59 UTC (rev 102091)
@@ -170,6 +170,27 @@
       </exclusions>
     </dependency>
     
+    <dependency>
+      <groupId>org.jboss</groupId>
+      <artifactId>jboss-mdr</artifactId>
+      <optional>true</optional>
+      <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-reflect</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-common-core</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.logging</groupId>
+          <artifactId>jboss-logging-spi</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
     <!-- Test dependencies -->
 
     <dependency>

Modified: projects/weld-int/trunk/deployer/src/test/java/org/jboss/test/deployers/test/BootDeployerTestCase.java
===================================================================
--- projects/weld-int/trunk/deployer/src/test/java/org/jboss/test/deployers/test/BootDeployerTestCase.java	2010-03-08 22:07:11 UTC (rev 102090)
+++ projects/weld-int/trunk/deployer/src/test/java/org/jboss/test/deployers/test/BootDeployerTestCase.java	2010-03-08 22:08:59 UTC (rev 102091)
@@ -23,13 +23,23 @@
 
 import javax.naming.Context;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Map;
+
 import junit.framework.Test;
 
+import org.jboss.beans.metadata.api.annotations.Inject;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.dependency.plugins.AbstractController;
+import org.jboss.dependency.plugins.tracker.AbstractContextRegistry;
+import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.deployers.client.spi.DeployerClient;
 import org.jboss.deployers.client.spi.Deployment;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.kernel.plugins.bootstrap.basic.KernelConstants;
+import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.test.deployers.support.deployer.CheckableJndiBinderDeployer;
 import org.jboss.virtual.VirtualFile;
@@ -42,9 +52,12 @@
  */
 public class BootDeployerTestCase extends AbstractWeldTest
 {
+   private KernelController controller;
+
    public BootDeployerTestCase(String name)
    {
       super(name);
+      setAutowireCandidate(true);
    }
 
    public static Test suite()
@@ -52,6 +65,12 @@
       return suite(BootDeployerTestCase.class);
    }
 
+   @Inject(bean = KernelConstants.KERNEL_CONTROLLER_NAME)
+   public void setController(KernelController controller)
+   {
+      this.controller = controller;
+   }
+
    protected void testBootstrap(VirtualFile ear) throws Exception
    {
       // should already be on the deployer
@@ -67,6 +86,7 @@
       DeployerClient mainDeployer = getDeployerClient();
       mainDeployer.addDeployment(deployment);
       mainDeployer.process();
+      ControllerContext wbContext = null;
       try
       {
          DeploymentUnit earDU = getMainDeployerStructure().getDeploymentUnit(deployment.getName());
@@ -91,6 +111,11 @@
             duSimpleName = earDU.getSimpleName();
             Context context = assertInstanceOf(bmContext.lookup(duSimpleName), Context.class, false);
             assertSame(bootstrap, context.lookup("bootstrap"));
+
+            Class<?> wbClass = earDU.getClassLoader().loadClass("org.jboss.test.deployers.support.CheckableBootstrap");
+            wbContext = controller.getContextByClass(wbClass);
+            assertNotNull(wbContext);
+            assertSame(bootstrap, wbContext.getTarget());
          }
          finally
          {
@@ -104,6 +129,28 @@
 
          // clear binding
          assertNull(bmContext.lookup(duSimpleName));
+
+         // clear context 2 class mapping
+         if (wbContext != null)
+            assertNull(wbContext.getTarget());
+
+         Field registryField = AbstractController.class.getDeclaredField("registry");
+         registryField.setAccessible(true);
+         Object registry = registryField.get(controller);
+         Field mapField = AbstractContextRegistry.class.getDeclaredField("contextsByClass");
+         mapField.setAccessible(true);
+         Map<Class<?>, ?> map = (Map) mapField.get(registry);
+         for (Class<?> clazz : map.keySet())
+         {
+            String className = clazz.getName();
+            // should be the only one -- no other service/bean should use it -- except if we leak
+            if ("org.jboss.test.deployers.support.CheckableBootstrap".equals(className))
+            {
+
+               Object value = map.get(clazz);
+               fail("" + value);
+            }
+         }
       }
       assertTrue(invoke(bootstrap, "Shutdown"));
    }

Modified: projects/weld-int/trunk/pom.xml
===================================================================
--- projects/weld-int/trunk/pom.xml	2010-03-08 22:07:11 UTC (rev 102090)
+++ projects/weld-int/trunk/pom.xml	2010-03-08 22:08:59 UTC (rev 102091)
@@ -29,11 +29,12 @@
       <version.jboss.interceptor>1.0.0-CR11</version.jboss.interceptor>
       <version.jboss.vfs>2.2.0.Alpha2</version.jboss.vfs>
       <version.jboss.man>2.1.1.SP1</version.jboss.man>
-      <version.jboss.microcontainer>2.2.0.Alpha4</version.jboss.microcontainer>
+      <version.jboss.mdr>2.2.0.Alpha2</version.jboss.mdr>
+      <version.jboss.microcontainer>2.2.0-SNAPSHOT</version.jboss.microcontainer>
       <version.jboss.cl>2.2.0.Alpha1</version.jboss.cl>
       <version.jboss.deployers>2.2.0.Alpha1</version.jboss.deployers>
       <version.jboss.common.core>2.2.17.GA</version.jboss.common.core>
-      <version.jboss.logging.spi>2.2.0.CR1</version.jboss.logging.spi>
+      <version.jboss.logging.spi>2.1.1.GA</version.jboss.logging.spi>
       <version.jboss.classloading.spi>6.0.0-Alpha8</version.jboss.classloading.spi>
       <version.jboss.transaction.spi>6.0.0-Alpha8</version.jboss.transaction.spi>
       <version.jboss.metadata>2.0.0-alpha-5</version.jboss.metadata>
@@ -301,6 +302,12 @@
          </dependency>
 
          <dependency>
+            <groupId>org.jboss</groupId>
+            <artifactId>jboss-mdr</artifactId>
+            <version>${version.jboss.mdr}</version>
+         </dependency>
+
+         <dependency>
             <groupId>org.jboss.kernel</groupId>
             <artifactId>jboss-dependency</artifactId>
             <version>${version.jboss.microcontainer}</version>
@@ -310,6 +317,12 @@
             <groupId>org.jboss.kernel</groupId>
             <artifactId>jboss-kernel</artifactId>
             <version>${version.jboss.microcontainer}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.jboss</groupId>
+                    <artifactId>jboss-mdr</artifactId>
+                </exclusion>
+            </exclusions>
          </dependency>
 
          <dependency>
@@ -331,6 +344,12 @@
          </dependency>
 
          <dependency>
+            <groupId>org.jboss.logging</groupId>
+            <artifactId>jboss-logging-log4j</artifactId>
+            <version>${version.jboss.logging.spi}</version>
+         </dependency>
+
+         <dependency>
             <groupId>org.jboss.integration</groupId>
             <artifactId>jboss-classloading-spi</artifactId>
             <version>${version.jboss.classloading.spi}</version>




More information about the jboss-cvs-commits mailing list