[jboss-cvs] JBossAS SVN: r97058 - in projects/jboss-classpool/trunk: src/test/java/org/jboss/test/classpool/jbosscl/test and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 26 22:45:37 EST 2009


Author: flavia.rainone at jboss.com
Date: 2009-11-26 22:45:37 -0500 (Thu, 26 Nov 2009)
New Revision: 97058

Modified:
   projects/jboss-classpool/trunk/pom.xml
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java
Log:
[JBREFLECT-72] Porting of vfs-deployers classpool tests to jboss-classpool trunk is complete.

Modified: projects/jboss-classpool/trunk/pom.xml
===================================================================
--- projects/jboss-classpool/trunk/pom.xml	2009-11-27 01:22:07 UTC (rev 97057)
+++ projects/jboss-classpool/trunk/pom.xml	2009-11-27 03:45:37 UTC (rev 97058)
@@ -66,7 +66,7 @@
         <artifactId>maven-surefire-plugin</artifactId>
         <version>2.4.3</version>
         <configuration>
-         <!--  <useSystemClassLoader>true</useSystemClassLoader> -->
+          <!--  <useSystemClassLoader>true</useSystemClassLoader> -->
           <testFailureIgnore>true</testFailureIgnore>
           <forkMode>always</forkMode>
           <redirectTestOutputToFile>true</redirectTestOutputToFile>
@@ -87,18 +87,18 @@
         </configuration>
       </plugin>
       <plugin>
-       <groupId>org.apache.maven.plugins</groupId>
-       <artifactId>maven-surefire-report-plugin</artifactId>
-       <version>2.4.3</version>
-       <executions>
-         <execution>
-           <id>surefire-report</id>
-           <goals>
-             <goal>report-only</goal>
-           </goals>
-           <phase>package</phase>
-         </execution>
-       </executions>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-report-plugin</artifactId>
+        <version>2.4.3</version>
+        <executions>
+          <execution>
+            <id>surefire-report</id>
+            <goals>
+              <goal>report-only</goal>
+            </goals>
+            <phase>package</phase>
+          </execution>
+        </executions>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -140,118 +140,153 @@
                   includes="org/jboss/test/classpool/support/excluded/d/*.class"/>
                 <jar destfile="${project.build.directory}/replacereferences-parent.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/replacereferences/**"/>
-                     <exclude name="org/jboss/test/classpool/support/excluded/replacereferences/child/*.class"/>
+                    <include name="org/jboss/test/classpool/support/excluded/replacereferences/**"/>
+                    <exclude name="org/jboss/test/classpool/support/excluded/replacereferences/child/*.class"/>
                   </fileset>
                 </jar>
                 <jar destfile="${project.build.directory}/replacereferences-child.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/replacereferences/**"/>
-                     <exclude name="org/jboss/test/classpool/support/excluded/replacereferences/parent/ParentCaller.class"/>
+                    <include name="org/jboss/test/classpool/support/excluded/replacereferences/**"/>
+                    <exclude name="org/jboss/test/classpool/support/excluded/replacereferences/parent/ParentCaller.class"/>
                   </fileset>
                 </jar>
                 <!--  ARCHIVES for ARCHIVE TESTS -->
                 <jar destfile="${project.build.directory}/simple.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/jar/**"/>
-                  </fileset>  
+                    <include name="org/jboss/test/classpool/support/excluded/jar/**"/>
+                  </fileset>
                 </jar>
-               <jar destfile="${project.build.directory}/servlet.jar">
+                <jar destfile="${project.build.directory}/servlet.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/web/**"/>
+                    <include name="org/jboss/test/classpool/support/excluded/web/**"/>
                   </fileset>  
                 </jar>
                 <jar destfile="${project.build.directory}/ui.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/ui/**"/>
+                    <include name="org/jboss/test/classpool/support/excluded/ui/**"/>
                   </fileset>  
                 </jar>
                 <jar destfile="${project.build.directory}/ui_util.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/crm/**"/>
+                    <include name="org/jboss/test/classpool/support/excluded/crm/**"/>
                   </fileset>  
                 </jar>
                 <mkdir dir="${project.build.directory}/lib"/>
                 <jar destfile="${project.build.directory}/lib/util.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/util/**"/>
+                    <include name="org/jboss/test/classpool/support/excluded/util/**"/>
                   </fileset>  
                 </jar>
                 <jar destfile="${project.build.directory}/lib/ext.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/ext/**"/>
+                    <include name="org/jboss/test/classpool/support/excluded/ext/**"/>
                   </fileset>  
                 </jar>
                 <jar destfile="${project.build.directory}/simple.sar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/service/**"/>
+                    <include name="org/jboss/test/classpool/support/excluded/service/**"/>
                   </fileset>
                   <metainf dir="${project.build.testOutputDirectory}/archive/sar/META-INF"includes="*.xml"/>
                 </jar>
                 <jar destfile="${project.build.directory}/ejbs.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/ejb/**"/>
+                    <include name="org/jboss/test/classpool/support/excluded/ejb/**"/>
                   </fileset>
                   <metainf dir="${project.build.testOutputDirectory}/archive/ejb-jar/META-INF"includes="*.xml"/>  
                 </jar>
                 <war destfile="${project.build.directory}/simple.war" webxml="${project.build.testOutputDirectory}/archive/war/WEB-INF/web.xml">
                   <classes dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/web/**"/>
+                    <include name="org/jboss/test/classpool/support/excluded/web/**"/>
                   </classes>  
                 </war>
                 <war destfile="${project.build.directory}/simple_ui.war" webxml="${project.build.testOutputDirectory}/archive/war/WEB-INF/web.xml">
                   <classes dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/web/**"/>
+                    <include name="org/jboss/test/classpool/support/excluded/web/**"/>
                   </classes>
                   <lib dir="${project.build.directory}">
-                     <include name="ui.jar"/>
+                    <include name="ui.jar"/>
                   </lib>
                 </war>
                 <war destfile="${project.build.directory}/jsfapp.war" webxml="${project.build.testOutputDirectory}/archive/war/WEB-INF/web.xml">
                   <classes dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/jsf/**"/>
+                    <include name="org/jboss/test/classpool/support/excluded/jsf/**"/>
                   </classes>
                   <lib dir="${project.build.directory}">
-                     <include name="ui_util.jar"/>
+                    <include name="ui_util.jar"/>
                   </lib>
                 </war>
                 <jar destfile="${project.build.directory}/simple.ear">
-                   <fileset dir="${project.build.directory}">
-                      <include name="simple.jar"/>
-                      <include name="ejbs.jar"/>
-                      <include name="simple_ui.war"/>
-                      <include name="jsfapp.war"/>
-                      <include name="simple.sar"/>
-                      <include name="lib/*"/>  
-                   </fileset>
-                   <metainf dir="${project.build.testOutputDirectory}/archive/ear/META-INF"includes="*.properties"/>
+                  <fileset dir="${project.build.directory}">
+                    <include name="simple.jar"/>
+                    <include name="ejbs.jar"/>
+                    <include name="simple_ui.war"/>
+                    <include name="jsfapp.war"/>
+                    <include name="simple.sar"/>
+                    <include name="lib/*"/>  
+                  </fileset>
+                  <metainf dir="${project.build.testOutputDirectory}/archive/ear/META-INF"includes="*.properties"/>
                 </jar>
                 <jar destfile="${project.build.directory}/top-level.ear">
-                   <fileset dir="${project.build.directory}">
-                      <include name="lib/*"/>  
-                   </fileset>
-                   <metainf dir="${project.build.testOutputDirectory}/archive/earutil/META-INF"includes="*.properties"/>
+                  <fileset dir="${project.build.directory}">
+                    <include name="lib/*"/>  
+                  </fileset>
+                  <metainf dir="${project.build.testOutputDirectory}/archive/earutil/META-INF"includes="*.properties"/>
                 </jar>
                 <jar destfile="${project.build.directory}/war-in-ear.ear">
-                   <fileset dir="${project.build.directory}">
-                      <include name="simple.war"/>
-                   </fileset>
-                   <metainf dir="${project.build.testOutputDirectory}/archive/warinear/META-INF"includes="*.properties"/>
+                  <fileset dir="${project.build.directory}">
+                    <include name="simple.war"/>
+                  </fileset>
+                  <metainf dir="${project.build.testOutputDirectory}/archive/warinear/META-INF"includes="*.properties"/>
                 </jar>
                 <jar destfile="${project.build.directory}/jar-in-ear.ear">
-                   <fileset dir="${project.build.directory}">
-                      <include name="simple.jar"/>
-                   </fileset>
-                   <metainf dir="${project.build.testOutputDirectory}/archive/jarinear/META-INF"includes="*.properties"/>
+                  <fileset dir="${project.build.directory}">
+                    <include name="simple.jar"/>
+                  </fileset>
+                  <metainf dir="${project.build.testOutputDirectory}/archive/jarinear/META-INF"includes="*.properties"/>
                 </jar>
                 
-                <delete dir="${project.build.testOutputDirectory}/org/jboss/test/classpool/support/excluded"/>
+                <copy file="${project.build.directory}/servlet.jar" tofile="${project.build.directory}/wj1.jar"/>
+                <war destfile="${project.build.directory}/ptd-jsf-1.0-SNAPSHOT.war" webxml="${project.build.testOutputDirectory}/archive/war/WEB-INF/web.xml">
+                  <lib dir="${project.build.directory}">
+                    <include name="wj1.jar"/>
+                  </lib>
+                </war>
+                <copy file="${project.build.directory}/servlet.jar" tofile="${project.build.directory}/wj2.jar"/>
+                <war destfile="${project.build.directory}/ptd-ws-1.0-SNAPSHOT.war" webxml="${project.build.testOutputDirectory}/archive/war/WEB-INF/web.xml">
+                  <lib dir="${project.build.directory}">
+                    <include name="wj2.jar"/>
+                  </lib>
+                </war>
+                <delete>
+                  <fileset dir="${project.build.directory}/lib" includes="**/*.jar" defaultexcludes="false"/>
+                </delete>
+                <copy file="${project.build.directory}/simple.jar" tofile="${project.build.directory}/lib/common.jar"/>
+                <jar destfile="${project.build.directory}/ptd-ear-1.0-SNAPSHOT.ear">
+                  <fileset dir="${project.build.directory}">
+                    <include name="ptd-jsf-1.0-SNAPSHOT.war"/>
+                    <include name="ptd-ws-1.0-SNAPSHOT.war"/>
+                    <include name="lib/*"/>  
+                  </fileset>
+                  <metainf dir="${project.build.testOutputDirectory}/archive/ear2war/META-INF"includes="*.properties"/>
+                </jar>
+                
+                <mkdir dir="${project.build.directory}/test-excluded-classes/org/jboss/test/classpool/support"/>
+                <move file="${project.build.testOutputDirectory}/org/jboss/test/classpool/support/excluded"
+                  todir="${project.build.directory}/test-excluded-classes/org/jboss/test/classpool/support"/> 
+                
+                
                 <delete dir="${project.build.testOutputDirectory}/archive"/>
-                <delete dir="${project.build.testOutputDirectory}/lib"/>
-                <delete file="${project.build.directory}/ui.jar"/>
-                <delete file="${project.build.directory}/ui_util.jar"/>
-                <delete file="${project.build.directory}/util.jar"/>
-                <delete file="${project.build.directory}/ext.jar"/>
+                <delete dir="${project.build.directory}/lib"/>
+                <delete>
+                  <fileset dir="${project.build.directory}">
+                    <include name="*ui*ar"/>
+                    <include name="util.jar"/>
+                    <include name="ext.jar"/>
+                    <include name="wj*.jar"/>
+                    <include name="ptd*.war"/>
+                    <include name="jsfapp.war"/>
+                  </fileset>
+                </delete>
                 
                 <jar destfile="${project.build.directory}/test-weaving-target.jar"
                   basedir="${project.build.testOutputDirectory}" 
@@ -327,16 +362,16 @@
       <version>${version.jboss.classloader}</version>
     </dependency> -->
     <dependency>
-        <groupId>org.jboss.cl</groupId>
-        <artifactId>jboss-classloading</artifactId>
-        <version>${version.org.jboss.cl}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jboss.cl</groupId>
-        <artifactId>jboss-classloading-vfs</artifactId>
-        <version>${version.org.jboss.cl}</version>
-      </dependency>
+      <groupId>org.jboss.cl</groupId>
+      <artifactId>jboss-classloading</artifactId>
+      <version>${version.org.jboss.cl}</version>
+    </dependency>
     <dependency>
+      <groupId>org.jboss.cl</groupId>
+      <artifactId>jboss-classloading-vfs</artifactId>
+      <version>${version.org.jboss.cl}</version>
+    </dependency>
+    <dependency>
       <groupId>org.jboss.jbossas</groupId>
       <artifactId>jboss-as-system-jmx</artifactId>
       <version>${version.org.jboss.jbossas}</version>

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java	2009-11-27 01:22:07 UTC (rev 97057)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java	2009-11-27 03:45:37 UTC (rev 97058)
@@ -30,6 +30,7 @@
 import static org.jboss.test.classpool.support.SupportClasses.CLASS_SERVLET;
 import static org.jboss.test.classpool.support.SupportClasses.CLASS_SLS_BEAN;
 import static org.jboss.test.classpool.support.SupportClasses.CLASS_SLS_INTERFACE;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_TIF;
 import static org.jboss.test.classpool.support.SupportClasses.CLASS_UI;
 import static org.jboss.test.classpool.support.SupportClasses.CLASS_UTIL;
 
@@ -44,12 +45,15 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.classloader.plugins.ClassLoaderUtils;
-import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.test.classpool.support.BundleInfoBuilder;
 import org.jboss.test.classpool.support.Result;
 import org.jboss.test.classpool.support.SupportClasses;
 
 
+
 /**
  * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
  *
@@ -81,6 +85,12 @@
    public final static URL EAR_WAR_CP = getURLRelativeToProjectRoot(SupportClasses.EAR_WAR_CP);
    public final static URL EAR_JAR = getURLRelativeToProjectRoot(SupportClasses.EAR_JAR);
    public final static URL SERVLET_JAR = getURLRelativeToProjectRoot(SupportClasses.SERVLET_JAR);
+   public final static URL PTD_EAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_EAR_LIB);
+   public final static URL PTD_JSF_WAR = getURLRelativeToProjectRoot(SupportClasses.PTD_JSF_WAR);
+   public final static URL PTD_JSF_WAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_JSF_WAR_LIB);
+   public final static URL PTD_WS_WAR = getURLRelativeToProjectRoot(SupportClasses.PTD_WS_WAR);
+   public final static URL PTD_WS_WAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_WS_WAR_LIB);
+   public final static URL EXCLUDED_CLASSPATH = getURLRelativeToProjectRoot(SupportClasses.EXCLUDED_CLASSPATH);
    
    final static String STRING = String.class.getName();
    
@@ -385,6 +395,214 @@
       }
    }
    
+   public void testEar2War() throws Exception
+   {
+      ClassPool topClassPool = null;
+      ClassPool leftClassPool = null;
+      ClassPool rightClassPool = null;
+      Result topResult = new Result();
+      Result leftResult = new Result();
+      Result rightResult = new Result();
+      try
+      {
+         URL[] excludes = {PTD_JSF_WAR, PTD_JSF_WAR_LIB, PTD_WS_WAR, PTD_WS_WAR_LIB};
+         topClassPool = createChildDomainParentLastClassPool(topResult,
+               "ptd-ear-1.0-SNAPSHOT.ear", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true, excludes, PTD_EAR_LIB);
+         leftClassPool = createChildDomainParentFirstClassPool(leftResult, SupportClasses.PTD_JSF_WAR,
+               "ptd-jsf-1.0-SNAPSHOT.war_Domain", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true,
+               PTD_JSF_WAR_LIB);
+         rightClassPool = createChildDomainParentFirstClassPool(rightResult, SupportClasses.PTD_WS_WAR,
+               "ptd-ws-1.0-SNAPSHOT.war_Domain", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true,
+               PTD_WS_WAR_LIB);
+         assertDomainHierarchy(topClassPool, leftClassPool, rightClassPool);
+      }
+      finally
+      {
+         if (leftClassPool != null)
+         {
+            unregisterClassPool(leftClassPool);
+            assertNoClassPool(leftResult);
+         }
+         if (rightClassPool != null)
+         {
+            unregisterClassPool(rightClassPool);
+            assertNoClassPool(rightResult);
+         }
+         if (topClassPool != null)
+         {
+            unregisterClassPool(topClassPool);
+            assertNoClassPool(topResult);
+         }
+      }
+   }
+   
+   public void testJarAndExcludedClassPath() throws Exception
+   {
+      ClassPool jarClassPool = null;
+      ClassPool anysClassPool = null;
+      Result jarResult = new Result();
+      Result anysResult = new Result();
+      try
+      {
+         jarClassPool = createClassPool(jarResult, "simple.jar", true, SIMPLE_JAR);
+         anysClassPool = createClassPool(anysResult, "anys-classloader", true,
+               SupportClasses.PACKAGE_WEB, EXCLUDED_CLASSPATH);
+
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
+         builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
+         super.deploy(builder.getBeanMetaData());
+         
+         Object anys = assertBean("AnyServlet", Object.class);
+         Class<?> anysClass = anys.getClass();
+         ClassLoader anysCL = anysClass.getClassLoader();
+         assertSame(anysCL, anysClassPool.getClassLoader());
+         assertNotSame(anysCL, jarClassPool.getClassLoader());
+         assertNonDeploymentModule(jarClassPool, anysClassPool);
+      }
+      finally
+      {
+         if (jarClassPool != null)
+         {
+            unregisterClassPool(jarClassPool);
+            assertNoClassPool(jarResult);
+         }
+         if (anysClassPool != null)
+         {
+            unregisterClassPool(anysClassPool);
+            assertNoClassPool(anysResult);
+         }
+      }
+   }
+   
+   public void testTifHierarchy() throws Exception
+   {
+      ClassPool jarClassPool = null;
+      Result jarResult = new Result();
+      ClassPool anysClassPool = null;
+      ClassPool tifClassPool = null;
+      Result anysResult = new Result();
+      Result tifResult = new Result();
+      try
+      {
+         jarClassPool = createClassPool(jarResult, "simple.jar", true, SIMPLE_JAR);
+         anysClassPool = createChildDomainParentFirstClassPool(anysResult, "anys-classloader",
+               "Anys_Domain",true, SupportClasses.PACKAGE_WEB, EXCLUDED_CLASSPATH);
+         tifClassPool = createChildDomainParentFirstClassPool(tifResult, "tif-classloader",
+               "TIF_Domain", "Anys_Domain",true, SupportClasses.PACKAGE_TIF, EXCLUDED_CLASSPATH);
+         
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
+         builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
+         super.deploy(builder.getBeanMetaData());
+         
+         builder = BeanMetaDataBuilder.createBuilder("TifTester", CLASS_TIF);
+         builder.setClassLoader(new AbstractDependencyValueMetaData("tif-classloader:0.0.0"));
+         super.deploy(builder.getBeanMetaData());
+         
+         Object anys = assertBean("AnyServlet", Object.class);
+         Class<?> anysClass = anys.getClass();
+         ClassLoader anysCL = anysClass.getClassLoader();
+
+         Object tif = assertBean("TifTester", Object.class);
+         Class<?> tifClass = tif.getClass();
+         ClassLoader tifCL = tifClass.getClassLoader();
+
+         ClassLoader jarCL = jarClassPool.getClassLoader();
+
+         assertNotSame(jarCL, anysCL);
+         assertNotSame(jarCL, tifCL);
+         assertNotSame(anysCL, tifCL);
+         
+         assertNonDeploymentModule(jarClassPool, anysClassPool, tifClassPool);
+      }
+      finally
+      {
+         if (jarClassPool != null)
+         {
+            unregisterClassPool(jarClassPool);
+            assertNoClassPool(jarResult);
+         }
+         if (tifClassPool != null)
+         {
+            unregisterClassPool(tifClassPool);
+            assertNoClassPool(tifResult);
+         }
+         if (anysClassPool != null)
+         {
+            unregisterClassPool(anysClassPool);
+            assertNoClassPool(anysResult);
+         }
+      }
+   }
+   
+   public void testTifHierarchyWithRequirements() throws Exception
+   {
+      ClassPool jarClassPool = null;
+      Result jarResult = new Result();
+      ClassPool anysClassPool = null;
+      ClassPool tifClassPool = null;
+      Result anysResult = new Result();
+      Result tifResult = new Result();
+      try
+      {
+         jarClassPool = createClassPool(jarResult, "simple.jar", true,
+               SupportClasses.PACKAGE_JAR, SIMPLE_JAR);
+         BundleInfoBuilder bundleBuilder = BundleInfoBuilder.getBuilder();
+         bundleBuilder.createModule("any-classloader:0.0.0$Module").
+            createPackage(SupportClasses.PACKAGE_WEB).
+            createRequirePackage(SupportClasses.PACKAGE_JAR);
+         anysClassPool = createClassPool(anysResult, "anys-classloader",
+               bundleBuilder, EXCLUDED_CLASSPATH);
+         bundleBuilder = BundleInfoBuilder.getBuilder();
+         bundleBuilder.createModule("tif-classloader:0.0.0$Module").
+            createPackage(SupportClasses.PACKAGE_TIF).
+            createRequirePackage(SupportClasses.PACKAGE_WEB);
+         tifClassPool = createClassPool(tifResult, "tif-classloader",
+               bundleBuilder, EXCLUDED_CLASSPATH);
+         
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
+         builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
+         super.deploy(builder.getBeanMetaData());
+         
+         builder = BeanMetaDataBuilder.createBuilder("TifTester", CLASS_TIF);
+         builder.setClassLoader(new AbstractDependencyValueMetaData("tif-classloader:0.0.0"));
+         super.deploy(builder.getBeanMetaData());
+         
+         Object anys = assertBean("AnyServlet", Object.class);
+         Class<?> anysClass = anys.getClass();
+         ClassLoader anysCL = anysClass.getClassLoader();
+
+         Object tif = assertBean("TifTester", Object.class);
+         Class<?> tifClass = tif.getClass();
+         ClassLoader tifCL = tifClass.getClassLoader();
+
+         ClassLoader jarCL = jarClassPool.getClassLoader();
+
+         assertNotSame(jarCL, anysCL);
+         assertNotSame(jarCL, tifCL);
+         assertNotSame(anysCL, tifCL);
+         
+         assertNonDeploymentModule(jarClassPool, anysClassPool, tifClassPool);
+      }
+      finally
+      {
+         if (jarClassPool != null)
+         {
+            unregisterClassPool(jarClassPool);
+            assertNoClassPool(jarResult);
+         }
+         if (tifClassPool != null)
+         {
+            unregisterClassPool(tifClassPool);
+            assertNoClassPool(tifResult);
+         }
+         if (anysClassPool != null)
+         {
+            unregisterClassPool(anysClassPool);
+            assertNoClassPool(anysResult);
+         }
+      }
+   }
+   
    protected void assertClassPool(ClassPool parentClassPool, String... classNames) throws Exception
    {
       Map<String, ClassPool> map = new HashMap<String, ClassPool>();
@@ -475,6 +693,26 @@
 
       CtClass returnCtClassRight = servletCtClassRight.getDeclaredMethod("getBean").getReturnType();
       assertEquals(plainCtClass, returnCtClassRight);
+   }
+   
+   protected void assertNonDeploymentModule(ClassPool jarClassPool, ClassPool anysClassPool) throws Exception
+   {
+      CtClass anysCtClass = jarClassPool.getCtClass(CLASS_SERVLET);
+      CtClass plainCtClass = anysClassPool.getCtClass(CLASS_PLAIN);
+      CtClass returnCtClass = anysCtClass.getDeclaredMethod("getBean").getReturnType();
+      assertEquals(plainCtClass, returnCtClass);
+   }
+   
+   protected void assertNonDeploymentModule(ClassPool classPool, ClassPool anysClassPool,
+         ClassPool tifClassPool) throws Exception
+   {
+      CtClass tifCtClass = tifClassPool.getCtClass(CLASS_TIF);
+      CtClass tifReturn = tifCtClass.getDeclaredMethod("getAnys").getReturnType();
+      CtClass asCtClass = anysClassPool.getCtClass(CLASS_SERVLET);
+      assertEquals(tifReturn, asCtClass);
 
+      CtClass plainCtClass = classPool.getCtClass(CLASS_PLAIN);
+      CtClass plainReturn = asCtClass.getDeclaredMethod("getBean").getReturnType();
+      assertEquals(plainCtClass, plainReturn);
    }
 }
\ No newline at end of file

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-11-27 01:22:07 UTC (rev 97057)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-11-27 03:45:37 UTC (rev 97058)
@@ -42,7 +42,9 @@
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
 import org.jboss.classloader.spi.ClassLoaderDomain;
 import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.plugins.metadata.PackageCapability;
 import org.jboss.classloading.spi.dependency.Module;
+import org.jboss.classloading.spi.metadata.Capability;
 import org.jboss.classpool.plugins.as5.VFSClassLoaderDomainRegistry;
 import org.jboss.classpool.spi.ClassPoolRepository;
 import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
@@ -174,7 +176,17 @@
    
    protected ClassLoader createClassLoader(Result result, String name, boolean importAll, URL... urls) throws Exception
    {
+      return this.createClassLoader(result, name, importAll, (String) null, urls);
+   }
+   
+   private ClassLoader createClassLoader(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
       TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, urls);
+      if (packageCapability != null)
+      {
+         Capability capability = new PackageCapability(packageCapability);
+         factory.setCapabilities(Collections.singletonList(capability));
+      }
       return createClassLoader(result, factory);
    }
 
@@ -202,9 +214,14 @@
    
    protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
    {
-      return createChildDomainParentFirstClassLoader(result, name, domainName, importAll, null, urls);
+      return createChildDomainParentFirstClassLoader(result, name, domainName, importAll, (ClassLoader) null, urls);
    }
    
+   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
+      return createChildDomainParentFirstClassLoader(result, name, domainName, importAll, (ClassLoader) null, packageCapability, urls);
+   }
+   
    protected ClassLoader createChildDomainParentFirstClassLoader(String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
    {
       return createChildDomainParentFirstClassLoader(null, name, domainName, importAll, parent, urls);
@@ -212,17 +229,22 @@
    
    protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
    {
-      return createChildDomainClassLoader(result, name, domainName, null, true, importAll, parent, urls);
+      return createChildDomainClassLoader(result, name, domainName, null, true, importAll, parent, null, urls);
    }
    
+   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, String packageCapability, URL... urls) throws Exception
+   {
+      return createChildDomainClassLoader(result, name, domainName, null, true, importAll, parent, packageCapability, urls);
+   }
+   
    protected ClassLoader createChildDomainParentFirstClassLoader(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
    {
-      return createChildDomainParentFirstClassLoader(null, name, domainName, parentDomainName, importAll, urls);
+      return createChildDomainParentFirstClassLoader(null, name, domainName, parentDomainName, importAll, null, urls);
    }
    
-   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
+   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception
    {
-      return createChildDomainClassLoader(result, name, domainName, parentDomainName, true, importAll, null, urls);
+      return createChildDomainClassLoader(result, name, domainName, parentDomainName, true, importAll, null, packageCapability, urls);
    }
    
    protected ClassLoader createChildDomainParentLastClassLoader(String name, String domainName, boolean importAll, URL... urls) throws Exception
@@ -232,9 +254,14 @@
    
    protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
    {
-      return createChildDomainParentLastClassLoader(result, name, domainName, importAll, null, urls);
+      return createChildDomainParentLastClassLoader(result, name, domainName, importAll, (ClassLoader) null, urls);
    }
    
+   protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception
+   {
+      return createChildDomainParentLastClassLoader(result, name, domainName, importAll, null, excludes, urls);
+   }
+   
    protected ClassLoader createChildDomainParentLastClassLoader(String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
    {
       return createChildDomainParentLastClassLoader(null, name, domainName, importAll, parent, urls);
@@ -242,9 +269,14 @@
 
    protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
    {
-      return createChildDomainClassLoader(result, name, domainName, null, false, importAll, parent, urls);
+      return createChildDomainClassLoader(result, name, domainName, null, false, importAll, parent, null, urls);
    }
    
+   protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL[] excludes, URL... urls) throws Exception
+   {
+      return createChildDomainClassLoader(result, name, domainName, null, false, importAll, parent, null, excludes, urls);
+   }
+   
    protected ClassLoader createChildDomainParentLastClassLoader(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
    {
       return createChildDomainParentLastClassLoader(null, name, domainName, parentDomainName, importAll, urls);
@@ -252,7 +284,7 @@
    
    protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
    {
-      return createChildDomainClassLoader(result, name, domainName, parentDomainName, false, importAll, null, urls);
+      return createChildDomainClassLoader(result, name, domainName, parentDomainName, false, importAll, null, null, urls);
    }
    
    protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
@@ -280,9 +312,19 @@
       return createChildDomainClassLoader(null, name, domainName, parentDomainName, builder, parentFirst, urls);
    }
    
-   private ClassLoader createChildDomainClassLoader(Result result, String name, String domainName, String parentDomainName, boolean parentFirst, boolean importAll, ClassLoader parent, URL... urls) throws Exception
+   private ClassLoader createChildDomainClassLoader(Result result, String name, String domainName, String parentDomainName, boolean parentFirst, boolean importAll, ClassLoader parent, String packageCapability, URL... urls) throws Exception
    {
+      return createChildDomainClassLoader(result, name, domainName, parentDomainName, parentFirst, importAll, parent, packageCapability, (URL[]) null, urls);
+   }
+   
+   private ClassLoader createChildDomainClassLoader(Result result, String name, String domainName, String parentDomainName, boolean parentFirst, boolean importAll, ClassLoader parent, String packageCapability, URL[] excludes, URL... urls) throws Exception
+   {
       TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, domainName, parentDomainName, parentFirst, urls);
+      if (packageCapability != null)
+      {
+         Capability capability = new PackageCapability(packageCapability);
+         factory.setCapabilities(Collections.singletonList(capability));
+      }
       ClassLoader classLoader = createClassLoader(result, factory, parent);
       registerDomainAndLoader(classLoader, domainName);
       return classLoader;
@@ -367,7 +409,12 @@
    
    protected ClassPool createClassPool(Result result, String name, boolean importAll, URL... urls) throws Exception
    {
-      ClassLoader loader = createClassLoader(result, name, importAll, urls);
+      return createClassPool(result, name, importAll, (String) null, urls);
+   }
+   
+   protected ClassPool createClassPool(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
+      ClassLoader loader = createClassLoader(result, name, importAll, packageCapability, urls);
       return assertRegisterClassLoader(loader);
    }
    
@@ -405,6 +452,12 @@
       return assertRegisterClassLoader(loader);
    }
    
+   protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
+      ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, packageCapability, urls);
+      return assertRegisterClassLoader(loader);
+   }
+   
    protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
    {
       return createChildDomainParentFirstClassPool(null, name, domainName, importAll, parent, urls);
@@ -423,7 +476,12 @@
    
    protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
    {
-      ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, importAll, urls);
+      return createChildDomainParentFirstClassPool(result, name, domainName, parentDomainName, importAll, null, urls);
+   }
+   
+   protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
+      ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, importAll, packageCapability, urls);
       return assertRegisterClassLoader(loader);
    }
 
@@ -438,6 +496,12 @@
       return assertRegisterClassLoader(loader);
    }
 
+   protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception
+   {
+      ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, excludes, urls);
+      return assertRegisterClassLoader(loader);
+   }
+   
    protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
    {
       return createChildDomainParentLastClassPool(null, name, domainName, importAll, parent, urls);

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java	2009-11-27 01:22:07 UTC (rev 97057)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java	2009-11-27 03:45:37 UTC (rev 97058)
@@ -58,7 +58,13 @@
    public final static String EAR_WAR_CP = "war-in-ear.ear/simple.war/WEB-INF/classes";
    public final static String EAR_JAR = "jar-in-ear.ear/simple.jar";
    public final static String SERVLET_JAR = "servlet.jar";
-   
+   public final static String PTD_EAR = "ptd-ear-1.0-SNAPSHOT.ear";
+   public final static String PTD_EAR_LIB = "ptd-ear-1.0-SNAPSHOT.ear/lib/common.jar";
+   public final static String PTD_JSF_WAR = "ptd-ear-1.0-SNAPSHOT.ear/ptd-jsf-1.0-SNAPSHOT.war";
+   public final static String PTD_JSF_WAR_LIB = "ptd-ear-1.0-SNAPSHOT.ear/ptd-jsf-1.0-SNAPSHOT.war/WEB-INF/lib/wj1.jar";
+   public final static String PTD_WS_WAR = "ptd-ear-1.0-SNAPSHOT.ear/ptd-ws-1.0-SNAPSHOT.war";
+   public final static String PTD_WS_WAR_LIB = "ptd-ear-1.0-SNAPSHOT.ear/ptd-ws-1.0-SNAPSHOT.war/WEB-INF/lib/wj2.jar";
+   public final static String EXCLUDED_CLASSPATH = "test-excluded-classes";
    // TODO map the url to the corresponding package
    // TODO automatically replace .war by .war/WEB-INF/classes e lib???
    
@@ -76,6 +82,7 @@
    public final static String PACKAGE_EXT = PACKAGE_ROOT + ".ext";
    public final static String PACKAGE_UI = PACKAGE_ROOT + ".ui";
    public final static String PACKAGE_CRM = PACKAGE_ROOT + ".crm";
+   public final static String PACKAGE_TIF = PACKAGE_ROOT + ".tif";
    
    public final static String CLASS_A = PACKAGE_A + ".A";
    public final static String CLASS_B = PACKAGE_B + ".B";
@@ -91,6 +98,7 @@
    public final static String CLASS_EXT = PACKAGE_EXT + ".External";
    public final static String CLASS_UI = PACKAGE_UI + ".UIBean";
    public final static String CLASS_CRM = PACKAGE_CRM + ".CrmFacade";
+   public final static String CLASS_TIF = PACKAGE_TIF + ".TIFTester";
    
    
 }
\ No newline at end of file

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java	2009-11-27 01:22:07 UTC (rev 97057)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java	2009-11-27 03:45:37 UTC (rev 97058)
@@ -188,7 +188,7 @@
          int rootIndex = listIterator.nextIndex();
          String root = listIterator.next();
          int archiveIndex = root.indexOf('.');
-         int lastSlash = root.indexOf('/', archiveIndex);
+         int lastSlash = archiveIndex > 0? root.indexOf('/', archiveIndex): -1;
          if (lastSlash > 0)
          {
             listIterator.set(root.substring(0, lastSlash));




More information about the jboss-cvs-commits mailing list