[jboss-cvs] JBossAS SVN: r107201 - in projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi: base and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jul 29 10:30:00 EDT 2010


Author: alesj
Date: 2010-07-29 10:29:59 -0400 (Thu, 29 Jul 2010)
New Revision: 107201

Modified:
   projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/DelegateLoader.java
   projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/ClassLoaderInformation.java
Log:
Only index non-filtering packages.

Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/DelegateLoader.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/DelegateLoader.java	2010-07-29 12:43:36 UTC (rev 107200)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/DelegateLoader.java	2010-07-29 14:29:59 UTC (rev 107201)
@@ -22,6 +22,8 @@
 package org.jboss.classloader.spi;
 
 import org.jboss.classloader.spi.base.BaseDelegateLoader;
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.ClassFilterUtils;
 
 /**
  * DelegateLoader.
@@ -56,8 +58,18 @@
    {
       super(factory);
    }
-   
+
    /**
+    * Get the filter.
+    *
+    * @return the filter
+    */
+   public ClassFilter getFilter()
+   {
+      return ClassFilterUtils.EVERYTHING;
+   }
+
+   /**
     * Get the ClassLoaderPolicy associated with this DelegateLoader.
     *
     * @return the class loader policy

Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/ClassLoaderInformation.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/ClassLoaderInformation.java	2010-07-29 12:43:36 UTC (rev 107200)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/ClassLoaderInformation.java	2010-07-29 14:29:59 UTC (rev 107201)
@@ -32,6 +32,7 @@
 import org.jboss.classloader.spi.DelegateLoader;
 import org.jboss.classloader.spi.ImportType;
 import org.jboss.classloader.spi.Loader;
+import org.jboss.classloader.spi.filter.ClassFilter;
 import org.jboss.classloader.spi.helpers.AbstractClassLoaderCache;
 
 /**
@@ -129,7 +130,7 @@
                cantBlacklist++;
             }
 
-            addLoaderToIndex(baseDelegate, delegatePolicy, importType, ImportType.ALL);
+            addLoaderToIndex(delegate, delegatePolicy, importType, ImportType.ALL);
          }
 
          this.delegates = Collections.synchronizedMap(temp);
@@ -344,7 +345,7 @@
     * @param policy the policy
     * @param types the types
     */
-   private void addLoaderToIndex(Loader loader, BaseClassLoaderPolicy policy, ImportType... types)
+   private void addLoaderToIndex(DelegateLoader loader, BaseClassLoaderPolicy policy, ImportType... types)
    {
       if (policy == null)
          return;
@@ -352,6 +353,7 @@
       String[] packageNames = policy.getPackageNames();
       if (packageNames != null && packageNames.length > 0)
       {
+         ClassFilter filter = loader.getFilter();
          for (ImportType type : types)
          {
             Map<String, List<Loader>> map = index.get(type);
@@ -362,13 +364,16 @@
             }
             for (String pn : packageNames)
             {
-               List<Loader> loaders = map.get(pn);
-               if (loaders == null)
+               if (filter != null && filter.matchesPackageName(pn))
                {
-                  loaders = new CopyOnWriteArrayList<Loader>();
-                  map.put(pn, loaders);
+                  List<Loader> loaders = map.get(pn);
+                  if (loaders == null)
+                  {
+                     loaders = new CopyOnWriteArrayList<Loader>();
+                     map.put(pn, loaders);
+                  }
+                  loaders.add(loader);
                }
-               loaders.add(loader);
             }
          }
       }
@@ -381,7 +386,7 @@
     * @param policy the policy
     * @param types the types
     */
-   private void removeLoaderFromIndex(Loader loader, BaseClassLoaderPolicy policy, ImportType... types)
+   private void removeLoaderFromIndex(DelegateLoader loader, BaseClassLoaderPolicy policy, ImportType... types)
    {
       if (policy == null)
          return;
@@ -389,6 +394,7 @@
       String[] packageNames = policy.getPackageNames();
       if (packageNames != null && packageNames.length > 0)
       {
+         ClassFilter filter = loader.getFilter();
          for (ImportType type : types)
          {
             Map<String, List<Loader>> map = index.get(type);
@@ -396,14 +402,17 @@
             {
                for (String pn : packageNames)
                {
-                  List<Loader> loaders = map.get(pn);
-                  if (loaders != null)
+                  if (filter != null && filter.matchesPackageName(pn))
                   {
-                     if (loaders.remove(loader) && loaders.isEmpty())
+                     List<Loader> loaders = map.get(pn);
+                     if (loaders != null)
                      {
-                        map.remove(pn); // remove returns loaders
-                        if (map.isEmpty())
-                           index.remove(type);
+                        if (loaders.remove(loader) && loaders.isEmpty())
+                        {
+                           map.remove(pn); // remove returns loaders
+                           if (map.isEmpty())
+                              index.remove(type);
+                        }
                      }
                   }
                }



More information about the jboss-cvs-commits mailing list