[jboss-cvs] JBossAS SVN: r82735 - in projects/aop/trunk: asintegration-core/src/tests/org/jboss/test/aop/classpool/test and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jan 9 12:56:44 EST 2009


Author: kabir.khan at jboss.com
Date: 2009-01-09 12:56:44 -0500 (Fri, 09 Jan 2009)
New Revision: 82735

Modified:
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/AbstractClassPoolDomain.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/AbstractParentDelegationStrategy.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/BaseClassPool.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/BaseClassPoolDomain.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomain.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomainInternal.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolToClassPoolDomainAdapter.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/DefaultClassLoaderIsLocalResourcePlugin.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/DelegatingClassPool.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/NonDelegatingClassPool.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ParentDelegationStrategy.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/URLClassLoaderIsLocalResourcePlugin.java
   projects/aop/trunk/asintegration-core/src/tests/org/jboss/test/aop/classpool/test/ClassPoolTest.java
   projects/aop/trunk/asintegration-core/src/tests/org/jboss/test/aop/classpool/test/IsLocalResourcePluginFactoryTestCase.java
   projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolDomain.java
   projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java
Log:
[JBAOP-666] Tidy up code

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/AbstractClassPoolDomain.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/AbstractClassPoolDomain.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/AbstractClassPoolDomain.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -46,14 +46,25 @@
          return null;
       }
        
+      return getCachedOrCreateFromPool(parentPool, classname, create);
+   }
+
+   
+   protected CtClass getCachedOrCreateFromPool(ClassPool parentPool, String classname, boolean create)
+   {
       if (parentPool instanceof BaseClassPool)
       {
          return getCachedOrCreateFromPool((BaseClassPool)parentPool, classname, create);
       }
-      else
+      try
       {
-         return getCachedOrCreateFromPool(parentPool, classname, create);
+         //This will check the parents
+         return parentPool.get(classname);
       }
+      catch(NotFoundException e)
+      {
+         return null;
+      }
    }
 
    protected CtClass getCachedOrCreateFromPool(BaseClassPool parentPool, String classname, boolean create)
@@ -85,18 +96,4 @@
       }
       return clazz;
    }
-   
-   protected CtClass getCachedOrCreateFromPool(ClassPool parentPool, String classname, boolean create)
-   {
-      try
-      {
-         //This will check the parents
-         return parentPool.get(classname);
-      }
-      catch(NotFoundException e)
-      {
-         return null;
-      }
-   }
-      
 }

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/AbstractParentDelegationStrategy.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/AbstractParentDelegationStrategy.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/AbstractParentDelegationStrategy.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -21,6 +21,8 @@
 */ 
 package org.jboss.aop.classpool;
 
+import javassist.CtClass;
+
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
@@ -60,8 +62,8 @@
       return parent != null;
    }
    
-   public ClassPoolDomainInternal getParent()
+   public CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
    {
-      return parent;
+      return parent.getCachedOrCreate(initiatingPool, classname, resourceName, create);
    }
 }

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/BaseClassPool.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/BaseClassPool.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/BaseClassPool.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -66,37 +66,33 @@
 
    protected CtClass createParentCtClass(String classname, boolean useCache)
    {
-      
-      CtClass clazz = null;
-      if (parent != null)
+      if (parent == null)
       {
-         //Make parent create class
-         if (parent instanceof BaseClassPool)
-         {
-            clazz = ((BaseClassPool)parent).createCtClass(classname, useCache);
-         }
-         else
-         {
-            try
-            {
-               clazz = parent.get(classname);
-            }
-            catch (NotFoundException e)
-            {
-            }
-         }
+         return null;
       }
-      
-      if (clazz != null)
+
+      //Make parent create class
+      if (parent instanceof BaseClassPool)
       {
-         ClassPool pool = clazz.getClassPool();
-         if (pool instanceof BaseClassPool)
-         {
-            ((BaseClassPool)pool).cacheCtClass(classname, clazz, false);
-         }
+         return ((BaseClassPool)parent).createCtClass(classname, useCache);
       }
-      return clazz;
+      else
+      {
+         return plainParentGet(classname);
+      }
    }
+   
+   private CtClass plainParentGet(String classname)
+   {
+      try
+      {
+         return parent.get(classname);
+      }
+      catch (NotFoundException e)
+      {
+      }
+      return null;
+   }
 
    public ClassPool getParent()
    {

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/BaseClassPoolDomain.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/BaseClassPoolDomain.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/BaseClassPoolDomain.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -57,11 +57,6 @@
       this.parentDelegationStrategy = parentDelegationStrategy;
    }
    
-   public String getDomainName()
-   {
-      return domainName;
-   }
- 
    public synchronized void addClassPool(DelegatingClassPool pool)
    {
       if (!delegatingPools.contains(pool))
@@ -79,7 +74,7 @@
    {
       String resourceName = ClassLoaderUtils.getResourceName(classname);
       
-      CtClass clazz = getCachedOrCreateInternal(initiatingPool, classname, resourceName, create);
+      CtClass clazz = getCachedOrCreate(initiatingPool, classname, resourceName, create);
       
       if (clazz == null)
       {
@@ -88,12 +83,12 @@
       return clazz;
    }
    
-   public CtClass getCachedOrCreateInternal(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
+   public CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
    {
       CtClass clazz = null;
       if (isParentBefore(classname))
       {
-         clazz = getCachedOrCreateInternalFromParent(initiatingPool, classname, resourceName, create);
+         clazz = getCachedOrCreateFromParent(initiatingPool, classname, resourceName, create);
       }
       if (clazz == null)
       {
@@ -109,14 +104,14 @@
       }
       if (clazz == null && isParentAfter(classname))
       {
-         clazz = getCachedOrCreateInternalFromParent(initiatingPool, classname, resourceName, create);
+         clazz = getCachedOrCreateFromParent(initiatingPool, classname, resourceName, create);
       }
       return clazz;
    }
 
-   public CtClass getCachedOrCreateInternalFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
+   public CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
    {
-      return parentDelegationStrategy.getParent().getCachedOrCreateInternal(initiatingPool, classname, resourceName, create);
+      return parentDelegationStrategy.getCachedOrCreateFromParent(initiatingPool, classname, resourceName, create);
    }
    
    public String toString()

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomain.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomain.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomain.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -28,10 +28,4 @@
  */
 public interface ClassPoolDomain
 {
-   String getDomainName();
- 
-   void addClassPool(DelegatingClassPool pool);
-   
-   void removeClassPool(DelegatingClassPool pool);
-
 }

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomainInternal.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomainInternal.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomainInternal.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -30,7 +30,15 @@
  */
 interface ClassPoolDomainInternal extends ClassPoolDomain
 {
-   CtClass getCachedOrCreateInternal(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create);
-   CtClass getCachedOrCreateInternalFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create);
    CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, boolean create);
+   
+   CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create);
+   
+   CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create);
+   
+   void addClassPool(DelegatingClassPool pool);
+   
+   void removeClassPool(DelegatingClassPool pool);
+
+   
 }

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolToClassPoolDomainAdapter.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolToClassPoolDomainAdapter.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolToClassPoolDomainAdapter.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -53,28 +53,16 @@
    }
 
    
-   public synchronized CtClass getCachedOrCreateInternal(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
+   public synchronized CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
    {
-      if (pool instanceof BaseClassPool)
-      {
-         return getCachedOrCreateFromPool((BaseClassPool)pool, classname, create);
-      }
-      else
-      {
-         return getCachedOrCreateFromPool(pool, classname, create);
-      }
+      return getCachedOrCreateFromPool(pool, classname, create);
    }
 
-   public CtClass getCachedOrCreateInternalFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
+   public CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
    {
       return null;
    }
 
-   public String getDomainName()
-   {
-      return null;
-   }
-
    public boolean isParentFirst()
    {
       return !pool.childFirstLookup;

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/DefaultClassLoaderIsLocalResourcePlugin.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/DefaultClassLoaderIsLocalResourcePlugin.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/DefaultClassLoaderIsLocalResourcePlugin.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -23,6 +23,7 @@
 
 /**
  * 
+ * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/DelegatingClassPool.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/DelegatingClassPool.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/DelegatingClassPool.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -41,13 +41,8 @@
    
    private boolean closed;
    
-   public DelegatingClassPool(ClassPoolDomain domain, ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository, boolean isTemp)
+   public DelegatingClassPool(ClassPoolDomain domain, ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository)
    {
-      this(domain, cl, parent, repository);
-   }
-
-   protected DelegatingClassPool(ClassPoolDomain domain, ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository)
-   {
       super(cl, parent, repository);
       if (domain == null)
       {
@@ -58,17 +53,11 @@
          throw new IllegalArgumentException("Domain must implement ClassPoolDomainInternal");
       }
       this.domain = (ClassPoolDomainInternal)domain;
-      domain.addClassPool(this);
+      this.domain.addClassPool(this);
    }
 
-   ClassPoolDomain getDomain()
+   public final CtClass get(String classname) throws NotFoundException 
    {
-      return domain;
-   }
-   
-   public CtClass get(String classname) throws NotFoundException 
-   {
-      System.out.println("==> Initiating lookup of " + classname + " in " + this);
       if (logger.isTraceEnabled())
       {
          logger.trace("Initiating lookup of " + classname + " in " + this);
@@ -119,7 +108,6 @@
    public CtClass getCached(String classname)
    {
       return domain.getCachedOrCreate(this, classname, false);
-      //return getCached(true, classname);
    }
    
    @Override
@@ -128,14 +116,7 @@
       return super.getCachedLocally(classname);
    }
 
-   //Lifted from AOPClassPool, also exists in JBossClassPool
    @Override
-   protected boolean isLocalResource(String resourceName)
-   {
-      return super.isLocalResource(resourceName);
-   }
-
-   @Override
    public String toString()
    {
       return super.toString() + " domain: " + domain;

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/NonDelegatingClassPool.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/NonDelegatingClassPool.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/NonDelegatingClassPool.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -47,12 +47,9 @@
       {
          clazz = createParentCtClass(classname, useCache);
       }
-      if (clazz == null)
+      if (clazz == null && isLocalResource(getResourceName(classname)))
       {
-         if (isLocalResource(getResourceName(classname)))
-         {
-            clazz = super.createCtClass(classname, useCache);
-         }
+         clazz = super.createCtClass(classname, useCache);
       }
       if (childFirstLookup && clazz == null)
       {

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ParentDelegationStrategy.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ParentDelegationStrategy.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ParentDelegationStrategy.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -21,6 +21,8 @@
 */ 
 package org.jboss.aop.classpool;
 
+import javassist.CtClass;
+
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
@@ -28,7 +30,7 @@
  */
 public interface ParentDelegationStrategy
 {
-   ClassPoolDomainInternal getParent();
+   CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create);
    
    boolean isParentBefore(String classname);
 

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/URLClassLoaderIsLocalResourcePlugin.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/URLClassLoaderIsLocalResourcePlugin.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/URLClassLoaderIsLocalResourcePlugin.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -23,8 +23,6 @@
 
 import java.net.URL;
 
-import javassist.ClassPool;
-
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
@@ -47,26 +45,10 @@
       {
          return false;
       }
-      
-      ClassPool parent = getPool().getParent();
-      if (parent != null)
+      if (isSameInParent(classResourceName, myURL))
       {
-         ClassLoader parentLoader = parent.getClassLoader();
-         URL parentURL = parentLoader.getResource(classResourceName);
-         if (parentURL == null)
-         {
-            return true;
-         }
-         if (!parentURL.equals(myURL))
-         {
-            return true;
-         }
+         return false;
       }
-      else
-      {
-         return myURL != null;
-      }
-      
-      return false;
+      return true;
    }
 }

Modified: projects/aop/trunk/asintegration-core/src/tests/org/jboss/test/aop/classpool/test/ClassPoolTest.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/tests/org/jboss/test/aop/classpool/test/ClassPoolTest.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/tests/org/jboss/test/aop/classpool/test/ClassPoolTest.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -104,7 +104,7 @@
       //Once all the classes in the loader have been loaded, it seems to clear the URLs. Work around this 
       //by recreating the loader since we need the urls in the URLClassLoaderIsLocalResourcePlugin
       loaders.add(new URLClassLoader(urls));
-      return new DelegatingClassPool(domain, loader, ClassPool.getDefault(), AOPClassPoolRepository.getInstance(), false);
+      return new DelegatingClassPool(domain, loader, ClassPool.getDefault(), AOPClassPoolRepository.getInstance());
    }
 
    @Override

Modified: projects/aop/trunk/asintegration-core/src/tests/org/jboss/test/aop/classpool/test/IsLocalResourcePluginFactoryTestCase.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/tests/org/jboss/test/aop/classpool/test/IsLocalResourcePluginFactoryTestCase.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-core/src/tests/org/jboss/test/aop/classpool/test/IsLocalResourcePluginFactoryTestCase.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -78,37 +78,37 @@
 
    public void testDefaultClassLoader() 
    {
-      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new DefaultClassLoader(), ClassPool.getDefault(), AOPClassPoolRepository.getInstance(), false);
+      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new DefaultClassLoader(), ClassPool.getDefault(), AOPClassPoolRepository.getInstance());
       assertFactoryAndPlugin(pool, DefaultClassLoaderIsLocalResourcePluginFactory.class, DefaultClassLoaderIsLocalResourcePlugin.class);
    }
    
    public void testURLClassLoaderDirect()
    {
-      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new URLClassLoader(URLS), ClassPool.getDefault(), AOPClassPoolRepository.getInstance(), false);
+      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new URLClassLoader(URLS), ClassPool.getDefault(), AOPClassPoolRepository.getInstance());
       assertFactoryAndPlugin(pool, URLClassLoaderIsLocalResourcePluginFactory.class, URLClassLoaderIsLocalResourcePlugin.class);
    }
 
    public void testURLClassLoaderSubClass()
    {
-      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new URLCLassLoaderSubClass(URLS), ClassPool.getDefault(), AOPClassPoolRepository.getInstance(), false);
+      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new URLCLassLoaderSubClass(URLS), ClassPool.getDefault(), AOPClassPoolRepository.getInstance());
       assertFactoryAndPlugin(pool, URLClassLoaderIsLocalResourcePluginFactory.class, URLClassLoaderIsLocalResourcePlugin.class);
    }
 
    public void testTranslatableClassLoaderImplementation()
    {
-      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new TranslatableImplementation(), ClassPool.getDefault(), AOPClassPoolRepository.getInstance(), false);
+      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new TranslatableImplementation(), ClassPool.getDefault(), AOPClassPoolRepository.getInstance());
       assertFactoryAndPlugin(pool, TranslatableClassLoaderIsLocalResourcePluginFactory.class, TranslatableClassLoaderIsLocalResourcePlugin.class);
    }
    
    public void testTranslatableClassLoaderImplementationAndURLClassLoaderSubClass()
    {
-      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new TranslatableImplementationAndURLClassLoaderSubClass(URLS), ClassPool.getDefault(), AOPClassPoolRepository.getInstance(), false);
+      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new TranslatableImplementationAndURLClassLoaderSubClass(URLS), ClassPool.getDefault(), AOPClassPoolRepository.getInstance());
       assertFactoryAndPlugin(pool, TranslatableClassLoaderIsLocalResourcePluginFactory.class, TranslatableClassLoaderIsLocalResourcePlugin.class);
    }
    
    public void testTranslatable2ClassLoaderImplementationAndURLClassLoaderSubClass()
    {
-      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new Translatable2ImplementationAndURLClassLoaderSubClass(URLS), ClassPool.getDefault(), AOPClassPoolRepository.getInstance(), false);
+      DelegatingClassPool pool = new DelegatingClassPool(DOMAIN, new Translatable2ImplementationAndURLClassLoaderSubClass(URLS), ClassPool.getDefault(), AOPClassPoolRepository.getInstance());
       assertFactoryAndPlugin(pool, TranslatableClassLoaderIsLocalResourcePluginFactory.class, TranslatableClassLoaderIsLocalResourcePlugin.class);
    }
    

Modified: projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolDomain.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolDomain.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolDomain.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -21,6 +21,7 @@
 */ 
 package org.jboss.aop.classpool.jbosscl;
 
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -97,29 +98,33 @@
          if (pools != null)
          {
             pools.remove(pool);
+            if (pools.size() == 0)
+            {
+               poolsByPackage.remove(pkg);
+            }
          }
       }
    }
  
    @Override
-   public CtClass getCachedOrCreateInternal(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
+   public CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create)
    {
       Module module = getModuleForPool(initiatingPool);
       if (module != null && module.isImportAll())
       {
          //Use the old "big ball of mud" model
-         return super.getCachedOrCreateInternal(initiatingPool, classname, resourceName, create);
+         return super.getCachedOrCreate(initiatingPool, classname, resourceName, create);
       }
       
       //Attempt OSGi style loading
       CtClass clazz = null;
       if (isParentBefore(classname))
       {
-         clazz = getCachedOrCreateInternalFromParent(null, classname, resourceName, create);
+         clazz = getCachedOrCreateFromParent(null, classname, resourceName, create);
       }
       
       //Check imports first
-      if (module != null)
+      if (clazz == null && module != null)
       {
          List<? extends DelegateLoader> delegates = module.getDelegates();
          if (delegates != null)
@@ -127,8 +132,8 @@
             for (DelegateLoader delegate : delegates)
             {
                //TODO This is a hack, need a proper API in jboss-cl
-               System.err.println("Commented out loader from delegate in JBossClClassPoolDomain");
-               ClassLoader loader = delegate.getBaseClassLoader("a BaseClassLoader", "");
+               System.err.println("HACK in JBossClClassPoolDomain");
+               ClassLoader loader = getBaseClassLoaderFromDelegateHack(delegate);
                
                //TODO Should be a nicer way to do this
                ClassPool pool = manager.findClassPool(loader);
@@ -151,7 +156,7 @@
       
       if (clazz == null && isParentAfter(classname))
       {
-         clazz = getCachedOrCreateInternalFromParent(null, classname, resourceName, create);
+         clazz = getCachedOrCreateFromParent(null, classname, resourceName, create);
       }
       return clazz;
    }
@@ -176,4 +181,36 @@
       return new ArrayList<DelegatingClassPool>(poolSet);
    }
 
+   
+   //TODO This should be replaced with a proper call once jboss-cl allows us to get this
+   private static ClassLoader getBaseClassLoaderFromDelegateHack(DelegateLoader loader)
+   {
+      Class<?> clazz = loader.getClass();
+      Method m = null;
+      while (clazz != Object.class)
+      {
+         try
+         {
+            m = clazz.getDeclaredMethod("getBaseClassLoader", String.class, String.class);
+            m.setAccessible(true);
+            break;
+         }
+         catch(Exception e)
+         {
+            clazz = clazz.getSuperclass();
+         }
+      }
+      if (m == null)
+      {
+         return null;
+      }
+      try
+      {
+         return (ClassLoader)m.invoke(loader, "a BaseClassLoader", "");
+      }
+      catch(Exception e)
+      {
+         return null;
+      }
+   }
 }

Modified: projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java	2009-01-09 17:11:44 UTC (rev 82734)
+++ projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java	2009-01-09 17:56:44 UTC (rev 82735)
@@ -111,6 +111,4 @@
       }
       return parent;
    }
-
-   
 }




More information about the jboss-cvs-commits mailing list