[jboss-cvs] JBossAS SVN: r83948 - in projects/jboss-cl/trunk/classloader/src: test/java/org/jboss/test/classloader/delegate/test and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 6 07:37:31 EST 2009


Author: adrian at jboss.org
Date: 2009-02-06 07:37:31 -0500 (Fri, 06 Feb 2009)
New Revision: 83948

Modified:
   projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java
   projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/ClassLoaderInformation.java
   projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/delegate/test/DelegateUnitTestCase.java
Log:
[JBCL-82] - Flush the import caches as well

Modified: projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java	2009-02-06 12:37:20 UTC (rev 83947)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java	2009-02-06 12:37:31 UTC (rev 83948)
@@ -91,6 +91,9 @@
       globalClassBlackList.clear();
       globalResourceCache.clear();
       globalResourceBlackList.clear();
+
+      for (ClassLoaderInformation info : classLoaders)
+         info.flushCaches();
    }
 
    public int getClassBlackListSize()
@@ -1430,6 +1433,11 @@
       {
          globalResourceBlackList.remove(name);
       }
+
+      // Need to clear the import caches as well
+      List<ClassLoaderInformation> infos = classLoaders;
+      for (ClassLoaderInformation info : infos)
+         info.clearBlackList(name);
    }
    
 }

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	2009-02-06 12:37:20 UTC (rev 83947)
+++ projects/jboss-cl/trunk/classloader/src/main/java/org/jboss/classloader/spi/base/ClassLoaderInformation.java	2009-02-06 12:37:31 UTC (rev 83948)
@@ -285,6 +285,19 @@
          resourceBlackList.put(name, name);
    }
    
+   /**
+    * Cleans the entry with the given name from the blackList
+    *
+    * @param name the name of the resource to clear from the blackList
+    */
+   public void clearBlackList(String name)
+   {
+      if (classBlackList != null)
+         classBlackList.remove(name);
+      if (resourceBlackList != null)
+         resourceBlackList.remove(name);
+   }
+   
    @Override
    public String toString()
    {

Modified: projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/delegate/test/DelegateUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/delegate/test/DelegateUnitTestCase.java	2009-02-06 12:37:20 UTC (rev 83947)
+++ projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/delegate/test/DelegateUnitTestCase.java	2009-02-06 12:37:31 UTC (rev 83948)
@@ -30,10 +30,12 @@
 
 import junit.framework.Test;
 
+import org.jboss.classloader.plugins.ClassLoaderUtils;
 import org.jboss.classloader.spi.ClassLoaderDomain;
 import org.jboss.classloader.spi.ClassLoaderSystem;
 import org.jboss.classloader.spi.DelegateLoader;
 import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloader.spi.base.BaseClassLoader;
 import org.jboss.classloader.spi.filter.FilteredDelegateLoader;
 import org.jboss.classloader.test.support.MockClassLoaderPolicy;
 import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
@@ -307,4 +309,31 @@
          threadB.doJoin();
       }
    }
+   
+   public void testFlushOnImports() throws Exception
+   {
+      ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+
+      MockClassLoaderPolicy pa = createMockClassLoaderPolicy("A");
+      pa.setPaths(TestA1.class);
+      pa.setExcluded(TestA1.class);
+      ClassLoader a = system.registerClassLoaderPolicy(pa);
+
+      MockClassLoaderPolicy pb = createMockClassLoaderPolicy("B");
+      pb.setPaths(TestB1.class);
+      List<DelegateLoader> delegates = new ArrayList<DelegateLoader>();
+      delegates.add(new FilteredDelegateLoader(pa));
+      pb.setDelegates(delegates);
+      ClassLoader b = system.registerClassLoaderPolicy(pb);
+      
+      assertLoadClassFail(TestA1.class, a);
+      assertLoadClassFail(TestA1.class, b);
+      
+      pa.setExcluded(new String[0]);
+      String testA1Path = ClassLoaderUtils.classNameToPath(TestA1.class.getName());
+      ((BaseClassLoader) a).clearBlackList(testA1Path);
+      
+      assertLoadClass(TestA1.class, a);
+      assertLoadClass(TestA1.class, b, a);
+   }
 }




More information about the jboss-cvs-commits mailing list