[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