[jboss-cvs] JBossAS SVN: r99173 - in projects/jboss-classpool/trunk: classpool/src/main/java/org/jboss/classpool/base and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jan 8 14:35:28 EST 2010


Author: kabir.khan at jboss.com
Date: 2010-01-08 14:35:28 -0500 (Fri, 08 Jan 2010)
New Revision: 99173

Modified:
   projects/jboss-classpool/trunk/classpool/pom.xml
   projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/BaseClassPool.java
   projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/BaseClassPoolDomain.java
   projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/DefaultParentDelegationStrategy.java
   projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/domain/ClassPoolDomainRegistry.java
   projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdapter.java
   projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/plugins/DelegatingClassPool.java
   projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/spi/ClassPoolRepository.java
   projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClClassPoolDomain.java
   projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClDelegatingClassPool.java
   projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClDelegatingClassPoolRepository.java
   projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClParentDelegationStrategy.java
   projects/jboss-classpool/trunk/ucl/src/main/java/org/jboss/classpool/plugins/ucl/UclDelegatingClassPool.java
Log:
[JBREFLECT-90] Improve concurrency

Modified: projects/jboss-classpool/trunk/classpool/pom.xml
===================================================================
--- projects/jboss-classpool/trunk/classpool/pom.xml	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/classpool/pom.xml	2010-01-08 19:35:28 UTC (rev 99173)
@@ -27,7 +27,7 @@
         </executions>
         <configuration>
           <excludes>
-            <exclude>org/jboss/test/classpool/support/excluded/**</exclude>
+            <exclude>org/jboss/test/classpool/support/excluded</exclude>
           </excludes>
         </configuration>
       </plugin>

Modified: projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/BaseClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/BaseClassPool.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/BaseClassPool.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -38,7 +38,7 @@
  */
 public class BaseClassPool extends AbstractClassPool
 {
-   private IsLocalResourcePlugin isLocalResourcePlugin;
+   private final IsLocalResourcePlugin isLocalResourcePlugin;
    
    public BaseClassPool(ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository)
    {
@@ -58,7 +58,10 @@
    
    
    /**
-    * Stores the classes created in the ScopedClassPool cache.
+    * Creates a CtClass
+    * 
+    * @param classname the name of the class
+    * @param useCache whether the class should be cached
     */
    @Override
    public CtClass createCtClass(String classname, boolean useCache)
@@ -66,7 +69,15 @@
       CtClass clazz = super.createCtClass(classname, useCache);
       if (clazz != null)
       {
-         lockInCache(clazz);
+         //Use synch lock of classes hashtable to avoid overwriting an entry that might have been added since the check
+         synchronized (classes)
+         {
+            CtClass existing = (CtClass)classes.get(classname);
+            if (existing == null)
+               lockInCache(clazz);
+            if (existing != null)
+               clazz = existing;
+         }
       }
       return clazz;
    }

Modified: projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/BaseClassPoolDomain.java
===================================================================
--- projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/BaseClassPoolDomain.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/BaseClassPoolDomain.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -21,17 +21,18 @@
 */ 
 package org.jboss.classpool.base;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
 
+import javassist.CtClass;
+
 import org.jboss.classpool.domain.AbstractClassPoolDomain;
 import org.jboss.classpool.domain.ClassPoolDomain;
 import org.jboss.classpool.helpers.ClassLoaderUtils;
 import org.jboss.classpool.plugins.DelegatingClassPool;
 
-
-import javassist.CtClass;
-
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
@@ -39,11 +40,13 @@
  */
 public class BaseClassPoolDomain extends AbstractClassPoolDomain
 {
-   private String domainName;
+   private final String domainName;
    
-   private List<DelegatingClassPool> delegatingPools = new ArrayList<DelegatingClassPool>();
+   private final List<DelegatingClassPool> delegatingPools = new CopyOnWriteArrayList<DelegatingClassPool>();
    
-   private ParentDelegationStrategy parentDelegationStrategy;
+   private final ParentDelegationStrategy parentDelegationStrategy;
+   
+   private final ReadWriteLock lock = new ReentrantReadWriteLock();
 
    public BaseClassPoolDomain(String domainName, ClassPoolDomain parent, boolean parentFirst)
    {
@@ -63,22 +66,38 @@
       if (logger.isTraceEnabled()) logger.trace("Created " + this + " parentDelegationStrategy:" + parentDelegationStrategy);
    }
    
-   public synchronized void addClassPool(DelegatingClassPool pool)
+   public void addClassPool(DelegatingClassPool pool)
    {
-      if (!delegatingPools.contains(pool))
+      lockWrite();
+      try
       {
-         if (logger.isTraceEnabled()) logger.trace(this + " adding pool " + pool);
-         delegatingPools.add(pool);
+         if (!delegatingPools.contains(pool))
+         {
+            if (logger.isTraceEnabled()) logger.trace(this + " adding pool " + pool);
+            delegatingPools.add(pool);
+         }
       }
+      finally
+      {
+         unlockWrite();
+      }
    }
    
-   public synchronized void removeClassPool(DelegatingClassPool pool)
+   public void removeClassPool(DelegatingClassPool pool)
    {
-      if (logger.isTraceEnabled()) logger.trace(this + " removing pool " + pool);
-      delegatingPools.remove(pool);
+      lockWrite();
+      try
+      {
+         if (logger.isTraceEnabled()) logger.trace(this + " removing pool " + pool);
+         delegatingPools.remove(pool);
+      }
+      finally
+      {
+         unlockWrite();
+      }
    }
-   
-   public synchronized CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, boolean create)
+
+   public CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, boolean create)
    {
       boolean trace = logger.isTraceEnabled();
       String resourceName = ClassLoaderUtils.getResourceName(classname);
@@ -151,4 +170,24 @@
    {
       return delegatingPools;
    }
+   
+   protected void lockRead()
+   {
+      lock.readLock().lock();
+   }
+   
+   protected void unlockRead()
+   {
+      lock.readLock().unlock();
+   }
+   
+   protected void lockWrite()
+   {
+      lock.writeLock().lock();
+   }
+   
+   protected void unlockWrite()
+   {
+      lock.writeLock().unlock();
+   }
 }

Modified: projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/DefaultParentDelegationStrategy.java
===================================================================
--- projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/DefaultParentDelegationStrategy.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/base/DefaultParentDelegationStrategy.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -31,7 +31,8 @@
  */
 class DefaultParentDelegationStrategy extends AbstractParentDelegationStrategy
 {
-   boolean parentFirst;
+   private final boolean parentFirst;
+   
    DefaultParentDelegationStrategy(ClassPoolDomain parent, boolean parentFirst, ClassPoolToClassPoolDomainAdaptorFactory adaptorFactory)
    {
       super(parent, adaptorFactory);

Modified: projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/domain/ClassPoolDomainRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/domain/ClassPoolDomainRegistry.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/domain/ClassPoolDomainRegistry.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -24,6 +24,8 @@
 import java.lang.ref.WeakReference;
 import java.util.Map;
 import java.util.WeakHashMap;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 /**
  * 
@@ -36,24 +38,42 @@
    
    final Map<Object, WeakReference<ClassPoolDomain>> domains = new WeakHashMap<Object, WeakReference<ClassPoolDomain>>();
    
+   ReadWriteLock lock = new ReentrantReadWriteLock(); 
+   
    public static ClassPoolDomainRegistry getInstance()
    {
       return INSTANCE;
    }
    
-   public synchronized ClassPoolDomain getDomain(Object key)
+   public ClassPoolDomain getDomain(Object key)
    {
-      WeakReference<ClassPoolDomain> ref = domains.get(key);
-      if (ref == null)
+      lock.readLock().lock();
+      try
       {
-         return null;
+         WeakReference<ClassPoolDomain> ref = domains.get(key);
+         if (ref == null)
+         {
+            return null;
+         }
+         return ref.get();
       }
-      return ref.get();
+      finally
+      {
+         lock.readLock().unlock();
+      }
    }
    
-   public synchronized void addClassPoolDomain(Object key, ClassPoolDomain domain)
+   public void addClassPoolDomain(Object key, ClassPoolDomain domain)
    {
-      domains.put(key, new WeakReference<ClassPoolDomain>(domain));
+      lock.writeLock().lock();
+      try
+      {
+         domains.put(key, new WeakReference<ClassPoolDomain>(domain));
+      }
+      finally
+      {
+         lock.writeLock().unlock();
+      }
    }
    
 }

Modified: projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdapter.java
===================================================================
--- projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdapter.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdapter.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -36,7 +36,7 @@
  */
 public class ClassPoolToClassPoolDomainAdapter extends AbstractClassPoolDomain
 {
-   protected ClassPool pool;
+   protected final ClassPool pool;
    
    public ClassPoolToClassPoolDomainAdapter()
    {
@@ -72,7 +72,7 @@
    }
 
    
-   public synchronized CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
+   public CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
    {
       return getCachedOrCreateFromPool(pool, classname, create, trace);
    }

Modified: projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/plugins/DelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/plugins/DelegatingClassPool.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/plugins/DelegatingClassPool.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -42,7 +42,7 @@
 {
    private final ClassPoolDomain domain;
    
-   private boolean closed;
+   private volatile boolean closed;
    
    public DelegatingClassPool(ClassPoolDomain domain, ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository)
    {
@@ -84,7 +84,8 @@
     * parentFirst functionality
     */
    @Override
-   public synchronized CtClass get0(String classname, boolean useCache) throws NotFoundException
+   //TODO KABIR was synchronized - I don't see why apart from that the standard javassist.ClassPool implementation was synchronized?
+   public CtClass get0(String classname, boolean useCache) throws NotFoundException
    {
       if (isGeneratedClass(classname))
       {

Modified: projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/spi/ClassPoolRepository.java
===================================================================
--- projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/spi/ClassPoolRepository.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/classpool/src/main/java/org/jboss/classpool/spi/ClassPoolRepository.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -21,9 +21,9 @@
  */ 
 package org.jboss.classpool.spi;
 
-import java.util.Collection;
-import java.util.HashSet;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 import javassist.ClassPool;
 import javassist.scopedpool.ScopedClassPool;
@@ -42,10 +42,12 @@
 {
    private final static ClassPoolRepository instance = new ClassPoolRepository();
    
-   protected ScopedClassPoolRepository delegate;
-   private ClassPoolRepositoryCallback callback;
-   private Collection<ClassLoader> currentClassLoaders = new HashSet<ClassLoader>();
+   protected final ScopedClassPoolRepository delegate;
    
+   private volatile ClassPoolRepositoryCallback callback;
+   
+   private final  ConcurrentMap<ClassLoader, Boolean> currentClassLoaders = new ConcurrentHashMap<ClassLoader, Boolean>();
+   
    /**
     * Returns the singleton instance.
     * 
@@ -87,7 +89,7 @@
     * @param callback the callback object
     * @see ClassPoolRepositoryCallback
     */
-   public synchronized void setClassPoolRepositoryCallback(ClassPoolRepositoryCallback callback)
+   public void setClassPoolRepositoryCallback(ClassPoolRepositoryCallback callback)
    {
       this.callback = callback;
    }
@@ -96,7 +98,7 @@
     * Returns the callback object.
     * @return the callback object. May be {@code null}
     */
-   public synchronized ClassPoolRepositoryCallback getClassPoolRepositoryCallback()
+   public ClassPoolRepositoryCallback getClassPoolRepositoryCallback()
    {
       return this.callback;
    }
@@ -159,25 +161,26 @@
     * @param classLoader the ClassLoader to be added to this repository
     * @return the ClassPool corresponding to {@code classLoader}
     */
-   public synchronized ClassPool registerClassLoader(ClassLoader classLoader)
+   public ClassPool registerClassLoader(ClassLoader classLoader)
    {
       if (classLoader == null)
       {
          classLoader = SecurityActions.getContextClassLoader();
       }
-      if (currentClassLoaders.contains(classLoader))
+      
+      if (currentClassLoaders.putIfAbsent(classLoader, Boolean.TRUE) != null)
       {
          return null;
       }
-      // TODO JBREFLECT-63 review this
-      currentClassLoaders.add(classLoader);
+
       ScopedClassPool classPool = (ScopedClassPool) delegate.registerClassLoader(classLoader);
       currentClassLoaders.remove(classLoader);
       
       // TODO review classPool != null check for AOP tests
-      if (classPool != null && callback != null)
+      ClassPoolRepositoryCallback cb = callback;
+      if (classPool != null && cb != null)
       {
-         callback.classLoaderRegistered(classLoader);
+         cb.classLoaderRegistered(classLoader);
       }
       return classPool;
    }
@@ -187,12 +190,13 @@
     * 
     * @param classLoader the ClassLoader to be removed from this repository
     */
-   public synchronized void unregisterClassLoader(ClassLoader classLoader)
+   public void unregisterClassLoader(ClassLoader classLoader)
    {
       delegate.unregisterClassLoader(classLoader);
-      if (callback != null)
+      ClassPoolRepositoryCallback cb = callback;
+      if (cb != null)
       {
-         callback.classLoaderUnregistered(classLoader);
+         cb.classLoaderUnregistered(classLoader);
       }
    }
 }
\ No newline at end of file

Modified: projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClClassPoolDomain.java
===================================================================
--- projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClClassPoolDomain.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClClassPoolDomain.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -26,11 +26,11 @@
 import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 import javassist.ClassPool;
 import javassist.CtClass;
@@ -54,8 +54,8 @@
  */
 class JBossClClassPoolDomain extends BaseClassPoolDomain
 {
-   private Map<String, Set<DelegatingClassPool>> poolsByPackage = new HashMap<String, Set<DelegatingClassPool>>();
-   private DomainRegistry registry;
+   private final ConcurrentMap<String, Set<DelegatingClassPool>> poolsByPackage = new ConcurrentHashMap<String, Set<DelegatingClassPool>>();
+   private final DomainRegistry registry;
    
    public JBossClClassPoolDomain(String domainName, ParentPolicy parentPolicy, DomainRegistry registry)
    {
@@ -88,7 +88,7 @@
       this.registry = registry;
    }
 
-   synchronized void setupPoolsByPackage(DelegatingClassPool pool)
+   void setupPoolsByPackage(DelegatingClassPool pool)
    {
       if (pool instanceof JBossClDelegatingClassPool == false)
       {
@@ -98,40 +98,58 @@
       Module module = getModuleForPool(pool);
       boolean trace = logger.isTraceEnabled();
       
-      for (String pkg : module.getPackageNames())
+      lockWrite();
+      try
       {
-         Set<DelegatingClassPool> pools = poolsByPackage.get(pkg);
-         if (pools == null)
+         for (String pkg : module.getPackageNames())
          {
-            pools = new LinkedHashSet<DelegatingClassPool>();
-            poolsByPackage.put(pkg, pools);
+            Set<DelegatingClassPool> pools = poolsByPackage.get(pkg);
+            if (pools == null)
+            {
+               pools = new LinkedHashSet<DelegatingClassPool>();
+               Set<DelegatingClassPool> old = poolsByPackage.putIfAbsent(pkg, pools);
+               if (old != null)
+                  pools = old;
+            }
+            pools.add(pool);
+            if (trace) logger.trace(this + " adding package " + pkg + " for pool " + pool);
          }
-         pools.add(pool);
-         if (trace) logger.trace(this + " adding package " + pkg + " for pool " + pool);
       }
+      finally
+      {
+         unlockWrite();
+      }
    }
    
    @Override
-   public synchronized void removeClassPool(DelegatingClassPool pool)
+   public void removeClassPool(DelegatingClassPool pool)
    {
       super.removeClassPool(pool);
    
       Module module = getModuleForPool(pool);
       boolean trace = logger.isTraceEnabled();
 
-      for (String pkg : module.getPackageNames())
+      lockWrite();
+      try
       {
-         Set<DelegatingClassPool> pools = poolsByPackage.get(pkg);
-         if (pools != null)
+         for (String pkg : module.getPackageNames())
          {
-            pools.remove(pool);
-            if (pools.size() == 0)
+            Set<DelegatingClassPool> pools = poolsByPackage.get(pkg);
+            if (pools != null)
             {
-               poolsByPackage.remove(pkg);
-               if (trace) logger.trace(this + " removing package " + pkg + " for pool " + pool);
+               pools.remove(pool);
+               if (pools.size() == 0)
+               {
+                  poolsByPackage.remove(pkg);
+                  if (trace) logger.trace(this + " removing package " + pkg + " for pool " + pool);
+               }
             }
          }
       }
+      finally
+      {
+         unlockWrite();
+      }
    }
  
    @Override
@@ -217,7 +235,15 @@
    {
       String packageName = ClassLoaderUtils.getPackageName(classname);
       Set<DelegatingClassPool> poolSet = poolsByPackage.get(packageName);
-      return (poolSet == null) ? Collections.<DelegatingClassPool>emptyList() : new ArrayList<DelegatingClassPool>(poolSet);
+      lockRead();
+      try
+      {
+         return (poolSet == null) ? Collections.<DelegatingClassPool>emptyList() : new ArrayList<DelegatingClassPool>(poolSet);
+      }
+      finally
+      {
+         unlockRead();
+      }
    }
 
    private CtClass getCtClassFromModule(final Module module, final String classname, boolean trace)

Modified: projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClDelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClDelegatingClassPool.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClDelegatingClassPool.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -40,10 +40,10 @@
  */
 class JBossClDelegatingClassPool extends DelegatingClassPool implements ToClassInvokerPoolReference
 {
-   private WeakReference<Module> module;
-   private RegisterModuleCallback callback;
+   private final WeakReference<Module> module;
+   private final RegisterModuleCallback callback;
 
-   ToClassInvoker toClassInvoker;
+   private final ToClassInvoker toClassInvoker;
    
    protected JBossClDelegatingClassPool(ClassPoolDomain domain, ClassLoader cl, ClassPool parent,
          ScopedClassPoolRepository repository, Module module, RegisterModuleCallback callback)

Modified: projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClDelegatingClassPoolRepository.java
===================================================================
--- projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClDelegatingClassPoolRepository.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClDelegatingClassPoolRepository.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -33,7 +33,6 @@
 import org.jboss.classloading.spi.dependency.ClassLoading;
 import org.jboss.classloading.spi.dependency.Module;
 import org.jboss.classpool.spi.ClassPoolRepository;
-import org.jboss.logging.Logger;
 
 /**
  * Repository for JBossclDelegatingClassPools.
@@ -62,7 +61,7 @@
       Collections.synchronizedMap(new WeakHashMap<Module, ScopedClassPool>());
    
    @Override
-   public synchronized ClassPool registerClassLoader(ClassLoader classLoader)
+   public ClassPool registerClassLoader(ClassLoader classLoader)
    {
       ScopedClassPool classPool = (ScopedClassPool) super.registerClassLoader(classLoader);
       if (classPool == null)
@@ -78,7 +77,7 @@
    }
    
 
-   public synchronized void unregisterClassLoader(ClassLoader classLoader, Module module)
+   public void unregisterClassLoader(ClassLoader classLoader, Module module)
    {
       ScopedClassPool classPool = registeredModules.remove(module);
       if (classLoader == null)

Modified: projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClParentDelegationStrategy.java
===================================================================
--- projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClParentDelegationStrategy.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/jbosscl/src/main/java/org/jboss/classpool/plugins/jbosscl/JBossClParentDelegationStrategy.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -38,7 +38,7 @@
  */
 class JBossClParentDelegationStrategy extends AbstractParentDelegationStrategy
 {
-   ParentPolicy parentPolicy;
+   private final ParentPolicy parentPolicy;
    
    JBossClParentDelegationStrategy(ParentPolicy parentPolicy, ClassPoolToClassPoolDomainAdaptorFactory adaptorFactory)
    {

Modified: projects/jboss-classpool/trunk/ucl/src/main/java/org/jboss/classpool/plugins/ucl/UclDelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/ucl/src/main/java/org/jboss/classpool/plugins/ucl/UclDelegatingClassPool.java	2010-01-08 18:05:17 UTC (rev 99172)
+++ projects/jboss-classpool/trunk/ucl/src/main/java/org/jboss/classpool/plugins/ucl/UclDelegatingClassPool.java	2010-01-08 19:35:28 UTC (rev 99173)
@@ -40,7 +40,7 @@
  */
 public class UclDelegatingClassPool extends DelegatingClassPool implements ToClassInvokerPoolReference
 {
-   ToClassInvoker toClassInvoker = null;
+   private final ToClassInvoker toClassInvoker;
 
    public UclDelegatingClassPool(ClassPoolDomain domain, ClassLoader cl, ClassPool parent, 
          ScopedClassPoolRepository repository, File tmpDir, URL tmpURL)




More information about the jboss-cvs-commits mailing list