[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