[jboss-cvs] JBossAS SVN: r82824 - in projects/aop/trunk/asintegration-mc: src/main/org/jboss/aop/asintegration/jboss5 and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jan 13 14:23:48 EST 2009
Author: kabir.khan at jboss.com
Date: 2009-01-13 14:23:48 -0500 (Tue, 13 Jan 2009)
New Revision: 82824
Modified:
projects/aop/trunk/asintegration-mc/.classpath
projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/asintegration/jboss5/DomainRegistry.java
projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/asintegration/jboss5/VFSClassLoaderDomainRegistry.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] Add commented out code for testing JBCL-78 and add ability to obtain a Module from a ClassLoader from the registry
Modified: projects/aop/trunk/asintegration-mc/.classpath
===================================================================
--- projects/aop/trunk/asintegration-mc/.classpath 2009-01-13 19:11:31 UTC (rev 82823)
+++ projects/aop/trunk/asintegration-mc/.classpath 2009-01-13 19:23:48 UTC (rev 82824)
@@ -28,10 +28,10 @@
<classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-mbeans/5.0.0.CR2/jboss-as-mbeans-5.0.0.CR2.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-mbeans/5.0.0.CR2/jboss-as-mbeans-5.0.0.CR2-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-system/5.0.0.CR2/jboss-as-system-5.0.0.CR2.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-system/5.0.0.CR2/jboss-as-system-5.0.0.CR2-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-system-jmx/5.0.0.CR2/jboss-as-system-jmx-5.0.0.CR2.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-system-jmx/5.0.0.CR2/jboss-as-system-jmx-5.0.0.CR2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/cl/jboss-classloader/2.0.1.GA/jboss-classloader-2.0.1.GA.jar" sourcepath="M2_REPO/org/jboss/cl/jboss-classloader/2.0.1.GA/jboss-classloader-2.0.1.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/cl/jboss-classloading/2.0.1.GA/jboss-classloading-2.0.1.GA.jar" sourcepath="M2_REPO/org/jboss/cl/jboss-classloading/2.0.1.GA/jboss-classloading-2.0.1.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/cl/jboss-classloader/2.2.0-SNAPSHOT/jboss-classloader-2.2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/cl/jboss-classloader/2.2.0-SNAPSHOT/jboss-classloader-2.2.0-SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/cl/jboss-classloading/2.2.0-SNAPSHOT/jboss-classloading-2.2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/cl/jboss-classloading/2.2.0-SNAPSHOT/jboss-classloading-2.2.0-SNAPSHOT-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/integration/jboss-classloading-spi/5.0.3.GA/jboss-classloading-spi-5.0.3.GA.jar" sourcepath="M2_REPO/org/jboss/integration/jboss-classloading-spi/5.0.3.GA/jboss-classloading-spi-5.0.3.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/cl/jboss-classloading-vfs/2.0.1.GA/jboss-classloading-vfs-2.0.1.GA.jar" sourcepath="M2_REPO/org/jboss/cl/jboss-classloading-vfs/2.0.1.GA/jboss-classloading-vfs-2.0.1.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/cl/jboss-classloading-vfs/2.2.0-SNAPSHOT/jboss-classloading-vfs-2.2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/cl/jboss-classloading-vfs/2.2.0-SNAPSHOT/jboss-classloading-vfs-2.2.0-SNAPSHOT-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.10.GA/jboss-common-core-2.2.10.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.10.GA/jboss-common-core-2.2.10.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-dependency/2.0.0.CR1/jboss-dependency-2.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-dependency/2.0.0.CR1/jboss-dependency-2.0.0.CR1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/deployers/jboss-deployers-client/2.0.3.GA/jboss-deployers-client-2.0.3.GA.jar" sourcepath="M2_REPO/org/jboss/deployers/jboss-deployers-client/2.0.3.GA/jboss-deployers-client-2.0.3.GA-sources.jar"/>
Modified: projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/asintegration/jboss5/DomainRegistry.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/asintegration/jboss5/DomainRegistry.java 2009-01-13 19:11:31 UTC (rev 82823)
+++ projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/asintegration/jboss5/DomainRegistry.java 2009-01-13 19:23:48 UTC (rev 82824)
@@ -47,4 +47,5 @@
Module getModule(ClassLoader loader);
+ ClassLoader getClassLoader(Module module);
}
\ No newline at end of file
Modified: projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/asintegration/jboss5/VFSClassLoaderDomainRegistry.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/asintegration/jboss5/VFSClassLoaderDomainRegistry.java 2009-01-13 19:11:31 UTC (rev 82823)
+++ projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/asintegration/jboss5/VFSClassLoaderDomainRegistry.java 2009-01-13 19:23:48 UTC (rev 82824)
@@ -53,6 +53,9 @@
/** Modules by classloader */
private Map<ClassLoader, WeakReference<Module>> classLoaderModules = new WeakHashMap<ClassLoader, WeakReference<Module>>();
+ /** classloaders by module */
+ private Map<Module, WeakReference<ClassLoader>> moduleClassLoaders = new WeakHashMap<Module, WeakReference<ClassLoader>>();
+
private Map<ClassLoaderDomain, Integer> classLoaderDomainReferenceCounts = new WeakHashMap<ClassLoaderDomain, Integer>();
/**
@@ -93,6 +96,7 @@
classLoaderDomainsByLoader.put(loader, new WeakReference<ClassLoaderDomain>(clDomain));
classLoaderUnitParents.put(loader, new WeakReference<ClassLoader>(parentUnitLoader));
classLoaderModules.put(loader, new WeakReference<Module>(module));
+ moduleClassLoaders.put(module, new WeakReference<ClassLoader>(loader));
ret = true;
}
@@ -126,7 +130,15 @@
classLoaderDomainReferenceCounts.put(clDomain, ++cnt);
}
classLoaderUnitParents.remove(loader);
- classLoaderModules.remove(loader);
+ WeakReference<Module> moduleRef = classLoaderModules.remove(loader);
+ if (moduleRef != null)
+ {
+ Module module = moduleRef.get();
+ if (module != null)
+ {
+ moduleClassLoaders.remove(module);
+ }
+ }
}
}
@@ -180,4 +192,14 @@
}
return null;
}
+
+ public synchronized ClassLoader getClassLoader(Module module)
+ {
+ WeakReference<ClassLoader> loaderRef = moduleClassLoaders.get(module);
+ if (loaderRef != null)
+ {
+ return loaderRef.get();
+ }
+ return null;
+ }
}
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-13 19:11:31 UTC (rev 82823)
+++ projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolDomain.java 2009-01-13 19:23:48 UTC (rev 82824)
@@ -35,6 +35,8 @@
import javassist.NotFoundException;
import org.jboss.aop.AspectManager;
+import org.jboss.aop.asintegration.jboss5.DomainRegistry;
+import org.jboss.aop.classpool.BaseClassPool;
import org.jboss.aop.classpool.BaseClassPoolDomain;
import org.jboss.aop.classpool.ClassPoolDomain;
import org.jboss.aop.classpool.DelegatingClassPool;
@@ -53,8 +55,9 @@
final static List<DelegatingClassPool> EMPTY_LIST = Collections.unmodifiableList(Collections.EMPTY_LIST);
AspectManager manager = AspectManager.instance();
+ DomainRegistry registry;
- public JBossClClassPoolDomain(String domainName, ClassPoolDomain parent, ParentPolicy parentPolicy)
+ public JBossClClassPoolDomain(String domainName, ClassPoolDomain parent, ParentPolicy parentPolicy, DomainRegistry registry)
{
super(domainName,
new JBossClParentDelegationStrategy(
@@ -62,6 +65,7 @@
parentPolicy,
JBossClClassPoolToClassPoolDomainAdaptorFactory.getInstance())
);
+ this.registry = registry;
}
synchronized void setupPoolsByPackage(DelegatingClassPool pool)
@@ -126,26 +130,7 @@
//Check imports first
if (clazz == null && module != null)
{
- List<? extends DelegateLoader> delegates = module.getDelegates();
- if (delegates != null)
- {
- for (DelegateLoader delegate : delegates)
- {
- //TODO This is a hack, need a proper API in jboss-cl
- System.err.println("HACK in JBossClClassPoolDomain");
- ClassLoader loader = getBaseClassLoaderFromDelegateHack(delegate);
-
- //TODO Should be a nicer way to do this
- ClassPool pool = manager.findClassPool(loader);
- try
- {
- clazz = pool.get(classname);
- }
- catch(NotFoundException e)
- {
- }
- }
- }
+ clazz = getCtClassFromModule(module, classname);
}
//Try to check the initiating pool itself
@@ -181,8 +166,70 @@
return new ArrayList<DelegatingClassPool>(poolSet);
}
+ private CtClass getCtClassFromModule(Module module, String classname)
+ {
+// return getCtClassFromModuleHack(module, classname);
+ return getCtClassFromDelegates(module, classname);
+ }
+
+// //TODO This should not use reflection once JBCL-78 has been released
+// private CtClass getCtClassFromModuleHack(Module module, String classname)
+// {
+// Module found = null;
+// try
+// {
+// found = module.getModuleForClass(classname);
+// }
+// catch (ClassNotFoundException e1)
+// {
+// }
+// if (found == module)
+// {
+// return null;
+// }
+// ClassLoader foundLoader = registry.getClassLoader(found);
+// ClassPool pool = manager.findClassPool(foundLoader);
+// try
+// {
+// if (pool instanceof DelegatingClassPool)
+// {
+// return getCachedOrCreate((DelegatingClassPool)pool, classname, true);
+// }
+// return pool.get(classname);
+// }
+// catch(NotFoundException e)
+// {
+// }
+// return null;
+// }
- //TODO This should be replaced with a proper call once jboss-cl allows us to get this
+ //TODO Delete this once JBCL-78 has been released
+ private CtClass getCtClassFromDelegates(Module module, String classname)
+ {
+ List<? extends DelegateLoader> delegates = module.getDelegates();
+ if (delegates != null)
+ {
+ for (DelegateLoader delegate : delegates)
+ {
+ //TODO This is a hack, need a proper API in jboss-cl
+ System.err.println("HACK in JBossClClassPoolDomain");
+ ClassLoader loader = getBaseClassLoaderFromDelegateHack(delegate);
+
+ //TODO Should be a nicer way to do this
+ ClassPool pool = manager.findClassPool(loader);
+ try
+ {
+ return pool.get(classname);
+ }
+ catch(NotFoundException e)
+ {
+ }
+ }
+ }
+ return null;
+ }
+
+ //TODO Delete this once JBCL-78 has been released
private static ClassLoader getBaseClassLoaderFromDelegateHack(DelegateLoader loader)
{
Class<?> clazz = loader.getClass();
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-13 19:11:31 UTC (rev 82823)
+++ projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java 2009-01-13 19:23:48 UTC (rev 82824)
@@ -93,7 +93,7 @@
}
parentPoolDomain = ClassPoolDomainRegistry.getInstance().getDomain(parentDomain);
}
- poolDomain = new JBossClClassPoolDomain(domain.getName(), parentPoolDomain, domain.getParentPolicy());
+ poolDomain = new JBossClClassPoolDomain(domain.getName(), parentPoolDomain, domain.getParentPolicy(), registry);
ClassPoolDomainRegistry.getInstance().addClassPoolDomain(domain, poolDomain);
}
More information about the jboss-cvs-commits
mailing list