[jboss-cvs] JBossAS SVN: r96992 - in projects/jboss-classpool/trunk/src: main/java/org/jboss/classpool/plugins/as5/jbosscl and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Nov 25 15:06:06 EST 2009


Author: flavia.rainone at jboss.com
Date: 2009-11-25 15:06:05 -0500 (Wed, 25 Nov 2009)
New Revision: 96992

Modified:
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java
Log:
[JBREFLECT-72] Parents of non-delegating CPs that would otherwise be null are now set to default CP.

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java	2009-11-25 19:55:13 UTC (rev 96991)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java	2009-11-25 20:06:05 UTC (rev 96992)
@@ -70,6 +70,10 @@
          return new JBossUclDelegatingClassPool(domain, cl, parent, repository, tempdir, tmpCP);
       }
       
+      if (parent == null)
+      {
+         parent = ClassPool.getDefault();
+      }
       return new NonDelegatingClassPool(cl, parent, repository, true);
    }
 

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java	2009-11-25 19:55:13 UTC (rev 96991)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java	2009-11-25 20:06:05 UTC (rev 96992)
@@ -91,7 +91,10 @@
          }
          return new JBossClDelegatingClassPool(domain, cl, parent, repository, module, registerModuleCallback);
       }
-      
+      if (parent == null)
+      {
+         parent = ClassPool.getDefault();
+      }
       return new NonDelegatingClassPool(cl, parent, repository, true);
       }
       finally

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-25 19:55:13 UTC (rev 96991)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-11-25 20:06:05 UTC (rev 96992)
@@ -24,9 +24,11 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.WeakHashMap;
@@ -360,7 +362,7 @@
    protected ClassPool createClassPool(Result result, String name, boolean importAll, URL... urls) throws Exception
    {
       ClassLoader loader = createClassLoader(result, name, importAll, urls);
-      return ClassPoolRepository.getInstance().registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
    
    protected ClassPool createClassPool(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception
@@ -377,7 +379,7 @@
    {
       TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, builder, urls);
       ClassLoader loader = createClassLoader(result, factory);
-      return ClassPoolRepository.getInstance().registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
 
    protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, URL... urls) throws Exception
@@ -388,7 +390,7 @@
    protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, urls);
-      return ClassPoolRepository.getInstance().registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
    
    protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
@@ -399,7 +401,7 @@
    private ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, parent.getClassLoader(), urls);
-      return repository.registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
    
    protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
@@ -410,7 +412,7 @@
    private 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 repository.registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
 
    protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, URL... urls) throws Exception
@@ -421,7 +423,7 @@
    protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, urls);
-      return repository.registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
 
    protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
@@ -432,9 +434,9 @@
    private ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, parent.getClassLoader(), urls);
-      return repository.registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
-   
+
    protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
    {
       return createChildDomainParentLastClassPool(null, name, domainName, parentDomainName, importAll, urls);
@@ -443,25 +445,25 @@
    private ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, parentDomainName, importAll, urls);
-      return repository.registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
    
    protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, BundleInfoBuilder builder, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, builder, urls);
-      return repository.registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
    
    protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, builder, urls);
-      return repository.registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
 
    protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, builder, urls);
-      return repository.registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
 
    protected ClassPool createChildURLClassPool(ClassPool parent, URL url)
@@ -472,9 +474,45 @@
          parentLoader = parent.getClassLoader();
       }
       ClassLoader loader = createChildURLClassLoader(parentLoader, url);
-      return repository.registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
    
+   private ClassPool assertRegisterClassLoader(ClassLoader loader)
+   {
+      ClassPool classPool = repository.registerClassLoader(loader);
+      assertNotNull(classPool);
+      assertBootstrap(classPool, String.class, Class.class, ClassLoader.class, Object.class,
+            Collection.class, List.class, Map.class, URL.class);
+      return classPool;
+   }
+   
+   private void assertBootstrap(ClassPool classPool, Class<?>... classes)
+   {
+      assertSameClassPool(null, classPool, int.class, boolean.class, byte.class, short.class,
+            long.class, float.class, double.class, char.class, void.class);
+      assertSameClassPool(ClassPool.getDefault(), classPool, classes);
+      
+   }
+
+   private void assertSameClassPool(ClassPool expectedClassPool, ClassPool classPool,
+         Class<?>... classes)
+   {
+      for (Class<?> clazz: classes)
+      {
+         CtClass ctClass = null;
+         try
+         {
+            ctClass = classPool.getCtClass(clazz.getName());
+         } catch (NotFoundException e)
+         {
+            e.printStackTrace();
+            fail(e.getMessage());
+         }
+         assertSame("Class " + clazz.getName() + " loaded by unexpected class pool ",
+               expectedClassPool, ctClass.getClassPool());
+      }
+   }
+   
    /****** REGISTER & UNREGISTER METHODS ************************************************/
    
    /**
@@ -733,7 +771,7 @@
    protected ClassPool assertClassPool(TestVFSClassLoaderFactory factory) throws Exception
    {
       ClassLoader loader = assertClassLoader(factory);
-      return repository.registerClassLoader(loader);
+      return assertRegisterClassLoader(loader);
    }
    
    protected Class<?> assertLoadClass(String name, ClassLoader initiating) throws Exception




More information about the jboss-cvs-commits mailing list