[jboss-cvs] JBossAS SVN: r82856 - in projects/jboss-cl/trunk: classloading/src/test/java/org/jboss/test/classloading/dependency/test and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jan 14 04:43:38 EST 2009
Author: adrian at jboss.org
Date: 2009-01-14 04:43:38 -0500 (Wed, 14 Jan 2009)
New Revision: 82856
Modified:
projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java
projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java
Log:
[JBCL-78] - Use the correct classloader rules in findClassLoader
Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java 2009-01-14 09:42:06 UTC (rev 82855)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java 2009-01-14 09:43:38 UTC (rev 82856)
@@ -370,7 +370,7 @@
ClassLoaderUtils.checkClassName(className);
String path = ClassLoaderUtils.classNameToPath(className);
- Loader loader = domain.findLoader(path);
+ Loader loader = domain.findLoader(this, path, basePolicy.isImportAll(), true);
if (loader == null)
throw new ClassNotFoundException("Class " + className + " not found from " + this);
Modified: projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java 2009-01-14 09:42:06 UTC (rev 82855)
+++ projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java 2009-01-14 09:43:38 UTC (rev 82856)
@@ -118,6 +118,61 @@
assertNoClassLoader(contextA);
}
+ public void testLoadClassFromOtherModuleDuplicates() throws Exception
+ {
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ MockClassLoadingMetaData a1 = new MockClassLoadingMetaData("a", "1.0.0");
+ a1.getCapabilities().addCapability(factory.createModule("ModuleA", "1.0.0"));
+ a1.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ a1.setPathsAndPackageNames(A.class);
+ KernelControllerContext contextA1 = install(a1);
+ try
+ {
+ ClassLoader clA1 = assertClassLoader(contextA1);
+ Module moduleA1 = assertModule(contextA1);
+
+ MockClassLoadingMetaData a2 = new MockClassLoadingMetaData("a", "2.0.0");
+ a2.getCapabilities().addCapability(factory.createModule("ModuleA", "2.0.0"));
+ a2.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ a2.setPathsAndPackageNames(A.class);
+ KernelControllerContext contextA2 = install(a2);
+ try
+ {
+ ClassLoader clA2 = assertClassLoader(contextA2);
+ Module moduleA2 = assertModule(contextA2);
+
+ MockClassLoadingMetaData b = new MockClassLoadingMetaData("b");
+ b.getRequirements().addRequirement(factory.createRequireModule("ModuleA", new VersionRange("2.0.0")));
+ b.setPathsAndPackageNames(B.class);
+ KernelControllerContext contextB = install(b);
+ try
+ {
+ assertClassLoader(contextB);
+ Module moduleB = assertModule(contextB);
+ Class<?> result = moduleB.loadClass(A.class.getName());
+ assertEquals(clA2, result.getClassLoader());
+
+ Module other = moduleB.getModuleForClass(A.class.getName());
+ assertEquals(moduleA2, other);
+ }
+ finally
+ {
+ uninstall(contextB);
+ }
+ }
+ finally
+ {
+ uninstall(contextA2);
+ }
+ assertNoClassLoader(contextA2);
+ }
+ finally
+ {
+ uninstall(contextA1);
+ }
+ assertNoClassLoader(contextA1);
+ }
+
public void testLoadClassNotFound() throws Exception
{
MockClassLoadingMetaData a = new MockClassLoadingMetaData("a");
More information about the jboss-cvs-commits
mailing list