[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