[jboss-cvs] JBossAS SVN: r72893 - trunk/aspects/src/main/org/jboss/aop/asintegration/jboss5.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Apr 30 07:53:06 EDT 2008
Author: kabir.khan at jboss.com
Date: 2008-04-30 07:53:06 -0400 (Wed, 30 Apr 2008)
New Revision: 72893
Modified:
trunk/aspects/src/main/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java
Log:
[JBAS-5495] Bootstrap classloader(s) should be valid classloaders
Modified: trunk/aspects/src/main/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java
===================================================================
--- trunk/aspects/src/main/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java 2008-04-30 11:52:32 UTC (rev 72892)
+++ trunk/aspects/src/main/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java 2008-04-30 11:53:06 UTC (rev 72893)
@@ -22,6 +22,11 @@
package org.jboss.aop.asintegration.jboss5;
import java.io.File;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
import javassist.ClassPool;
import javassist.scopedpool.ScopedClassPool;
@@ -32,7 +37,6 @@
import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
import org.jboss.aop.asintegration.JBossIntegration;
import org.jboss.classloading.spi.RealClassLoader;
-import org.jboss.mx.loading.RepositoryClassLoader;
/**
*
@@ -46,7 +50,28 @@
private AOPClassLoaderScopingPolicy policy;
private AspectManager manager = AspectManager.getTopLevelAspectManager();
DefaultTranslator translator = new DefaultTranslator(manager);
+
+ private static final Set<ClassLoader> bootstrapLoaders;
+ static
+ {
+ final Set<ClassLoader> loaders = new HashSet<ClassLoader>();
+
+ AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ public Object run()
+ {
+ ClassLoader loader = JBoss5Integration.class.getClassLoader();
+ while (loader != null)
+ {
+ loaders.add(loader);
+ loader = loader.getParent();
+ }
+ return null;
+ }});
+
+ bootstrapLoaders = Collections.unmodifiableSet(loaders);
+ }
+
public void start()
{
getIntegrationStrategy().start();
@@ -59,19 +84,26 @@
public boolean isValidClassLoader(ClassLoader loader)
{
- boolean isValid = false;
- try
+ if(loader instanceof RealClassLoader)
{
- if(loader instanceof RealClassLoader)
+ if (((RealClassLoader) loader).isValid())
{
- isValid = ((RealClassLoader) loader).isValid();
+ return true;
}
}
- catch (RuntimeException e)
+
+ if (loader == null)
{
- // Annoyingly, BaseClassLoader.isValid() throws an exception if the classloader is invalid
+ //Bootstrap classloader
+ return true;
}
- return isValid;
+
+ if (bootstrapLoaders.contains(loader))
+ {
+ return true;
+ }
+
+ return false;
}
public void setScopingPolicy(AOPClassLoaderScopingPolicy policy)
More information about the jboss-cvs-commits
mailing list