[jboss-cvs] JBossAS SVN: r96661 - projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 20 15:29:48 EST 2009


Author: flavia.rainone at jboss.com
Date: 2009-11-20 15:29:47 -0500 (Fri, 20 Nov 2009)
New Revision: 96661

Modified:
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePlugin.java
Log:
[JBREFLECT-69] Added a check for null class loader to BaseClassePool. This check throws an exception, allowing us to see when the retrieval of the class has been performed on a "trash" CP, i.e., a CP that should have been cleaned up and should be no longer available in the domain and in the registry.
Plus, improved the message of the check that is performed on TranslatableCLIsLocalResourcePlugin for null class loaders.

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPool.java	2009-11-20 20:26:46 UTC (rev 96660)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPool.java	2009-11-20 20:29:47 UTC (rev 96661)
@@ -125,6 +125,12 @@
       boolean trace = logger.isTraceEnabled();
       if (trace) logger.trace(this + " initiating get of " + classname);
 
+      if (this.getClassLoader() == null)
+      {
+         throw new IllegalStateException("Illegal call. " + 
+         " A class cannot be retrieved from ClassPool " + this +
+         " because the corresponding ClassLoader is garbage collected");
+      }
       try
       {
          CtClass clazz = super.get(classname);

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePlugin.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePlugin.java	2009-11-20 20:26:46 UTC (rev 96660)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePlugin.java	2009-11-20 20:29:47 UTC (rev 96661)
@@ -42,7 +42,7 @@
       ClassLoader loader = getPool().getClassLoader();
       if (loader instanceof Translatable == false)
       {
-         throw new IllegalStateException("ClassLoader is not instance of Translatable " + loader);
+         throw new IllegalStateException("ClassLoader of pool " + getPool() +  " is not instance of Translatable " + loader);
       }
       URL url = ((Translatable)getPool().getClassLoader()).getResourceLocally(resourceName);
       if (url == null)




More information about the jboss-cvs-commits mailing list