[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