[jboss-cvs] JBossAS SVN: r70001 - in projects/microcontainer/trunk/deployers-vfs/src: resources/tests/classloader and 25 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Feb 21 09:15:56 EST 2008


Author: adrian at jboss.org
Date: 2008-02-21 09:15:56 -0500 (Thu, 21 Feb 2008)
New Revision: 70001

Added:
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment1/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment1/META-INF/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment1/META-INF/jboss-classloading.xml
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment2/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment2/META-INF/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment2/META-INF/jboss-beans.xml
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/META-INF/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/META-INF/jboss-classloading.xml
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/a/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/a/b/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/a/b/c/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/a/b/c/test-resource-deployment3
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment4/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment4/META-INF/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment4/META-INF/jboss-beans.xml
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/META-INF/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/META-INF/jboss-classloading.xml
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/a/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/a/b/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/a/b/c/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/a/b/c/test-resource-deployment5
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment6/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment6/META-INF/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment6/META-INF/jboss-classloading.xml
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/external-deployment2/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/external-deployment2/a/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/external-deployment2/a/b/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/external-deployment2/a/b/c/
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/external-deployment2/a/b/c/test-resource-external-deployment2
   projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/DeploymentDependsOnDeploymentClassLoaderUnitTestCase.java
   projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/DeploymentDependsOnManualClassLoaderUnitTestCase.java
   projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/ManualDependsOnDeploymentClassLoaderUnitTestCase.java
Modified:
   projects/microcontainer/trunk/deployers-vfs/src/resources/tests/bootstrap/bootstrap.xml
   projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/BootstrapDeployersTest.java
   projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java
Log:
Add tests for deployments dependening on manual classloaders and vice-versa

Modified: projects/microcontainer/trunk/deployers-vfs/src/resources/tests/bootstrap/bootstrap.xml
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/resources/tests/bootstrap/bootstrap.xml	2008-02-21 14:14:06 UTC (rev 70000)
+++ projects/microcontainer/trunk/deployers-vfs/src/resources/tests/bootstrap/bootstrap.xml	2008-02-21 14:15:56 UTC (rev 70001)
@@ -100,7 +100,10 @@
    <bean name="ClassLoaderSystem" class="org.jboss.classloader.spi.ClassLoaderSystem">
       <constructor factoryClass="org.jboss.classloader.spi.ClassLoaderSystem" factoryMethod="getInstance"/>
    </bean>
-   <bean name="ClassLoading" class="org.jboss.classloading.spi.dependency.ClassLoading"/>
+   <bean name="ClassLoading" class="org.jboss.classloading.spi.dependency.ClassLoading">
+      <incallback method="addModule" state="Configured"/>
+      <uncallback method="removeModule" state="Configured"/>
+   </bean>
    <bean name="ClassLoadingMetaDataParser" class="org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer">
       <constructor>
          <parameter>org.jboss.classloading.spi.metadata.ClassLoadingMetaData</parameter>

Added: projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment1/META-INF/jboss-classloading.xml
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment1/META-INF/jboss-classloading.xml	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment1/META-INF/jboss-classloading.xml	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1,6 @@
+<classloading xmlns="urn:jboss:classloading:1.0">
+   <requirements>
+      <module name="test2"/>
+   </requirements>
+</classloading>
+      

Added: projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment2/META-INF/jboss-beans.xml
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment2/META-INF/jboss-beans.xml	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment2/META-INF/jboss-beans.xml	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1,7 @@
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <classloader name="test2" xmlns="urn:jboss:classloader:1.0" export-all="NON_EMPTY">
+      <root>${test.classloader.url}/external-deployment2</root>
+   </classloader>
+
+</deployment>

Added: projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/META-INF/jboss-classloading.xml
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/META-INF/jboss-classloading.xml	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/META-INF/jboss-classloading.xml	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1,6 @@
+<classloading xmlns="urn:jboss:classloading:1.0" export-all="NON_EMPTY">
+   <capabilities>
+      <module name="test3"/>
+   </capabilities>
+</classloading>
+      

Added: projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/a/b/c/test-resource-deployment3
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/a/b/c/test-resource-deployment3	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment3/a/b/c/test-resource-deployment3	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1 @@
+empty
\ No newline at end of file

Added: projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment4/META-INF/jboss-beans.xml
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment4/META-INF/jboss-beans.xml	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment4/META-INF/jboss-beans.xml	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1,10 @@
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <classloader name="test4" xmlns="urn:jboss:classloader:1.0">
+      <requirements>
+         <module name="test3"/>
+      </requirements>
+      <root>${test.classloader.url}/external-deployment2</root>
+   </classloader>
+
+</deployment>

Added: projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/META-INF/jboss-classloading.xml
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/META-INF/jboss-classloading.xml	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/META-INF/jboss-classloading.xml	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1,6 @@
+<classloading xmlns="urn:jboss:classloading:1.0" export-all="NON_EMPTY">
+   <capabilities>
+      <module name="test5"/>
+   </capabilities>
+</classloading>
+      

Added: projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/a/b/c/test-resource-deployment5
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/a/b/c/test-resource-deployment5	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment5/a/b/c/test-resource-deployment5	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1 @@
+empty
\ No newline at end of file

Added: projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment6/META-INF/jboss-classloading.xml
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment6/META-INF/jboss-classloading.xml	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/deployment6/META-INF/jboss-classloading.xml	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1,6 @@
+<classloading xmlns="urn:jboss:classloading:1.0">
+   <requirements>
+      <module name="test5"/>
+   </requirements>
+</classloading>
+      

Added: projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/external-deployment2/a/b/c/test-resource-external-deployment2
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/external-deployment2/a/b/c/test-resource-external-deployment2	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/resources/tests/classloader/external-deployment2/a/b/c/test-resource-external-deployment2	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1 @@
+empty
\ No newline at end of file

Modified: projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/BootstrapDeployersTest.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/BootstrapDeployersTest.java	2008-02-21 14:14:06 UTC (rev 70000)
+++ projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/BootstrapDeployersTest.java	2008-02-21 14:15:56 UTC (rev 70001)
@@ -107,6 +107,14 @@
       return (VFSDeploymentUnit) getMainDeployerStructure().getDeploymentUnit(deployment.getName(), true);
    }
    
+   protected VFSDeploymentUnit addDeployment(String root, String child) throws Exception
+   {
+      VFSDeployment deployment = createVFSDeployment(root, child);
+      getDeployerClient().addDeployment(deployment);
+      getDeployerClient().process();
+      return (VFSDeploymentUnit) getMainDeployerStructure().getDeploymentUnit(deployment.getName(), true);
+   }
+   
    protected void undeploy(DeploymentUnit unit)
    {
       try
@@ -233,6 +241,18 @@
       return unit.getClassLoader();
    }
    
+   protected void assertNoClassLoader(DeploymentUnit unit)
+   {
+      try
+      {
+         assertNull("Should not be a classloader: " + unit.getClassLoader());
+      }
+      catch (Throwable e)
+      {
+         checkThrowable(IllegalStateException.class, e);
+      }
+   }
+   
    protected ClassLoader getClassLoader(Object name)
    {
       ControllerContext ctx = getControllerContext(name);

Modified: projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java	2008-02-21 14:14:06 UTC (rev 70000)
+++ projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java	2008-02-21 14:15:56 UTC (rev 70001)
@@ -22,7 +22,10 @@
 package org.jboss.test.deployers.vfs.classloader;
 
 import org.jboss.test.deployers.vfs.classloader.test.BootstrapDeployersSmokeTestUnitTestCase;
+import org.jboss.test.deployers.vfs.classloader.test.DeploymentDependsOnDeploymentClassLoaderUnitTestCase;
+import org.jboss.test.deployers.vfs.classloader.test.DeploymentDependsOnManualClassLoaderUnitTestCase;
 import org.jboss.test.deployers.vfs.classloader.test.InMemoryClasesUnitTestCase;
+import org.jboss.test.deployers.vfs.classloader.test.ManualDependsOnDeploymentClassLoaderUnitTestCase;
 import org.jboss.test.deployers.vfs.classloader.test.VFSClassLoaderDependenciesUnitTestCase;
 import org.jboss.test.deployers.vfs.classloader.test.VFSUndeployOrderClassLoaderUnitTestCase;
 
@@ -51,6 +54,9 @@
       suite.addTest(VFSClassLoaderDependenciesUnitTestCase.suite());
       suite.addTest(VFSUndeployOrderClassLoaderUnitTestCase.suite());
       suite.addTest(InMemoryClasesUnitTestCase.suite());
+      suite.addTest(DeploymentDependsOnManualClassLoaderUnitTestCase.suite());
+      suite.addTest(ManualDependsOnDeploymentClassLoaderUnitTestCase.suite());
+      suite.addTest(DeploymentDependsOnDeploymentClassLoaderUnitTestCase.suite());
 
       return suite;
    }

Added: projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/DeploymentDependsOnDeploymentClassLoaderUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/DeploymentDependsOnDeploymentClassLoaderUnitTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/DeploymentDependsOnDeploymentClassLoaderUnitTestCase.java	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1,172 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.deployers.vfs.classloader.test;
+
+import junit.framework.Test;
+
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.test.deployers.BootstrapDeployersTest;
+
+/**
+ * DeploymentDependsOnManualClassLoaderUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class DeploymentDependsOnDeploymentClassLoaderUnitTestCase extends BootstrapDeployersTest
+{
+   public static Test suite()
+   {
+      return suite(DeploymentDependsOnDeploymentClassLoaderUnitTestCase.class);
+   }
+
+   public DeploymentDependsOnDeploymentClassLoaderUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public void testDependencyCorrectWay() throws Exception
+   {
+      VFSDeploymentUnit unit5 = assertDeploy("/classloader", "deployment5");
+      try
+      {
+         ClassLoader cl5 = getClassLoader(unit5);
+         assertGetResource("a/b/c/test-resource-deployment5", cl5);
+         VFSDeploymentUnit unit6 = assertDeploy("/classloader", "deployment6");
+         try
+         {
+            ClassLoader cl6 = getClassLoader(unit6);
+            assertGetResource("a/b/c/test-resource-deployment5", cl6);
+         }
+         finally
+         {
+            undeploy(unit6);
+         }
+      }
+      finally
+      {
+         undeploy(unit5);
+      }
+   }
+
+   public void testDependencyWrongWay() throws Exception
+   {
+      VFSDeploymentUnit unit6 = addDeployment("/classloader", "deployment6");
+      try
+      {
+         assertNoClassLoader(unit6);
+         VFSDeploymentUnit unit5 = assertDeploy("/classloader", "deployment5");
+         try
+         {
+            ClassLoader cl5 = getClassLoader(unit5);
+            assertGetResource("a/b/c/test-resource-deployment5", cl5);
+            ClassLoader cl6 = getClassLoader(unit6);
+            assertGetResource("a/b/c/test-resource-deployment5", cl6);
+         }
+         finally
+         {
+            undeploy(unit5);
+         }
+      }
+      finally
+      {
+         undeploy(unit6);
+      }
+   }
+
+   public void testDependencyRedeploy5() throws Exception
+   {
+      VFSDeploymentUnit unit5 = assertDeploy("/classloader", "deployment5");
+      try
+      {
+         ClassLoader cl5 = getClassLoader(unit5);
+         assertGetResource("a/b/c/test-resource-deployment5", cl5);
+         VFSDeploymentUnit unit6 = assertDeploy("/classloader", "deployment6");
+         try
+         {
+            ClassLoader cl6 = getClassLoader(unit6);
+            assertGetResource("a/b/c/test-resource-deployment5", cl6);
+            undeploy(unit5);
+            try
+            {
+               assertNoClassLoader(unit5);
+               assertNoClassLoader(unit6);
+            }
+            finally
+            {
+               unit5 = assertDeploy("/classloader", "deployment5");
+            }
+            cl5 = getClassLoader(unit5);
+            assertGetResource("a/b/c/test-resource-deployment5", cl5);
+            cl6 = getClassLoader(unit6);
+            assertGetResource("a/b/c/test-resource-deployment5", cl6);
+         }
+         finally
+         {
+            undeploy(unit6);
+         }
+      }
+      finally
+      {
+         undeploy(unit5);
+      }
+   }
+
+   public void testDependencyRedeploy6() throws Exception
+   {
+      VFSDeploymentUnit unit5 = assertDeploy("/classloader", "deployment5");
+      try
+      {
+         ClassLoader cl5 = getClassLoader(unit5);
+         assertGetResource("a/b/c/test-resource-deployment5", cl5);
+         VFSDeploymentUnit unit6 = assertDeploy("/classloader", "deployment6");
+         try
+         {
+            ClassLoader cl6 = getClassLoader(unit6);
+            assertGetResource("a/b/c/test-resource-deployment5", cl6);
+            undeploy(unit6);
+            try
+            {
+               cl5 = getClassLoader(unit5);
+               assertGetResource("a/b/c/test-resource-deployment5", cl5);
+               assertNoClassLoader(unit6);
+            }
+            finally
+            {
+               unit6 = assertDeploy("/classloader", "deployment6");
+            }
+            cl5 = getClassLoader(unit5);
+            assertGetResource("a/b/c/test-resource-deployment5", cl5);
+            cl6 = getClassLoader(unit6);
+            assertGetResource("a/b/c/test-resource-deployment5", cl6);
+         }
+         finally
+         {
+            undeploy(unit6);
+         }
+      }
+      finally
+      {
+         undeploy(unit5);
+      }
+   }
+}

Added: projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/DeploymentDependsOnManualClassLoaderUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/DeploymentDependsOnManualClassLoaderUnitTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/DeploymentDependsOnManualClassLoaderUnitTestCase.java	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1,174 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.deployers.vfs.classloader.test;
+
+import java.net.URL;
+
+import junit.framework.Test;
+
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.test.deployers.BootstrapDeployersTest;
+
+/**
+ * DeploymentDependsOnManualClassLoaderUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class DeploymentDependsOnManualClassLoaderUnitTestCase extends BootstrapDeployersTest
+{
+   public static Test suite()
+   {
+      return suite(DeploymentDependsOnManualClassLoaderUnitTestCase.class);
+   }
+
+   public DeploymentDependsOnManualClassLoaderUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+      URL classLoaderResource = getResource("/classloader");
+      System.setProperty("test.classloader.url", classLoaderResource.toString());
+   }
+
+   public void testDependencyCorrectWay() throws Exception
+   {
+      VFSDeploymentUnit unit2 = assertDeploy("/classloader", "deployment2");
+      try
+      {
+         ClassLoader cl2 = assertBean("test2:0.0.0", ClassLoader.class);
+         assertGetResource("a/b/c/test-resource-external-deployment2", cl2);
+         VFSDeploymentUnit unit1 = assertDeploy("/classloader", "deployment1");
+         try
+         {
+            ClassLoader cl1 = getClassLoader(unit1);
+            assertGetResource("a/b/c/test-resource-external-deployment2", cl1);
+         }
+         finally
+         {
+            undeploy(unit1);
+         }
+      }
+      finally
+      {
+         undeploy(unit2);
+      }
+   }
+
+   public void testDependencyWrongWay() throws Exception
+   {
+      VFSDeploymentUnit unit1 = addDeployment("/classloader", "deployment1");
+      try
+      {
+         assertNoClassLoader(unit1);
+         VFSDeploymentUnit unit2 = assertDeploy("/classloader", "deployment2");
+         try
+         {
+            ClassLoader cl2 = assertBean("test2:0.0.0", ClassLoader.class);
+            assertGetResource("a/b/c/test-resource-external-deployment2", cl2);
+         }
+         finally
+         {
+            undeploy(unit2);
+         }
+      }
+      finally
+      {
+         undeploy(unit1);
+      }
+   }
+
+   public void testDependencyRedeploy1() throws Exception
+   {
+      VFSDeploymentUnit unit2 = assertDeploy("/classloader", "deployment2");
+      try
+      {
+         ClassLoader cl2 = assertBean("test2:0.0.0", ClassLoader.class);
+         assertGetResource("a/b/c/test-resource-external-deployment2", cl2);
+         VFSDeploymentUnit unit1 = assertDeploy("/classloader", "deployment1");
+         try
+         {
+            ClassLoader cl1 = getClassLoader(unit1);
+            assertGetResource("a/b/c/test-resource-external-deployment2", cl1);
+            undeploy(unit1);
+            try
+            {
+               assertNoClassLoader(unit1);
+            }
+            finally
+            {
+               unit1 = assertDeploy("/classloader", "deployment1");
+            }
+            cl1 = getClassLoader(unit1);
+            assertGetResource("a/b/c/test-resource-external-deployment2", cl1);
+         }
+         finally
+         {
+            undeploy(unit1);
+         }
+      }
+      finally
+      {
+         undeploy(unit2);
+      }
+   }
+
+   public void testDependencyRedeploy2() throws Exception
+   {
+      VFSDeploymentUnit unit2 = assertDeploy("/classloader", "deployment2");
+      try
+      {
+         ClassLoader cl2 = assertBean("test2:0.0.0", ClassLoader.class);
+         assertGetResource("a/b/c/test-resource-external-deployment2", cl2);
+         VFSDeploymentUnit unit1 = assertDeploy("/classloader", "deployment1");
+         try
+         {
+            ClassLoader cl1 = getClassLoader(unit1);
+            assertGetResource("a/b/c/test-resource-external-deployment2", cl1);
+            undeploy(unit2);
+            try
+            {
+               assertNoClassLoader(unit1);
+            }
+            finally
+            {
+               unit2 = assertDeploy("/classloader", "deployment2");
+            }
+            cl1 = getClassLoader(unit1);
+            assertGetResource("a/b/c/test-resource-external-deployment2", cl1);
+            cl2 = assertBean("test2:0.0.0", ClassLoader.class);
+            assertGetResource("a/b/c/test-resource-external-deployment2", cl2);
+         }
+         finally
+         {
+            undeploy(unit1);
+         }
+      }
+      finally
+      {
+         undeploy(unit2);
+      }
+   }
+}

Added: projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/ManualDependsOnDeploymentClassLoaderUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/ManualDependsOnDeploymentClassLoaderUnitTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/ManualDependsOnDeploymentClassLoaderUnitTestCase.java	2008-02-21 14:15:56 UTC (rev 70001)
@@ -0,0 +1,168 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.deployers.vfs.classloader.test;
+
+import junit.framework.Test;
+
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.test.deployers.BootstrapDeployersTest;
+
+/**
+ * ManualDependsOnDeploymentClassLoaderUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ManualDependsOnDeploymentClassLoaderUnitTestCase extends BootstrapDeployersTest
+{
+   public static Test suite()
+   {
+      return suite(ManualDependsOnDeploymentClassLoaderUnitTestCase.class);
+   }
+
+   public ManualDependsOnDeploymentClassLoaderUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public void testDependencyCorrectWay() throws Exception
+   {
+      VFSDeploymentUnit unit3 = assertDeploy("/classloader", "deployment3");
+      try
+      {
+         ClassLoader cl3 = getClassLoader(unit3);
+         assertGetResource("a/b/c/test-resource-deployment3", cl3);
+         VFSDeploymentUnit unit4 = assertDeploy("/classloader", "deployment4");
+         try
+         {
+            ClassLoader cl4 = assertBean("test4:0.0.0", ClassLoader.class);
+            assertGetResource("a/b/c/test-resource-deployment3", cl4);
+         }
+         finally
+         {
+            undeploy(unit4);
+         }
+      }
+      finally
+      {
+         undeploy(unit3);
+      }
+   }
+
+   public void testDependencyWrongWay() throws Exception
+   {
+      VFSDeploymentUnit unit4 = addDeployment("/classloader", "deployment4");
+      try
+      {
+         assertNoBean("test4:0:0:0");
+         VFSDeploymentUnit unit3 = assertDeploy("/classloader", "deployment3");
+         try
+         {
+            ClassLoader cl3 = getClassLoader(unit3);
+            assertGetResource("a/b/c/test-resource-deployment3", cl3);
+            ClassLoader cl4 = assertBean("test4:0.0.0", ClassLoader.class);
+            assertGetResource("a/b/c/test-resource-deployment3", cl4);
+         }
+         finally
+         {
+            undeploy(unit3);
+         }
+      }
+      finally
+      {
+         undeploy(unit4);
+      }
+   }
+
+   public void testDependencyRedeploy3() throws Exception
+   {
+      VFSDeploymentUnit unit3 = assertDeploy("/classloader", "deployment3");
+      try
+      {
+         ClassLoader cl3 = getClassLoader(unit3);
+         assertGetResource("a/b/c/test-resource-deployment3", cl3);
+         VFSDeploymentUnit unit4 = assertDeploy("/classloader", "deployment4");
+         try
+         {
+            ClassLoader cl4 = assertBean("test4:0.0.0", ClassLoader.class);
+            assertGetResource("a/b/c/test-resource-deployment3", cl4);
+            undeploy(unit3);
+            try
+            {
+               assertNoBean("test4:0.0.0");
+            }
+            finally
+            {
+               unit3 = assertDeploy("/classloader", "deployment3");
+            }
+            cl3 = getClassLoader(unit3);
+            assertGetResource("a/b/c/test-resource-deployment3", cl3);
+            cl4 = assertBean("test4:0.0.0", ClassLoader.class);
+            assertGetResource("a/b/c/test-resource-deployment3", cl4);
+         }
+         finally
+         {
+            undeploy(unit4);
+         }
+      }
+      finally
+      {
+         undeploy(unit3);
+      }
+   }
+
+   public void testDependencyRedeploy4() throws Exception
+   {
+      VFSDeploymentUnit unit3 = assertDeploy("/classloader", "deployment3");
+      try
+      {
+         ClassLoader cl3 = getClassLoader(unit3);
+         assertGetResource("a/b/c/test-resource-deployment3", cl3);
+         VFSDeploymentUnit unit4 = assertDeploy("/classloader", "deployment4");
+         try
+         {
+            ClassLoader cl4 = assertBean("test4:0.0.0", ClassLoader.class);
+            assertGetResource("a/b/c/test-resource-deployment3", cl4);
+            undeploy(unit4);
+            try
+            {
+               assertNoBean("test4:0.0.0");
+               assertGetResource("a/b/c/test-resource-deployment3", cl3);
+            }
+            finally
+            {
+               unit4 = assertDeploy("/classloader", "deployment4");
+            }
+            cl4 = assertBean("test4:0.0.0", ClassLoader.class);
+            assertGetResource("a/b/c/test-resource-deployment3", cl4);
+         }
+         finally
+         {
+            undeploy(unit4);
+         }
+      }
+      finally
+      {
+         undeploy(unit3);
+      }
+   }
+}




More information about the jboss-cvs-commits mailing list