[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