[jboss-cvs] JBossAS SVN: r64142 - projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployment.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jul 19 13:15:39 EDT 2007


Author: adrian at jboss.org
Date: 2007-07-19 13:15:39 -0400 (Thu, 19 Jul 2007)
New Revision: 64142

Modified:
   projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployment/ScopedClassLoaderDomain.java
Log:
Improved reporting on classloader scoping errors.

Modified: projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployment/ScopedClassLoaderDomain.java
===================================================================
--- projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployment/ScopedClassLoaderDomain.java	2007-07-19 14:57:12 UTC (rev 64141)
+++ projects/aop/trunk/asintegration/src/main/org/jboss/aop/deployment/ScopedClassLoaderDomain.java	2007-07-19 17:15:39 UTC (rev 64142)
@@ -45,22 +45,26 @@
 public class ScopedClassLoaderDomain extends Domain
 {
    
-   WeakReference loader;
+   WeakReference<ClassLoader> loader;
    boolean parentDelegation;
-   ConcurrentHashMap myPerVMAspects = new ConcurrentHashMap();
-   ConcurrentHashMap notMyPerVMAspects = new ConcurrentHashMap();
+   ConcurrentHashMap<String, Object> myPerVMAspects = new ConcurrentHashMap<String, Object>();
+   ConcurrentHashMap<String, Boolean> notMyPerVMAspects = new ConcurrentHashMap<String, Boolean>();
    InterceptionMarkers interceptionMarkers = new InterceptionMarkers();
+   String classLoaderString;
    
    public ScopedClassLoaderDomain(ClassLoader loader, String name, boolean parentDelegation, AspectManager manager, boolean parentFirst)
    {
       super(manager, name, parentFirst);
-      this.loader = new WeakReference(loader);
+      if (loader == null)
+         throw new IllegalArgumentException("Null classloader");
+      this.loader = new WeakReference<ClassLoader>(loader);
       this.parentDelegation = parentDelegation;
+      classLoaderString = loader.toString();
    }
 
    protected ClassLoader getClassLoader()
    {
-      ClassLoader cl = (ClassLoader)loader.get();
+      ClassLoader cl = loader.get();
       if (cl != null)
       {
          return cl;
@@ -73,7 +77,7 @@
       AspectDefinition def = super.internalRemoveAspectDefintion(name);
       if (def != null)
       {
-         Object o = myPerVMAspects.remove(name);
+         myPerVMAspects.remove(name);
       }
    }
 
@@ -166,7 +170,17 @@
    
    private HeirarchicalLoaderRepository3 getScopedRepository()
    {
-      HeirarchicalLoaderRepository3 myRepository = (HeirarchicalLoaderRepository3)((RepositoryClassLoader)getClassLoader()).getLoaderRepository();
-      return myRepository;
+      ClassLoader classloader = getClassLoader();
+      if (classloader == null)
+         throw new IllegalStateException("ClassLoader no longer exists: " + classLoaderString);
+      if (classloader instanceof RepositoryClassLoader == false)
+         throw new IllegalStateException("ClassLoader is not an instanceof RepositoryClassLoader " + classLoaderString);
+      RepositoryClassLoader repositoryClassLoader = (RepositoryClassLoader) classloader;
+      LoaderRepository loaderRepository = repositoryClassLoader.getLoaderRepository();
+      if (loaderRepository == null)
+         throw new IllegalStateException("ClassLoader has been undeployed: " + classLoaderString);
+      if (loaderRepository instanceof HeirarchicalLoaderRepository3 == false)
+         throw new IllegalStateException("Repository " + loaderRepository + " for classlaoder " + classLoaderString + " is not an HeirarchicalLoaderRepository3");
+      return (HeirarchicalLoaderRepository3) loaderRepository;
    }
 }




More information about the jboss-cvs-commits mailing list