[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