[jboss-cvs] JBossAS SVN: r64254 - projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/jdk.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jul 24 12:58:01 EDT 2007
Author: adrian at jboss.org
Date: 2007-07-24 12:58:00 -0400 (Tue, 24 Jul 2007)
New Revision: 64254
Modified:
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/jdk/AbstractJDKChecker.java
Log:
Allow tests to say they are not part of the JDK even though they
are outside the classloading system.
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/jdk/AbstractJDKChecker.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/jdk/AbstractJDKChecker.java 2007-07-24 16:57:18 UTC (rev 64253)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/jdk/AbstractJDKChecker.java 2007-07-24 16:58:00 UTC (rev 64254)
@@ -23,9 +23,12 @@
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArraySet;
import org.jboss.classloader.spi.base.BaseClassLoader;
import org.jboss.classloader.spi.base.BaseClassLoaderDomain;
+import org.jboss.classloader.spi.base.BaseClassLoaderPolicy;
import org.jboss.classloader.spi.jdk.JDKChecker;
/**
@@ -39,6 +42,9 @@
/** The hack to the security manager */
private static final Hack hack;
+ /** Classes in the classpath that should be excluded: FOR TESTING ONLY */
+ private static Set<Class<?>> excluded = new CopyOnWriteArraySet<Class<?>>();
+
static
{
hack = AccessController.doPrivileged(new PrivilegedAction<Hack>()
@@ -49,7 +55,42 @@
}
});
}
+
+ /**
+ * Whether the class is excluded
+ *
+ * @param clazz the class
+ * @return whether the class is excluded
+ */
+ public boolean isExcluded(Class<?> clazz)
+ {
+ // No excludes
+ if (excluded.isEmpty())
+ return false;
+
+ for (Class<?> exclude : excluded)
+ {
+ if (exclude.isAssignableFrom(clazz))
+ return true;
+ }
+
+ // Not excluded
+ return false;
+ }
+ /**
+ * The excluded classes
+ *
+ * @return the excluded classes
+ */
+ public static Set<Class<?>> getExcluded()
+ {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null)
+ sm.checkCreateClassLoader();
+ return excluded;
+ }
+
public boolean isJDKRequest(String name)
{
Class<?> requesting = getRequestingClass(hack.getClassContext());
@@ -69,10 +110,11 @@
if (Hack.class.isAssignableFrom(clazz) == false &&
JDKChecker.class.isAssignableFrom(clazz) == false &&
BaseClassLoaderDomain.class.isAssignableFrom(clazz) == false &&
+ BaseClassLoaderPolicy.class.isAssignableFrom(clazz) == false &&
ClassLoader.class.isAssignableFrom(clazz) == false &&
Class.class.isAssignableFrom(clazz) == false)
{
- return clazz;
+ return clazz;
}
}
throw new RuntimeException("Should not be here!");
@@ -90,6 +132,8 @@
*/
protected boolean isJDKRequestingClass(String name, Class<?> requesting)
{
+ if (isExcluded(requesting))
+ return false;
ClassLoader cl = requesting.getClassLoader();
if (cl == null)
return true;
More information about the jboss-cvs-commits
mailing list