[jboss-cvs] JBossAS SVN: r82855 - in projects/jboss-cl/branches/Branch_2_0: 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:42:07 EST 2009


Author: adrian at jboss.org
Date: 2009-01-14 04:42:06 -0500 (Wed, 14 Jan 2009)
New Revision: 82855

Modified:
   projects/jboss-cl/branches/Branch_2_0/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java
   projects/jboss-cl/branches/Branch_2_0/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/branches/Branch_2_0/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java	2009-01-14 08:48:40 UTC (rev 82854)
+++ projects/jboss-cl/branches/Branch_2_0/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java	2009-01-14 09:42:06 UTC (rev 82855)
@@ -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/branches/Branch_2_0/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java	2009-01-14 08:48:40 UTC (rev 82854)
+++ projects/jboss-cl/branches/Branch_2_0/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java	2009-01-14 09:42:06 UTC (rev 82855)
@@ -30,6 +30,7 @@
 import org.jboss.classloading.spi.dependency.Module;
 import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
 import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.version.VersionRange;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.test.classloading.dependency.support.a.A;
 import org.jboss.test.classloading.dependency.support.b.B;
@@ -117,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