[jboss-cvs] JBossAS SVN: r92349 - in projects/jboss-classpool/trunk: src/main/java/org/jboss/classpool and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Aug 14 07:52:21 EDT 2009
Author: flavia.rainone at jboss.com
Date: 2009-08-14 07:52:21 -0400 (Fri, 14 Aug 2009)
New Revision: 92349
Modified:
projects/jboss-classpool/trunk/pom.xml
projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossClassPoolFactory.java
projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossDelegatingClassPoolFactory.java
projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPoolFactory.java
projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPoolFactory.java
projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/VFSClassLoaderDomainRegistry.java
projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java
projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPoolFactory.java
Log:
[JBREFLECT-56] Adaptations required by JBoss AOP branch 742 to work at JBoss AS 4 and 5 environment:
- added dependency to jboss-common-core
- changed signature of ClassPoolFactories: now they return AbstractClassPool instead of ScopedClassPool
- VFSClassDomainRegistry now has a few template methods, so that JBoss AOP can fill in the gaps of AOP domains registry process
Modified: projects/jboss-classpool/trunk/pom.xml
===================================================================
--- projects/jboss-classpool/trunk/pom.xml 2009-08-14 11:41:26 UTC (rev 92348)
+++ projects/jboss-classpool/trunk/pom.xml 2009-08-14 11:52:21 UTC (rev 92349)
@@ -258,11 +258,12 @@
<artifactId>junit</artifactId>
<version>${version.junit}</version>
<!-- <scope>compile</scope> -->
- </dependency> <!-- <dependency>
+ </dependency>
+ <dependency>
<groupId>org.jboss</groupId>
<artifactId>jboss-common-core</artifactId>
- <version>2.2.11.GA</version>
- </dependency> -->
+ <version>2.2.13.GA</version>
+ </dependency>
</dependencies>
<!-- site stuff -->
Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossClassPoolFactory.java 2009-08-14 11:41:26 UTC (rev 92348)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossClassPoolFactory.java 2009-08-14 11:52:21 UTC (rev 92349)
@@ -21,19 +21,17 @@
*/
package org.jboss.classpool;
-import org.jboss.logging.Logger;
-
import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
import javassist.scopedpool.ScopedClassPoolRepository;
+import org.jboss.logging.Logger;
+
/**
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
-public abstract class AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
+public abstract class AbstractJBossClassPoolFactory implements AbstractClassPoolFactory
{
protected final Logger log = Logger.getLogger(this.getClass().getName());
@@ -53,7 +51,7 @@
return src;
}
- public ScopedClassPool create(ClassPool src, ScopedClassPoolRepository repository)
+ public AbstractClassPool create(ClassPool src, ScopedClassPoolRepository repository)
{
return new TempJBossClassPool(src, repository);
}
Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossDelegatingClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossDelegatingClassPoolFactory.java 2009-08-14 11:41:26 UTC (rev 92348)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossDelegatingClassPoolFactory.java 2009-08-14 11:52:21 UTC (rev 92349)
@@ -22,7 +22,6 @@
package org.jboss.classpool;
import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
import javassist.scopedpool.ScopedClassPoolRepository;
/**
@@ -49,7 +48,7 @@
return src;
}*/
- public ScopedClassPool create(ClassPool src, ScopedClassPoolRepository repository)
+ public AbstractClassPool create(ClassPool src, ScopedClassPoolRepository repository)
{
return new TempJBossDelegatingClassPool(src, repository);
}
Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPoolFactory.java 2009-08-14 11:41:26 UTC (rev 92348)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPoolFactory.java 2009-08-14 11:52:21 UTC (rev 92349)
@@ -26,11 +26,10 @@
import java.net.URL;
import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
import javassist.scopedpool.ScopedClassPoolRepository;
import org.jboss.classpool.AbstractClassPool;
+import org.jboss.classpool.AbstractClassPoolFactory;
import org.jboss.classpool.AbstractJBossClassPoolFactory;
import org.jboss.mx.loading.RepositoryClassLoader;
@@ -41,7 +40,7 @@
* @author adrian at jboss.org
* @version $Revision: 70841 $
**/
-public class JBossClassPoolFactory extends AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
+public class JBossClassPoolFactory extends AbstractJBossClassPoolFactory implements AbstractClassPoolFactory
{
protected File tmpClassesDir;
@@ -50,7 +49,7 @@
this.tmpClassesDir = tmpClassesDir;
}
- public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+ public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
{
ClassPool parent = getCreateParentClassPools(cl, src, repository);
if (cl instanceof RepositoryClassLoader)
Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPoolFactory.java 2009-08-14 11:41:26 UTC (rev 92348)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPoolFactory.java 2009-08-14 11:52:21 UTC (rev 92349)
@@ -24,7 +24,6 @@
import java.net.URL;
import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
import javassist.scopedpool.ScopedClassPoolFactory;
import javassist.scopedpool.ScopedClassPoolRepository;
@@ -52,11 +51,11 @@
this.registry = registry;
}
- public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+ public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
{
ClassPool parent = getCreateParentClassPools(cl, src, repository);
- ScopedClassPool pool = null;
+ AbstractClassPool pool = null;
if (cl instanceof RealClassLoader)
{
Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/VFSClassLoaderDomainRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/VFSClassLoaderDomainRegistry.java 2009-08-14 11:41:26 UTC (rev 92348)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/VFSClassLoaderDomainRegistry.java 2009-08-14 11:52:21 UTC (rev 92349)
@@ -37,24 +37,15 @@
*/
public class VFSClassLoaderDomainRegistry implements DomainRegistry
{
- final static ClassLoaderDomain domain = new ClassLoaderDomain("NOT_USED_PLACEHOLDER");
+ protected final static ClassLoaderDomain domain = new ClassLoaderDomain("NOT_USED_PLACEHOLDER");
private ClassLoaderSystem system;
private ClassLoaderDomain defaultDomain;
/** classloader domains by their classloaders */
- private Map<ClassLoader, WeakReference<ClassLoaderDomain>> classLoaderDomainsByLoader = new WeakHashMap<ClassLoader, WeakReference<ClassLoaderDomain>>();
+ protected Map<ClassLoader, WeakReference<ClassLoaderDomain>> classLoaderDomainsByLoader = new WeakHashMap<ClassLoader, WeakReference<ClassLoaderDomain>>();
- /** aopDomains by classloader */
- //private Map<ClassLoader, ScopedVFSClassLoaderDomain> aopDomainsByClassLoader = new WeakHashMap<ClassLoader, ScopedVFSClassLoaderDomain>();
-
- /** aopDomains by classloader domain */
- //private Map<ClassLoaderDomain, List<ScopedVFSClassLoaderDomain>> aopDomainsByClassLoaderDomain = new WeakHashMap<ClassLoaderDomain, List<ScopedVFSClassLoaderDomain>>();
-
- //private Map<ClassLoaderDomain, ReadWriteLock> aopDomainsLocksByClassLoaderDomain = new WeakHashMap<ClassLoaderDomain, ReadWriteLock>();
-
-
/** parent deployment unit classloaders indexed by children */
private Map<ClassLoader, WeakReference<ClassLoader>> classLoaderUnitParents = new WeakHashMap<ClassLoader, WeakReference<ClassLoader>>();
@@ -64,7 +55,7 @@
/** classloaders by module */
private Map<Module, WeakReference<ClassLoader>> moduleClassLoaders = new WeakHashMap<Module, WeakReference<ClassLoader>>();
- private Map<ClassLoaderDomain, Integer> classLoaderDomainReferenceCounts = new WeakHashMap<ClassLoaderDomain, Integer>();
+ protected Map<ClassLoaderDomain, Integer> classLoaderDomainReferenceCounts = new WeakHashMap<ClassLoaderDomain, Integer>();
/**
* Needed for the tests, not expected to be needed in production
@@ -110,11 +101,8 @@
String domainName = module.getDeterminedDomainName();
ClassLoaderDomain clDomain = system.getDomain(domainName);
- if (clDomain == null && domain != null)
- {
- throw new IllegalStateException("Have " + domain + " but no classloader domain");
- }
-
+ this.validateInitMaps(loader, clDomain, module, parentUnitLoader);
+
boolean ret = false;
if (!classLoaderDomainsByLoader.containsKey(loader))
{
@@ -127,53 +115,33 @@
classLoaderModules.put(loader, new WeakReference<Module>(module));
moduleClassLoaders.put(module, new WeakReference<ClassLoader>(loader));
ret = true;
- if (domain != null)
- {
-
-
- /*ReadWriteLock lock = aopDomainsLocksByClassLoaderDomain.get(clDomain);
- if (lock == null)
- {
- lock = new ReentrantReadWriteLock();
- aopDomainsLocksByClassLoaderDomain.put(clDomain, lock);
- }
-
- lock.writeLock().lock();
- try
- {
- List<ScopedVFSClassLoaderDomain> aopDomains = aopDomainsByClassLoaderDomain.get(clDomain);
- if (aopDomains == null)
- {
- synchronized (aopDomainsByClassLoaderDomain)
- {
- aopDomains = new CopyOnWriteArrayList<ScopedVFSClassLoaderDomain>();
- if (!aopDomains.contains(clDomain))
- {
- aopDomainsByClassLoaderDomain.put(clDomain, aopDomains);
- }
- }
- }
- aopDomains.add(domain);
- }
- finally
- {
- lock.writeLock().unlock();
- }*/
- }
+ this.initMapsDone(loader, clDomain, module, parentUnitLoader);
}
return ret;
}
+ protected void validateInitMaps(ClassLoader loader, ClassLoaderDomain loaderDomain, Module module, ClassLoader parentUnitLoader)
+ {
+
+ }
+
+ protected void initMapsDone(ClassLoader loader, ClassLoaderDomain loaderDomain, Module module, ClassLoader parentUnitLoader)
+ {
+
+ }
+
public synchronized void cleanupLoader(ClassLoader loader)
{
+ validateCleanupLoader(loader);
WeakReference<ClassLoaderDomain> clDomainRef = classLoaderDomainsByLoader.remove(loader);
ClassLoaderDomain clDomain = clDomainRef == null ? null : clDomainRef.get();
+ int cnt = 0;
if (clDomain != null)
{
Integer count = classLoaderDomainReferenceCounts.get(clDomain);
- int cnt = count == null ? 0 : count.intValue();
+ cnt = count == null ? 0 : count.intValue();
if (cnt > 0)
{
cnt--;
@@ -198,6 +166,7 @@
moduleClassLoaders.remove(module);
}
}
+
/*List<ScopedVFSClassLoaderDomain> aopDomains = aopDomainsByClassLoaderDomain.get(clDomain);
if (aopDomains != null)
@@ -209,14 +178,14 @@
aopDomain.getParent().unsubscribeSubDomain(aopDomain);
}*/
}
+ cleanupLoaderDone(loader, clDomain, cnt);
//aopDomainsByClassLoader.remove(loader);
}
- /*public synchronized Domain getRegisteredDomain(ClassLoader cl)
- {
- return aopDomainsByClassLoader.get(cl);
- }*/
+ protected void validateCleanupLoader(ClassLoader loader) {}
+ protected void cleanupLoaderDone(ClassLoader loader, ClassLoaderDomain loaderDomain, int domainReferences) {}
+
public synchronized ClassLoaderDomain getClassLoaderDomainForLoader(ClassLoader cl)
{
WeakReference<ClassLoaderDomain> clDomainRef = classLoaderDomainsByLoader.get(cl);
@@ -267,19 +236,4 @@
}
return null;
}
-
- /*public List<ScopedVFSClassLoaderDomain> getAOPDomainsForClassLoaderDomain(ClassLoaderDomain domain)
- {
- List<ScopedVFSClassLoaderDomain> domains = aopDomainsByClassLoaderDomain.get(domain);
- if (domains != null)
- {
- return domains;
- }
- return Collections.emptyList();
- }
-
- public ReadWriteLock getAOPDomainsLockForClassLoaderDomain(ClassLoaderDomain domain)
- {
- return aopDomainsLocksByClassLoaderDomain.get(domain);
- }*/
}
Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java 2009-08-14 11:41:26 UTC (rev 92348)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java 2009-08-14 11:52:21 UTC (rev 92349)
@@ -26,7 +26,6 @@
import java.util.Set;
import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
import javassist.scopedpool.ScopedClassPoolFactory;
import javassist.scopedpool.ScopedClassPoolRepository;
@@ -35,6 +34,7 @@
import org.jboss.classloading.spi.RealClassLoader;
import org.jboss.classloading.spi.dependency.ClassLoading;
import org.jboss.classloading.spi.dependency.Module;
+import org.jboss.classpool.AbstractClassPool;
import org.jboss.classpool.AbstractJBossDelegatingClassPoolFactory;
import org.jboss.classpool.ClassPoolDomain;
import org.jboss.classpool.ClassPoolDomainRegistry;
@@ -61,7 +61,7 @@
this.registerModuleCallback = registerModuleCallback;
}
- public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+ public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
{
ClassPool parent = getCreateParentClassPools(cl, src, repository);
Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPoolFactory.java 2009-08-14 11:41:26 UTC (rev 92348)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPoolFactory.java 2009-08-14 11:52:21 UTC (rev 92349)
@@ -26,10 +26,10 @@
import java.net.URL;
import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
import javassist.scopedpool.ScopedClassPoolRepository;
+import org.jboss.classpool.AbstractClassPool;
+import org.jboss.classpool.AbstractClassPoolFactory;
import org.jboss.classpool.AbstractJBossDelegatingClassPoolFactory;
import org.jboss.classpool.BaseClassPoolDomain;
import org.jboss.classpool.ClassPoolDomain;
@@ -45,7 +45,7 @@
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
-public class JBossUclDelegatingClassPoolFactory extends AbstractJBossDelegatingClassPoolFactory implements ScopedClassPoolFactory
+public class JBossUclDelegatingClassPoolFactory extends AbstractJBossDelegatingClassPoolFactory implements AbstractClassPoolFactory
{
private ClassPoolDomain mainDomain;
protected File tmpClassesDir;
@@ -56,7 +56,7 @@
this.tmpClassesDir = tmpClassesDir;
}
- public synchronized ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+ public synchronized AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
{
ClassPool parent = getCreateParentClassPools(cl, src, repository);
More information about the jboss-cvs-commits
mailing list