[jboss-cvs] JBossAS SVN: r76171 - in projects/jboss-cl/trunk: classloader/src/main/org/jboss/classloader/spi/base and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jul 24 05:51:24 EDT 2008
Author: adrian at jboss.org
Date: 2008-07-24 05:51:24 -0400 (Thu, 24 Jul 2008)
New Revision: 76171
Modified:
projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomain.java
projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomainMBean.java
projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java
projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java
projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderMBean.java
projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java
projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoaderInformation.java
projects/jboss-cl/trunk/classloader/src/tests/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java
projects/jboss-cl/trunk/classloading/src/main/org/jboss/classloading/spi/dependency/ClassLoadingSpace.java
Log:
[JBCL-20] - Don't use CopyOnWriteArraySet for caching, optimize away some unnecessary string construction and move JMX attributes to operations where they could produce a lot of data
Modified: projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomain.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomain.java 2008-07-24 09:39:44 UTC (rev 76170)
+++ projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomain.java 2008-07-24 09:51:24 UTC (rev 76171)
@@ -199,7 +199,7 @@
return system.getObjectName();
}
- public List<ObjectName> getClassLoaders()
+ public List<ObjectName> listClassLoaders()
{
List<ObjectName> result = new ArrayList<ObjectName>();
for (ClassLoader cl : super.getAllClassLoaders())
@@ -210,7 +210,7 @@
return result;
}
- public Map<String, List<ObjectName>> getExportingClassLoaders()
+ public Map<String, List<ObjectName>> listExportingClassLoaders()
{
HashMap<String, List<ObjectName>> result = new HashMap<String, List<ObjectName>>();
for (Entry<String, List<ClassLoader>> entry : getClassLoadersByPackage().entrySet())
@@ -227,7 +227,7 @@
return result;
}
- public List<ObjectName> getExportingClassLoaders(String packageName)
+ public List<ObjectName> listExportingClassLoaders(String packageName)
{
if (packageName == null)
throw new IllegalArgumentException("Null package name");
Modified: projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomainMBean.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomainMBean.java 2008-07-24 09:39:44 UTC (rev 76170)
+++ projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomainMBean.java 2008-07-24 09:51:24 UTC (rev 76171)
@@ -77,14 +77,14 @@
*
* @return the classloaders
*/
- List<ObjectName> getClassLoaders();
+ List<ObjectName> listClassLoaders();
/**
* Get the exporting classloaders
*
* @return a map of packages to classloaders
*/
- Map<String, List<ObjectName>> getExportingClassLoaders();
+ Map<String, List<ObjectName>> listExportingClassLoaders();
/**
* Get the classloaders export a package
@@ -92,7 +92,7 @@
* @param packageName the package name
* @return the classloaders
*/
- List<ObjectName> getExportingClassLoaders(String packageName);
+ List<ObjectName> listExportingClassLoaders(String packageName);
/**
* Load a class
@@ -122,6 +122,62 @@
ObjectName findClassLoaderForClass(String name) throws ClassNotFoundException;
/**
+ * Show the class cache
+ *
+ * @return a map of class name to a loader description
+ */
+ Map<String, String> listClassCache();
+
+ /**
+ * Show the class blacklist
+ *
+ * @return a set of class names
+ */
+ Set<String> listClassBlackList();
+
+ /**
+ * Show the resource cache
+ *
+ * @return a map of resource name to urls
+ */
+ Map<String, URL> listResourceCache();
+
+ /**
+ * Show the resource blacklist
+ *
+ * @return a set of resource names
+ */
+ Set<String> listResourceBlackList();
+
+ /**
+ * Get the number of classes black listed
+ *
+ * @return the size
+ */
+ int getClassBlackListSize();
+
+ /**
+ * Get the number of classes cached
+ *
+ * @return the size
+ */
+ int getClassCacheSize();
+
+ /**
+ * Get the number of resources black listed
+ *
+ * @return the size
+ */
+ int getResourceBlackListSize();
+
+ /**
+ * Get the number of resource cached
+ *
+ * @return the size
+ */
+ int getResourceCacheSize();
+
+ /**
* Flush the caches
*/
void flushCaches();
Modified: projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java 2008-07-24 09:39:44 UTC (rev 76170)
+++ projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java 2008-07-24 09:51:24 UTC (rev 76171)
@@ -39,7 +39,6 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
@@ -75,13 +74,16 @@
private DelegateLoader loader;
/** The loaded classes */
- private Set<String> loadedClasses = new CopyOnWriteArraySet<String>();
+ private Map<String, String> loadedClasses = new ConcurrentHashMap<String, String>();
/** Our resource cache */
private Map<String, URL> resourceCache;
/** Our black list */
- private Set<String> blackList;
+ private Map<String, String> blackList;
+
+ /** A cached version of toLongString() */
+ private String cachedToString;
/**
* Create a new ClassLoader with no parent.
@@ -106,7 +108,7 @@
resourceCache = new ConcurrentHashMap<String, URL>();
if (basePolicy.isBlackListable())
- blackList = new CopyOnWriteArraySet<String>();
+ blackList = new ConcurrentHashMap<String, String>();
log.debug("Created " + this + " with policy " + policy.toLongString());
}
@@ -173,7 +175,7 @@
return result;
}
- public String getPolicyDetails()
+ public String listPolicyDetails()
{
return policy.toLongString();
}
@@ -200,7 +202,7 @@
public Set<String> listLoadedClasses()
{
- return new HashSet<String>(loadedClasses);
+ return Collections.unmodifiableSet(loadedClasses.keySet());
}
public Set<String> listLoadedResourceNames()
@@ -508,7 +510,7 @@
}
}, policy.getAccessControlContext());
- loadedClasses.add(name);
+ loadedClasses.put(name, name);
return result;
}
@@ -549,7 +551,7 @@
}
// Is this resource blacklisted?
- if (blackList != null && blackList.contains(name))
+ if (blackList != null && blackList.containsKey(name))
{
if (trace)
log.trace(this + " resource is blacklisted " + name);
@@ -581,7 +583,7 @@
// Blacklist when not found
if (blackList != null && result == null)
- blackList.add(name);
+ blackList.put(name, name);
return result;
}
@@ -754,11 +756,43 @@
return null;
}
+ public int getResourceBlackListSize()
+ {
+ Map<String, String> blackList = this.blackList;
+ if (blackList == null)
+ return 0;
+ return blackList.size();
+ }
+
+ public int getResourceCacheSize()
+ {
+ Map<String, URL> resourceCache = this.resourceCache;
+ if (resourceCache == null)
+ return 0;
+ return resourceCache.size();
+ }
+
+ public Set<String> listResourceBlackList()
+ {
+ Map<String, String> blackList = this.blackList;
+ if (blackList == null)
+ return Collections.emptySet();
+ return Collections.unmodifiableSet(blackList.keySet());
+ }
+
+ public Map<String, URL> listResourceCache()
+ {
+ Map<String, URL> resourceCache = this.resourceCache;
+ if (resourceCache == null)
+ return Collections.emptyMap();
+ return Collections.unmodifiableMap(resourceCache);
+ }
+
public void clearBlackList()
{
if (blackList != null)
{
- for (String name : blackList)
+ for (String name : blackList.keySet())
clearBlackList(name);
}
}
@@ -782,13 +816,17 @@
*/
public String toLongString()
{
+ if (cachedToString != null)
+ return cachedToString;
+
StringBuilder builder = new StringBuilder();
builder.append(getClass().getSimpleName());
builder.append('@').append(Integer.toHexString(System.identityHashCode(this)));
builder.append('{').append(getPolicy().toLongString());
toLongString(builder);
builder.append('}');
- return builder.toString();
+ cachedToString = builder.toString();
+ return cachedToString;
}
/**
@@ -801,6 +839,7 @@
resourceCache.clear();
if (blackList != null)
blackList.clear();
+ cachedToString = null;
}
/**
Modified: projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java 2008-07-24 09:39:44 UTC (rev 76170)
+++ projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java 2008-07-24 09:51:24 UTC (rev 76171)
@@ -25,6 +25,7 @@
import java.net.URL;
import java.security.ProtectionDomain;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -33,7 +34,6 @@
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.CopyOnWriteArraySet;
import org.jboss.classloader.plugins.ClassLoaderUtils;
import org.jboss.classloader.spi.ClassLoaderPolicy;
@@ -71,13 +71,13 @@
private Map<String, Loader> globalClassCache = new ConcurrentHashMap<String, Loader>();
/** The global class black list */
- private Set<String> globalClassBlackList = new CopyOnWriteArraySet<String>();
+ private Map<String, String> globalClassBlackList = new ConcurrentHashMap<String, String>();
/** The global resource cache */
private Map<String, URL> globalResourceCache = new ConcurrentHashMap<String, URL>();
/** The global resource black list */
- private Set<String> globalResourceBlackList = new CopyOnWriteArraySet<String>();
+ private Map<String, String> globalResourceBlackList = new ConcurrentHashMap<String, String>();
/** Keep track of the added order */
private int order = 0;
@@ -92,7 +92,50 @@
globalResourceCache.clear();
globalResourceBlackList.clear();
}
+
+ public int getClassBlackListSize()
+ {
+ return globalClassBlackList.size();
+ }
+
+ public int getClassCacheSize()
+ {
+ return globalClassCache.size();
+ }
+
+ public int getResourceBlackListSize()
+ {
+ return globalClassBlackList.size();
+ }
+
+ public int getResourceCacheSize()
+ {
+ return globalClassCache.size();
+ }
+ public Set<String> listClassBlackList()
+ {
+ return Collections.unmodifiableSet(globalClassBlackList.keySet());
+ }
+
+ public Map<String, String> listClassCache()
+ {
+ Map<String, String> result = new HashMap<String, String>(globalClassCache.size());
+ for (Map.Entry<String, Loader> entry : globalClassCache.entrySet())
+ result.put(entry.getKey(), entry.getValue().toString());
+ return result;
+ }
+
+ public Set<String> listResourceBlackList()
+ {
+ return Collections.unmodifiableSet(globalResourceBlackList.keySet());
+ }
+
+ public Map<String, URL> listResourceCache()
+ {
+ return Collections.unmodifiableMap(globalResourceCache);
+ }
+
/**
* Get the classloader system
*
@@ -590,7 +633,7 @@
return loader;
}
- if (globalClassBlackList.contains(name))
+ if (globalClassBlackList.containsKey(name))
{
if (trace)
log.trace(this + " class is black listed " + name);
@@ -626,7 +669,7 @@
}
// Here is not found in the exports so can we blacklist it?
if (canBlackList)
- globalClassBlackList.add(name);
+ globalClassBlackList.put(name, name);
return null;
}
@@ -648,7 +691,7 @@
log.trace(this + " got resource from cache " + name);
}
- if (globalResourceBlackList.contains(name))
+ if (globalResourceBlackList.containsKey(name))
{
if (trace)
log.trace(this + " resource is black listed, not looking at exports " + name);
@@ -685,7 +728,7 @@
}
// Here is not found in the exports so can we blacklist it?
if (canBlackList)
- globalResourceBlackList.add(name);
+ globalResourceBlackList.put(name, name);
return null;
}
Modified: projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderMBean.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderMBean.java 2008-07-24 09:39:44 UTC (rev 76170)
+++ projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderMBean.java 2008-07-24 09:51:24 UTC (rev 76171)
@@ -24,6 +24,7 @@
import java.io.IOException;
import java.net.URL;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import javax.management.ObjectName;
@@ -97,7 +98,7 @@
*
* @return the policy string
*/
- String getPolicyDetails();
+ String listPolicyDetails();
/**
* Get the loaded classes
@@ -146,8 +147,36 @@
* @throws ClassNotFoundException when the class is not found
*/
ObjectName findClassLoaderForClass(String name) throws ClassNotFoundException;
+
+ /**
+ * Show the resource cache
+ *
+ * @return a map of resource name to urls
+ */
+ Map<String, URL> listResourceCache();
+
+ /**
+ * Show the resource blacklist
+ *
+ * @return a set of resource names
+ */
+ Set<String> listResourceBlackList();
/**
+ * Get the number of resources black listed
+ *
+ * @return the size
+ */
+ int getResourceBlackListSize();
+
+ /**
+ * Get the number of resource cached
+ *
+ * @return the size
+ */
+ int getResourceCacheSize();
+
+ /**
* Clear the black list
*/
void clearBlackList();
Modified: projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java 2008-07-24 09:39:44 UTC (rev 76170)
+++ projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java 2008-07-24 09:51:24 UTC (rev 76171)
@@ -110,7 +110,7 @@
// Nothing by default
}
- BaseClassLoader getBaseClassLoader(String context)
+ BaseClassLoader getBaseClassLoader(String message, String context)
{
BaseClassLoader result = null;
try
@@ -123,13 +123,13 @@
{
}
if (result == null)
- log.warn("Not " + context + " from policy that has no classLoader: " + toLongString());
+ log.warn("Not " + message + context + " from policy that has no classLoader: " + toLongString());
return result;
}
public Class<?> loadClass(String className)
{
- BaseClassLoader classLoader = getBaseClassLoader("loading class " + className);
+ BaseClassLoader classLoader = getBaseClassLoader("loading class ", className);
if (classLoader != null)
return classLoader.loadClassLocally(className);
return null;
@@ -137,7 +137,7 @@
public URL getResource(String name)
{
- BaseClassLoader classLoader = getBaseClassLoader("getting resource " + name);
+ BaseClassLoader classLoader = getBaseClassLoader("getting resource ", name);
if (classLoader != null)
return classLoader.getResourceLocally(name);
return null;
@@ -145,14 +145,14 @@
public void getResources(String name, Set<URL> urls) throws IOException
{
- BaseClassLoader classLoader = getBaseClassLoader("getting resources " + name);
+ BaseClassLoader classLoader = getBaseClassLoader("getting resources ", name);
if (classLoader != null)
classLoader.getResourcesLocally(name, urls);
}
public Package getPackage(String name)
{
- BaseClassLoader classLoader = getBaseClassLoader("getting package " + name);
+ BaseClassLoader classLoader = getBaseClassLoader("getting package ", name);
if (classLoader != null)
return classLoader.getPackageLocally(name);
return null;
Modified: projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoaderInformation.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoaderInformation.java 2008-07-24 09:39:44 UTC (rev 76170)
+++ projects/jboss-cl/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoaderInformation.java 2008-07-24 09:51:24 UTC (rev 76171)
@@ -24,9 +24,7 @@
import java.net.URL;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArraySet;
import org.jboss.classloader.spi.DelegateLoader;
import org.jboss.classloader.spi.Loader;
@@ -58,13 +56,13 @@
private Map<String, Loader> classCache;
/** The class black list */
- private Set<String> classBlackList;
+ private Map<String, String> classBlackList;
/** The resource cache */
private Map<String, URL> resourceCache;
/** The resource black list */
- private Set<String> resourceBlackList;
+ private Map<String, String> resourceBlackList;
/**
* Create a new ClassLoaderInformation.
@@ -111,8 +109,8 @@
if (canBlackList)
{
- classBlackList = new CopyOnWriteArraySet<String>();
- resourceBlackList = new CopyOnWriteArraySet<String>();
+ classBlackList = new ConcurrentHashMap<String, String>();
+ resourceBlackList = new ConcurrentHashMap<String, String>();
}
}
@@ -189,6 +187,7 @@
*/
public Loader getCachedLoader(String name)
{
+ Map<String, Loader> classCache = this.classCache;
if (classCache != null)
return classCache.get(name);
return null;
@@ -202,6 +201,7 @@
*/
public void cacheLoader(String name, Loader loader)
{
+ Map<String, Loader> classCache = this.classCache;
if (classCache != null)
classCache.put(name, loader);
}
@@ -214,8 +214,9 @@
*/
public boolean isBlackListedClass(String name)
{
+ Map<String, String> classBlackList = this.classBlackList;
if (classBlackList != null)
- return classBlackList.contains(name);
+ return classBlackList.containsKey(name);
return false;
}
@@ -226,8 +227,9 @@
*/
public void blackListClass(String name)
{
+ Map<String, String> classBlackList = this.classBlackList;
if (classBlackList != null)
- classBlackList.add(name);
+ classBlackList.put(name, name);
}
/**
@@ -238,6 +240,7 @@
*/
public URL getCachedResource(String name)
{
+ Map<String, URL> resourceCache = this.resourceCache;
if (resourceCache != null)
return resourceCache.get(name);
return null;
@@ -251,6 +254,7 @@
*/
public void cacheResource(String name, URL url)
{
+ Map<String, URL> resourceCache = this.resourceCache;
if (resourceCache != null)
resourceCache.put(name, url);
}
@@ -263,8 +267,9 @@
*/
public boolean isBlackListedResource(String name)
{
+ Map<String, String> resourceBlackList = this.resourceBlackList;
if (resourceBlackList != null)
- return resourceBlackList.contains(name);
+ return resourceBlackList.containsKey(name);
return false;
}
@@ -275,8 +280,9 @@
*/
public void blackListResource(String name)
{
+ Map<String, String> resourceBlackList = this.resourceBlackList;
if (resourceBlackList != null)
- resourceBlackList.add(name);
+ resourceBlackList.put(name, name);
}
@Override
Modified: projects/jboss-cl/trunk/classloader/src/tests/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/tests/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java 2008-07-24 09:39:44 UTC (rev 76170)
+++ projects/jboss-cl/trunk/classloader/src/tests/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java 2008-07-24 09:51:24 UTC (rev 76171)
@@ -326,20 +326,20 @@
RealClassLoader clB2 = (RealClassLoader) system.registerClassLoaderPolicy(domain, b2);
ObjectName testDomain = domain.getObjectName();
- List<ObjectName> classLoaders = (List) server.getAttribute(testDomain, "ClassLoaders");
+ List<ObjectName> classLoaders = (List) server.invoke(testDomain, "listClassLoaders", null, null);
List<ObjectName> expected = Arrays.asList(clA1.getObjectName(), clA2.getObjectName(), clB1.getObjectName(), clB2.getObjectName());
assertEquals(expected, classLoaders);
- Map<String, List<ObjectName>> packageClassLoaders = (Map) server.getAttribute(testDomain, "ExportingClassLoaders");
+ Map<String, List<ObjectName>> packageClassLoaders = (Map) server.invoke(testDomain, "listExportingClassLoaders", null, null);
Map<String, List<ObjectName>> expectedMap = new HashMap<String, List<ObjectName>>();
expectedMap.put(A.class.getPackage().getName(), Arrays.asList(clA1.getObjectName(), clA2.getObjectName()));
expectedMap.put(B.class.getPackage().getName(), Arrays.asList(clB1.getObjectName()));
assertEquals(expectedMap, packageClassLoaders);
- classLoaders = (List) server.invoke(testDomain, "getExportingClassLoaders", new Object[] { A.class.getPackage().getName() }, new String[] { String.class.getName()});
+ classLoaders = (List) server.invoke(testDomain, "listExportingClassLoaders", new Object[] { A.class.getPackage().getName() }, new String[] { String.class.getName()});
expected = Arrays.asList(clA1.getObjectName(), clA2.getObjectName());
- classLoaders = (List) server.invoke(testDomain, "getExportingClassLoaders", new Object[] { B.class.getPackage().getName() }, new String[] { String.class.getName()});
+ classLoaders = (List) server.invoke(testDomain, "listExportingClassLoaders", new Object[] { B.class.getPackage().getName() }, new String[] { String.class.getName()});
expected = Arrays.asList(clB1.getObjectName());
Class<?> clazz = (Class<?>) server.invoke(testDomain, "loadClass", new Object[] { A.class.getName() }, new String[] { String.class.getName() });
@@ -388,7 +388,7 @@
assertEquals(expectedPackages, server.invoke(testObjectName, "listExportedPackages", null, null));
List<ObjectName> expectedImports = Arrays.asList(clA.getObjectName(), clB.getObjectName());
assertEquals(expectedImports, server.invoke(testObjectName, "listImports", null, null));
- assertEquals(test.toLongString(), server.getAttribute(testObjectName, "PolicyDetails"));
+ assertEquals(test.toLongString(), server.invoke(testObjectName, "listPolicyDetails", null, null));
}
@SuppressWarnings("unchecked")
Modified: projects/jboss-cl/trunk/classloading/src/main/org/jboss/classloading/spi/dependency/ClassLoadingSpace.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/org/jboss/classloading/spi/dependency/ClassLoadingSpace.java 2008-07-24 09:39:44 UTC (rev 76170)
+++ projects/jboss-cl/trunk/classloading/src/main/org/jboss/classloading/spi/dependency/ClassLoadingSpace.java 2008-07-24 09:51:24 UTC (rev 76171)
@@ -28,7 +28,6 @@
import java.util.Set;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArraySet;
import org.jboss.classloading.spi.metadata.Requirement;
import org.jboss.logging.Logger;
@@ -54,7 +53,7 @@
private static boolean trace = log.isTraceEnabled();
/** The modules */
- private Set<Module> modules = new CopyOnWriteArraySet<Module>();
+ private Map<Module, Module> modules = new ConcurrentHashMap<Module, Module>();
/** The modules by package */
private Map<String, Module> modulesByPackage = new ConcurrentHashMap<String, Module>();
@@ -69,7 +68,7 @@
*/
public Set<Module> getModules()
{
- return Collections.unmodifiableSet(modules);
+ return Collections.unmodifiableSet(modules.keySet());
}
/**
@@ -266,7 +265,7 @@
other.split(module);
// This module is now part of our space
- modules.add(module);
+ modules.put(module, module);
module.setClassLoadingSpace(this);
}
More information about the jboss-cvs-commits
mailing list