[jboss-cvs] JBossAS SVN: r92662 - in projects/jboss-classpool/trunk/src: main/java/org/jboss/classpool/base and 18 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Aug 21 08:57:01 EDT 2009


Author: flavia.rainone at jboss.com
Date: 2009-08-21 08:57:00 -0400 (Fri, 21 Aug 2009)
New Revision: 92662

Added:
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/AbstractIsLocalResourcePlugin.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/AbstractParentDelegationStrategy.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPoolDomain.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassLoaderIsLocalResourcePlugin.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassLoaderIsLocalResourcePluginFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassPoolToClassPoolDomainAdaptorFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultParentDelegationStrategy.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePlugin.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePluginFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePluginFactoryRegistry.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/ParentDelegationStrategy.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePlugin.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePluginFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/URLClassLoaderIsLocalResourcePlugin.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/URLClassLoaderIsLocalResourcePluginFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/AbstractClassPoolDomain.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolDomain.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolDomainRegistry.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdapter.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdaptorFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/helpers/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/helpers/ClassLoaderUtils.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/AbstractJBossClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/DelegatingClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/NonDelegatingClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/SecurityActions.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/JBossClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvoker.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvokerPoolReference.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/JBoss5ClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/VFSClassLoaderDomainRegistry.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/AbstractClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/AbstractClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/ClassPoolRepository.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/ClassPoolRepositoryCallback.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/SecurityActions.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempJBossClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempJBossDelegatingClassPool.java
Removed:
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolDomain.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolFactoryImpl.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractIsLocalResourcePlugin.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossDelegatingClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractParentDelegationStrategy.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/BaseClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/BaseClassPoolDomain.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassLoaderUtils.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolDomain.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolDomainRegistry.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolRepository.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolRepositoryCallback.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolSearchStrategy.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolToClassPoolDomainAdapter.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolToClassPoolDomainAdaptorFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassLoaderIsLocalResourcePlugin.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassLoaderIsLocalResourcePluginFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassPoolToClassPoolDomainAdaptorFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultParentDelegationStrategy.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DelegatingClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePlugin.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePluginFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePluginFactoryRegistry.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/NonDelegatingClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ParentDelegationStrategy.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/SecurityActions.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TempJBossClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TempJBossDelegatingClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TranslatableClassLoaderIsLocalResourcePlugin.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TranslatableClassLoaderIsLocalResourcePluginFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/URLClassLoaderIsLocalResourcePlugin.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/URLClassLoaderIsLocalResourcePluginFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/LoaderRepositoryUrlUtil.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ScopedJBossClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ScopedRepositoryClassLoaderHelper.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/SecurityActions.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvoker.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvokerPoolReference.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/DomainRegistry.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/RegisterModuleCallback.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ScopedJBoss5ClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/SecurityActions.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ToClassInvoker.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ToClassInvokerPoolReference.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/VFSClassLoaderDomainRegistry.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolDomain.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdaptorFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClParentDelegationStrategy.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/SecurityActions.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/JBossClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvoker.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvokerPoolReference.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/JBoss5ClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/VFSClassLoaderDomainRegistry.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPoolFactory.java
Modified:
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/JBossClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/LoaderRepositoryUrlUtil.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ScopedJBossClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ScopedRepositoryClassLoaderHelper.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/SecurityActions.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/DomainRegistry.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/JBoss5ClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/RegisterModuleCallback.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/ScopedJBoss5ClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/SecurityActions.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/ToClassInvoker.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/ToClassInvokerPoolReference.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClClassPoolDomain.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClClassPoolToClassPoolDomainAdaptorFactory.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPool.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClParentDelegationStrategy.java
   projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/SecurityActions.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/common/ClassFactory.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ClassPoolTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/IsLocalResourcePluginFactoryTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentFirstDelegatingClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentLastDelegatingClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ScopedSiblingDelegatingClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/SimpleDelegatingClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/test/UclClassPoolTest.java
Log:
[JBREFLECT-57] Package rearrangement

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,417 +0,0 @@
-package org.jboss.classpool;
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.WeakHashMap;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.logging.Logger;
-
-/**
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
- * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
- * @version $Revision: 86930 $
- */
-public class AbstractClassPool extends ScopedClassPool
-{
-   protected final Logger logger = Logger.getLogger(this.getClass());
-   
-   /** Classnames of classes that will be created - we do not want to look for these in other pools.
-    * The main use for this is when a class is created in a parent pool, and we then want to 
-    * create a class with the same name in a parent-last child pool. As part of the create process
-    * javassist.ClassPool will check if that class is frozen (which in turn will call getCached()
-    * and get0()). If the classname exists in this map, get0() and getCached() should return null;   
-    */
-   protected final ConcurrentHashMap<String, String> generatedClasses = new ConcurrentHashMap<String, String>();
-
-   protected final ConcurrentHashMap<String, Boolean> localResources = new ConcurrentHashMap<String, Boolean>();
-
-   /** Classnames of classes that have been loaded, but were not woven */
-   protected final ConcurrentHashMap<String, Boolean> loadedButNotWovenClasses = new ConcurrentHashMap<String, Boolean>();
-
-   /** Causes the AbstractClassPool.getCached() method to search all ClassPools registered in the repository */
-   public static final Class<SearchAllRegisteredLoadersSearchStrategy> SEARCH_ALL_STRATEGY = SearchAllRegisteredLoadersSearchStrategy.class;
-
-   /** Causes the AbstractClassPool.getCached() method to search only itself */
-   public static final Class<SearchLocalLoaderLoaderSearchStrategy> SEARCH_LOCAL_ONLY_STRATEGY = SearchLocalLoaderLoaderSearchStrategy.class;
-   
-   private final ClassPoolSearchStrategy searchStrategy;
-   
-   private final Map<AbstractClassPool, Boolean> children = new WeakHashMap<AbstractClassPool, Boolean>();
-   
-   static
-   {
-      ClassPool.doPruning = false;
-      ClassPool.releaseUnmodifiedClassFile = false;
-   }
-
-   public AbstractClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      this(cl, src, repository, false);
-   }
-
-   protected AbstractClassPool(ClassPool src, ScopedClassPoolRepository repository)
-   {
-      this(null, src, repository, true);
-   }
-
-   private AbstractClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, boolean isTemp)
-   {
-      this(cl, src, repository, SEARCH_ALL_STRATEGY, isTemp);
-   }
-
-   public AbstractClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, Class<? extends ClassPoolSearchStrategy> searchStrategy)
-   {
-      this(cl, src, repository, searchStrategy, false);
-   }
-   
-   public AbstractClassPool(ClassPool src, ScopedClassPoolRepository repository, Class<? extends ClassPoolSearchStrategy> searchStrategy)
-   {
-      this(null, src, repository, searchStrategy, true);
-   }
-   
-   private AbstractClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, Class<? extends ClassPoolSearchStrategy> searchStrategy, boolean isTemp)
-   {
-      super(cl, src, repository, isTemp);
-      if (searchStrategy == SEARCH_ALL_STRATEGY)
-      {
-         this.searchStrategy = new SearchAllRegisteredLoadersSearchStrategy();
-      }
-      else if (searchStrategy == SEARCH_LOCAL_ONLY_STRATEGY)
-      {
-         this.searchStrategy = new SearchLocalLoaderLoaderSearchStrategy();
-      }
-      else
-      {
-         try
-         {
-            this.searchStrategy = searchStrategy.newInstance();
-         }
-         catch (Exception e)
-         {
-            throw new RuntimeException("Error instantiating search strategy class " + searchStrategy, e);
-         }
-      }
-      if (logger.isTraceEnabled()) logger.trace(this + " creating pool for loader " + cl + " searchStrategy:" + this.searchStrategy + " isTemp:" + isTemp);
-
-      registerWithParent();
-   }
-   
-   private void registerWithParent()
-   {
-      if (parent != null && parent instanceof AbstractClassPool)
-      {
-         ((AbstractClassPool)parent).children.put(this, Boolean.TRUE);
-      }
-   }
-   
-   private void unregisterWithParent()
-   {
-      if (parent != null && parent instanceof AbstractClassPool)
-      {
-         ((AbstractClassPool)parent).children.remove(this);
-      }
-   }
-   
-   public void registerGeneratedClass(String className)
-   {
-      generatedClasses.put(className, className);
-   }
-
-   public boolean isGeneratedClass(String className)
-   {
-      return generatedClasses.containsKey(className);
-   }
-   
-   public void doneGeneratingClass(String className)
-   {
-      generatedClasses.remove(className);
-   }
-
-   public void close()
-   {
-      super.close();
-      unregisterWithParent();
-      repository.unregisterClassLoader(getClassLoader());
-      
-      for (Iterator<AbstractClassPool> childIterator = children.keySet().iterator(); childIterator.hasNext();)
-      {
-         AbstractClassPool child = childIterator.next();
-         childIterator.remove();
-         if (child.getClassLoader() != null)
-         {
-            child.close();
-         }
-      }
-//      for (Iterator<AbstractClassPool> it = children.keySet().iterator() ; it.hasNext() ; )
-//      {
-//         AbstractClassPool child = it.next();
-//         it.remove();
-//         ClassLoader loader = child.getClassLoader();
-//         if (loader != null)
-//         {
-//            AspectManager.instance().unregisterClassLoader(loader);
-//         }
-//      }
-   }
-
-   public CtClass getCached(String classname)
-   {
-      return searchStrategy.getCached(classname);
-   }
-   
-   /**
-    * Make createCtClass public so that we can override it 
-    */
-//   @Override
-//   public CtClass createCtClass(String classname, boolean useCache)
-//   {
-//      boolean trace = logger.isTraceEnabled();
-//      
-//      if (trace) logger.trace(this + " attempting to create CtClass " + classname);
-//      CtClass clazz = super.createCtClass(classname, useCache);
-//      if (trace) logger.trace(this + " created CtClass " + getClassPoolLogStringForClass(clazz));
-//      
-//      return clazz;
-//   }
-
-   @Override
-   public void cacheCtClass(String classname, CtClass c, boolean dynamic)
-   {
-      boolean trace = logger.isTraceEnabled();
-      if (trace) logger.trace(this + " caching " + classname);
-      // TODO remove this true when ready
-      super.cacheCtClass(classname, c, true);
-      if (dynamic)
-      {
-         if (trace) logger.trace(this + " registering dynamic class " + classname);
-         doneGeneratingClass(classname);
-         String resourcename = getResourceName(classname);
-         localResources.put(resourcename, Boolean.TRUE);
-      }
-   }
-
-   protected boolean includeInGlobalSearch()
-   {
-      return true;
-   }
-
-   protected String getResourceName(String classname)
-   {
-      return ClassLoaderUtils.getResourceName(classname);
-   }
-
-   protected final boolean isLocalResource(String resourceName, boolean trace)
-   {
-      String classResourceName = resourceName;
-      Boolean isLocal = localResources.get(classResourceName);
-      if (isLocal != null)
-      {
-         if (trace) logger.trace(this + " " + resourceName + " is local " + isLocal);
-      
-         return isLocal.booleanValue();
-      }
-      boolean localResource = isLocalClassLoaderResource(classResourceName);
-      localResources.put(classResourceName, localResource ? Boolean.TRUE : Boolean.FALSE);
-      
-      if (trace) logger.trace(this + " " + resourceName + " is local " + localResource);
-      
-      return localResource;
-   }
-
-   protected boolean isLocalClassLoaderResource(String classResourceName)
-   {
-      return getClassLoader().getResource(classResourceName) != null;
-   }
-   
-//   @Override
-//   public synchronized CtClass getLocally(String classname)
-//           throws NotFoundException
-//   {
-//      boolean trace = logger.isTraceEnabled();
-//      if (trace) logger.trace(this + " attempting local get for " + classname);
-//      softcache.remove(classname);
-//      CtClass clazz = (CtClass) classes.get(classname);
-//      if (trace && clazz != null)
-//      {
-//         logger.trace(this + " found " + classname + " in cache");
-//      }
-//      if (clazz == null)
-//      {
-//         clazz = createCtClass(classname, true);
-//         if (clazz == null) throw new NotFoundException(classname);
-//         lockInCache(clazz);//Avoid use of the softclasscache
-//      }
-//
-//      return clazz;
-//   }
-
-//   @Override
-//   protected CtClass getCachedLocally(String classname)
-//   {
-//      if (logger.isTraceEnabled()) logger.trace(this + " checking local cache for " + classname);
-//      return super.getCachedLocally(classname);
-//   }
-
-//   @Override
-//   public void lockInCache(CtClass c)
-//   {
-//      if (logger.isTraceEnabled()) logger.trace(this + " locking in cache " + c.getName());
-//      super.lockInCache(c);
-//   }
-
-//   public void setClassLoadedButNotWoven(String classname)
-//   {
-//      loadedButNotWovenClasses.put(classname, Boolean.TRUE);
-//   }
-//
-//   public boolean isClassLoadedButNotWoven(String classname)
-//   {
-//      return loadedButNotWovenClasses.get(classname) == Boolean.TRUE;
-//   }
-
-//   public static AbstractClassPool createAOPClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-//   {
-//      return (AbstractClassPool)AspectManager.getClassPoolFactory().create(cl, src, repository);
-//   }
-//
-//   public static AbstractClassPool createAOPClassPool(ClassPool src, ScopedClassPoolRepository repository)
-//   {
-//      return (AbstractClassPool)AspectManager.getClassPoolFactory().create(src, repository);
-//   }
-
-   public String toString()
-   {
-      ClassLoader cl = null;
-      try
-      {
-         cl = getClassLoader();
-      }
-      catch(IllegalStateException ignore)
-      {
-      }
-      return this.getClass().getName() + "@" + System.identityHashCode(this) + " " + super.toString() + " - dcl:" + cl;
-   }
-
-  /* public CtClass getClass(String classname) {
-      CtClass clazz;
-      if (classname.charAt(0) == '[')
-      {
-         try
-         {
-            return Descriptor.toCtClass(classname, this);
-         }
-         catch (NotFoundException nfe)
-         {
-            throw new UnreachableStatementException(nfe.getMessage());
-         }
-      }
-      if (classname == null)
-         return null;
-      else
-         clazz = get0(classname, true);
-
-      if (clazz != null)
-      {
-         //clazz.incGetCounter();
-      }
-      return clazz;
-   }*/
-
-   
-//   public CtClass internalGet0(String classname, boolean useCache) throws NotFoundException
-//   {
-//      return super.get0(classname, useCache);
-//   }
-   
-   protected String getClassPoolLogStringForClass(CtClass clazz)
-   {
-      if (clazz == null)
-      {
-         return null;
-      }
-      if (clazz.getClassPool() == null)
-      {
-         return null;
-      }
-      return clazz.getClassPool().toString();
-   }
-
-   /**
-    * Contains the original AbstractClassPool.getCached()
-    * 
-    */
-   // NOTE: identical to ScopedClassPoolRepository, with two differences:
-   // 1. This method uses the shortcuts isLocalResource and getResourceName
-   // 2. This method uses the Repository.includeInGlobalSearch method
-   private class SearchAllRegisteredLoadersSearchStrategy implements ClassPoolSearchStrategy
-   {
-      Logger logger = Logger.getLogger(this.getClass());
-      public CtClass getCached(String classname)
-      {
-         boolean trace = logger.isTraceEnabled();
-         
-         if (trace) logger.trace(this + " " + AbstractClassPool.this + " searching all pools for " + classname);
-         
-         CtClass clazz = getCachedLocally(classname);
-         if (clazz == null && getClassLoader0() != null &&
-               !isLocalResource(getResourceName(classname), trace) &&
-               !generatedClasses.containsKey(classname))
-         {
-            Map<ClassLoader, ClassPool> registeredCLs = repository.getRegisteredCLs();
-            synchronized (registeredCLs)
-            {
-               for(ClassPool pl : registeredCLs.values())
-               {
-                  AbstractClassPool pool = (AbstractClassPool) pl;
-                  if (pool.isUnloadedClassLoader())
-                  {
-                     if (trace) logger.trace(this + " pool is unloaded " + pool);
-                     repository.unregisterClassLoader(pool.getClassLoader());
-                     continue;
-                  }
-
-                  //Do not check classpools for scoped classloaders
-                  if (!pool.includeInGlobalSearch())
-                  {
-                     if (trace) logger.trace(this + " pool is scoped " + pool);
-                     continue;
-                  }
-
-                  if (trace) logger.trace(this + " " + AbstractClassPool.this + " searching for " + classname + " in " + pool);
-                  clazz = pool.getCachedLocally(classname);
-                  if (clazz != null)
-                  {
-                     break;
-                  }
-               }
-            }
-         }
-         if (trace) logger.trace(this + " " + AbstractClassPool.this + " found " + classname + " in pool" + getClassPoolLogStringForClass(clazz));
-         return clazz;
-      }
-   }
-   
-   /**
-    * Checks only the ClassPool's cache 
-    */
-   private class SearchLocalLoaderLoaderSearchStrategy implements ClassPoolSearchStrategy
-   {
-      Logger logger = Logger.getLogger(this.getClass());
-
-      public CtClass getCached(String classname)
-      {
-         boolean trace = logger.isTraceEnabled();
-         
-         if (trace) logger.trace(this + " " + AbstractClassPool.this + " searching just this pool for " + classname);
-         CtClass clazz = getCachedLocally(classname);
-         if (trace) logger.trace(this + " " + AbstractClassPool.this + " found " + classname + " in pool" + getClassPoolLogStringForClass(clazz));
-         return clazz;
-      }
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolDomain.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolDomain.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolDomain.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,124 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import org.jboss.logging.Logger;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.NotFoundException;
-
-
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public abstract class AbstractClassPoolDomain implements ClassPoolDomain
-{
-   protected final Logger logger = Logger.getLogger(this.getClass());
-   
-   abstract CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, boolean create);
-   
-   abstract CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace);
-   
-   abstract CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace);
-   
-   abstract void addClassPool(DelegatingClassPool pool);
-   
-   abstract void removeClassPool(DelegatingClassPool pool);
-
-   
-   protected CtClass getCachedOrCreateFromPoolParent(BaseClassPool initiatingPool, String classname, boolean create, boolean trace)
-   {
-      if (initiatingPool == null)
-      {
-         if (trace) logger.trace(this + " get cached or create " + classname + " from pool parent - no initiating pool");
-         return null;
-      }
-      ClassPool parentPool = initiatingPool.getParent();
-      if (parentPool == null)
-      {
-         if (trace) logger.trace(this + " get cached or create " + classname + " from pool parent - no parent pool");
-         return null;
-      }
-       
-      return getCachedOrCreateFromPool(parentPool, classname, create, trace);
-   }
-
-   
-   protected CtClass getCachedOrCreateFromPool(ClassPool pool, String classname, boolean create, boolean trace)
-   {
-      if (pool instanceof BaseClassPool)
-      {
-         return getCachedOrCreateFromPool((BaseClassPool)pool, classname, create, trace);
-      }
-      try
-      {
-         //This will check the parents
-         if (trace) logger.trace(this + " get cached or create " + classname + " from non-BaseClassPool pool " + pool);
-         CtClass clazz = pool.get(classname);
-         if (trace) logger.trace(this + " got cached or create " + classname + " from non-BaseClassPool pool " + clazz.getClassPool());
-         return clazz;
-      }
-      catch(NotFoundException e)
-      {
-         return null;
-      }
-   }
-
-   protected CtClass getCachedOrCreateFromPool(BaseClassPool pool, String classname, boolean create, boolean trace)
-   {
-      if (pool == null)
-      {
-         if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - no pool");
-         return null;
-      }
-      
-      CtClass clazz = null;
-      if (!pool.childFirstLookup)
-      {
-         if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - checking parent (parentFirst)");
-         clazz = getCachedOrCreateFromPoolParent(pool, classname, create, trace); 
-      }
-      
-      if (clazz == null)
-      {
-         //We can use the exposed methods directly to avoid the overhead of NotFoundException
-         if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - checking cache");
-         clazz = pool.getCached(classname);
-         if (clazz == null && create)
-         {
-            if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - creating");
-            clazz = pool.createCtClass(classname, true);
-         }
-      }
-      
-      if (clazz == null && pool.childFirstLookup)
-      {
-         if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - checking parent (parentLast)");
-         clazz = getCachedOrCreateFromPoolParent(pool, classname, create, trace); 
-      }
-      return clazz;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,17 +0,0 @@
-package org.jboss.classpool;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-// TODO: check why ScopedClassPoolRepository and not AbstractClassPoolRepository
-public interface AbstractClassPoolFactory extends ScopedClassPoolFactory
-{
-
-   public abstract AbstractClassPool create(ClassLoader cl, ClassPool src,
-         ScopedClassPoolRepository repository);
-
-   public abstract AbstractClassPool create(ClassPool src,
-         ScopedClassPoolRepository repository);
-
-}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolFactoryImpl.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolFactoryImpl.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolFactoryImpl.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,53 +0,0 @@
-/*
-  * JBoss, Home of Professional Open Source
-  * Copyright 2005, JBoss Inc., and individual contributors as indicated
-  * by the @authors tag. See the copyright.txt in the distribution for a
-  * full listing of individual contributors.
-  *
-  * This is free software; you can redistribute it and/or modify it
-  * under the terms of the GNU Lesser General Public License as
-  * published by the Free Software Foundation; either version 2.1 of
-  * the License, or (at your option) any later version.
-  *
-  * This software is distributed in the hope that it will be useful,
-  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  * Lesser General Public License for more details.
-  *
-  * You should have received a copy of the GNU Lesser General Public
-  * License along with this software; if not, write to the Free
-  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  */
-package org.jboss.classpool;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-/**
- * Comment
- *
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
- * @version $Revision: 55872 $
- *
- **/
-public class AbstractClassPoolFactoryImpl implements AbstractClassPoolFactory
-{
-   /* (non-Javadoc)
-    * @see org.jboss.classpool.AbstractClassPoolFactory#create(java.lang.ClassLoader, javassist.ClassPool, javassist.scopedpool.ScopedClassPoolRepository)
-    */
-   public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      return new AbstractClassPool(cl, src, repository);
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.classpool.AbstractClassPoolFactory#create(javassist.ClassPool, javassist.scopedpool.ScopedClassPoolRepository)
-    */
-   public AbstractClassPool create(ClassPool src, ScopedClassPoolRepository repository)
-   {
-      return new AbstractClassPool(src, repository);
-   }   
-}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractIsLocalResourcePlugin.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractIsLocalResourcePlugin.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractIsLocalResourcePlugin.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,78 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import java.net.URL;
-
-import javassist.ClassPool;
-
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public abstract class AbstractIsLocalResourcePlugin implements IsLocalResourcePlugin
-{
-   private final BaseClassPool pool;
-   
-   public AbstractIsLocalResourcePlugin(BaseClassPool pool)
-   {
-      this.pool = pool;
-      initialise();
-   }
-
-   protected void initialise()
-   {
-      
-   }
-   
-   protected AbstractClassPool getPool()
-   {
-      return pool;
-   }
-   
-   /**
-    * Checks if the resource can be found in the parent classpool's loader
-    * and returns true if it either does not exist in the parent or if
-    * the parent has a different URL for the resource 
-    */
-   protected boolean isSameInParent(String classResourceName, URL foundURL)
-   {
-      ClassPool  parent = pool.getParent(); 
-      if (parent != null)
-      {
-         ClassLoader parentLoader = parent.getClassLoader();
-         URL parentURL = parentLoader.getResource(classResourceName);
-         if (parentURL == null)
-         {
-            return false;
-         }
-         if (parentURL.equals(foundURL))
-         {
-            return true;
-         }
-      }
-      
-      return false;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossClassPoolFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,60 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.logging.Logger;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public abstract class AbstractJBossClassPoolFactory implements AbstractClassPoolFactory
-{
-   protected final Logger log = Logger.getLogger(this.getClass().getName());
-   
-   protected ClassPool getCreateParentClassPools(final ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      //Make sure that we get classpools for all the parent classloaders
-      if (cl == null)
-      {
-         return ClassPool.getDefault();
-      }
-      ClassLoader parent = SecurityActions.getParent(cl);
-
-      if (parent != null)
-      {
-         return repository.registerClassLoader(parent);
-      }
-      return src;
-   }
-   
-   public AbstractClassPool create(ClassPool src, ScopedClassPoolRepository repository)
-   {
-      return new TempJBossClassPool(src, repository);
-   }
-
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossDelegatingClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossDelegatingClassPoolFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossDelegatingClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,55 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public abstract class AbstractJBossDelegatingClassPoolFactory extends AbstractJBossClassPoolFactory
-{
-   // TODO: check if this is needed
-   /*protected ClassPool getCreateParentClassPools(final ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      //Make sure that we get classpools for all the parent classloaders
-      if (cl == null)
-      {
-         return ClassPool.getDefault();
-      }
-      ClassLoader parent = SecurityActions.getParent(cl);
-
-      if (parent != null)
-      {
-         return repository.registerClassLoader(parent);
-      }
-      return src;
-   }*/
-   
-   public AbstractClassPool create(ClassPool src, ScopedClassPoolRepository repository)
-   {
-      return new TempJBossDelegatingClassPool(src, repository);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractParentDelegationStrategy.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractParentDelegationStrategy.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractParentDelegationStrategy.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,92 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.CtClass;
-
-import org.jboss.logging.Logger;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public abstract class AbstractParentDelegationStrategy implements ParentDelegationStrategy
-{
-   protected final Logger logger = Logger.getLogger(this.getClass().getName());
-   private AbstractClassPoolDomain domain;
-   private AbstractClassPoolDomain parent;
-   
-   protected AbstractParentDelegationStrategy(ClassPoolDomain parent, ClassPoolToClassPoolDomainAdaptorFactory adaptorFactory)
-   {
-      if (parent == null)
-      {
-         if (adaptorFactory == null)
-         {
-            throw new IllegalStateException("Null parent and null adaptorFactory");
-         }
-         this.parent = adaptorFactory.createAdaptor();
-      }
-      else 
-      {
-         if (parent instanceof AbstractClassPoolDomain == false)
-         {
-            throw new IllegalArgumentException("Parent must implement AbstractClassPoolDomain");         
-         }
-         this.parent = (AbstractClassPoolDomain)parent;
-      }
-      
-      if (this.parent == null)
-      {
-         throw new IllegalStateException("Parent was not set");
-      }
-   }
-   
-   protected boolean hasParent()
-   {
-      if (logger.isTraceEnabled()) logger.trace(this + " " + getDomain() + " hasParent " + parent != null);
-      return parent != null;
-   }
-   
-   protected AbstractClassPoolDomain getDomain()
-   {
-      return domain;
-   }
-   
-   public CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
-   {
-      return parent.getCachedOrCreate(initiatingPool, classname, resourceName, create, trace);
-   }
-   
-   public void setDomain(AbstractClassPoolDomain domain)
-   {
-      if (domain == null)
-      {
-         throw new IllegalArgumentException("Null domain");
-      }
-      if (this.domain != null)
-      {
-         throw new IllegalArgumentException("Cannot change domain");
-      }
-      this.domain = domain;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/BaseClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/BaseClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/BaseClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,158 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.NotFoundException;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-
-/**
- * Intermediate class containing commonly needed functionality for the new classpools. I don't want to
- * modify AbstractClassPool too much
- *  
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class BaseClassPool extends AbstractClassPool
-{
-   private IsLocalResourcePlugin isLocalResourcePlugin;
-   
-   public BaseClassPool(ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository)
-   {
-      super(cl, parent, repository);
-      isLocalResourcePlugin = IsLocalResourcePluginFactoryRegistry.getPluginFactory(cl).create(this);
-      if (logger.isTraceEnabled()) logger.trace(this + " isLocalResourcePlugin:" + isLocalResourcePlugin);
-   }
-
-   public BaseClassPool(ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository, Class<? extends ClassPoolSearchStrategy> searchStrategy)
-   {
-      super(cl, parent, repository, searchStrategy);
-      isLocalResourcePlugin = IsLocalResourcePluginFactoryRegistry.getPluginFactory(cl).create(this);
-      if (logger.isTraceEnabled()) logger.trace(this + " isLocalResourcePlugin:" + isLocalResourcePlugin);
-   }
-   
-   
-   /**
-    * Stores the classes created in the ScopedClassPool cache.
-    */
-   @Override
-   public CtClass createCtClass(String classname, boolean useCache)
-   {
-      CtClass clazz = super.createCtClass(classname, useCache);
-      if (clazz != null)
-      {
-         lockInCache(clazz);
-      }
-      return clazz;
-   }
-
-   /**
-    * Uses the parent ClassPool, if available, to create the CtClass representing
-    * {@code classname}.
-    * 
-    * @param classname the name of the queried CtClass
-    * @param useCache  whether the ScopedClassPool cache should be used to search for the CtClass
-    * @param trace     enables tracing
-    * @return          a {@code CtClass} representing {@code classname}
-    */
-   protected CtClass createParentCtClass(String classname, boolean useCache, boolean trace)
-   {
-      if (parent == null)
-      {
-         return null;
-      }
-
-      //Make parent create class
-      if (parent instanceof BaseClassPool)
-      {
-         return ((BaseClassPool)parent).createCtClass(classname, useCache);
-      }
-      else
-      {
-         return plainParentGet(classname);
-      }
-   }
-   
-   private CtClass plainParentGet(String classname)
-   {
-      try
-      {
-         return parent.get(classname);
-      }
-      catch (NotFoundException e)
-      {
-      }
-      return null;
-   }
-
-   public ClassPool getParent()
-   {
-      return parent;
-   }
-   
-   @Override
-   protected boolean isLocalClassLoaderResource(String classResourceName)
-   {
-      return isLocalResourcePlugin.isMyResource(classResourceName);
-   }
-
-   @Override
-   public final CtClass get(String classname) throws NotFoundException 
-   {
-      boolean trace = logger.isTraceEnabled();
-      if (trace) logger.trace(this + " initiating get of " + classname);
-
-      try
-      {
-         CtClass clazz = super.get(classname);
-         if (trace)
-         {
-            logger.trace(this + " completed get of " + classname + " " + getClassPoolLogStringForClass(clazz));
-         }
-         return clazz;
-      }
-      catch (NotFoundException e)
-      {
-         // AutoGenerated
-         NotFoundException wrapped = new NotFoundException(e.getMessage() + " could not be found from " + this);
-         wrapped.setStackTrace(e.getStackTrace());
-         throw wrapped;
-      }
-   }
-   
-   @Override
-   public CtClass get0(String classname, boolean useCache) throws NotFoundException
-   {
-      return super.get0(classname, useCache);
-   }
-   
-   @Override
-   public void close()
-   {
-      super.close();
-
-      if (logger.isTraceEnabled()) logger.trace(this + " closing");
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/BaseClassPoolDomain.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/BaseClassPoolDomain.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/BaseClassPoolDomain.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,152 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javassist.CtClass;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class BaseClassPoolDomain extends AbstractClassPoolDomain
-{
-   private String domainName;
-   
-   private List<DelegatingClassPool> delegatingPools = new ArrayList<DelegatingClassPool>();
-   
-   private ParentDelegationStrategy parentDelegationStrategy;
-
-   public BaseClassPoolDomain(String domainName, ClassPoolDomain parent, boolean parentFirst)
-   {
-      this(domainName, 
-            new DefaultParentDelegationStrategy(
-                  parent, 
-                  parentFirst, 
-                  DefaultClassPoolToClassPoolDomainAdaptorFactory.getInstance())
-      );
-   }
-   
-   protected BaseClassPoolDomain(String domainName, ParentDelegationStrategy parentDelegationStrategy)
-   {
-      this.domainName = domainName;
-      this.parentDelegationStrategy = parentDelegationStrategy;
-      parentDelegationStrategy.setDomain(this);
-      if (logger.isTraceEnabled()) logger.trace("Created " + this + " parentDelegationStrategy:" + parentDelegationStrategy);
-   }
-   
-   @Override
-   synchronized void addClassPool(DelegatingClassPool pool)
-   {
-      if (!delegatingPools.contains(pool))
-      {
-         if (logger.isTraceEnabled()) logger.trace(this + " adding pool " + pool);
-         delegatingPools.add(pool);
-      }
-   }
-   
-   @Override
-   protected synchronized void removeClassPool(DelegatingClassPool pool)
-   {
-      if (logger.isTraceEnabled()) logger.trace(this + " removing pool " + pool);
-      delegatingPools.remove(pool);
-   }
-   
-   @Override
-   synchronized CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, boolean create)
-   {
-      boolean trace = logger.isTraceEnabled();
-      String resourceName = ClassLoaderUtils.getResourceName(classname);
-      
-      CtClass clazz = getCachedOrCreate(initiatingPool, classname, resourceName, create, trace);
-      
-      if (clazz == null)
-      {
-         clazz = getCachedOrCreateFromPoolParent(initiatingPool, classname, create, trace);
-      }
-      return clazz;
-   }
-   
-   @Override
-   protected CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
-   {
-      if (trace) logger.trace(this + " looking for " + classname);
-         
-      CtClass clazz = null;
-      if (isParentBefore(classname))
-      {
-         if (trace) logger.trace(this + " checking parent first for " + classname);
-         clazz = getCachedOrCreateFromParent(initiatingPool, classname, resourceName, create, trace);
-      }
-      if (clazz == null)
-      {
-         List<DelegatingClassPool> pools = getPoolsForClassName(classname);
-         if (pools.size() > 0)
-         {
-            for (DelegatingClassPool pool : pools)
-            {
-               clazz = pool.loadLocally(classname, resourceName, create);
-               if (clazz != null)
-               {
-                  break;
-               }
-            }
-         }
-      }
-      if (clazz == null && isParentAfter(classname))
-      {
-         if (trace) logger.trace(this + " checking parent last for " + classname);
-         clazz = getCachedOrCreateFromParent(initiatingPool, classname, resourceName, create, trace);
-      }
-      if (trace) logger.trace(this + " found " + classname + " in " + (clazz == null ? "null" : clazz.getClassPool()));
-      return clazz;
-   }
-
-   @Override
-   protected CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
-   {
-      return parentDelegationStrategy.getCachedOrCreateFromParent(initiatingPool, classname, resourceName, create, trace);
-   }
-   
-   public String toString()
-   {
-      return "[" + super.toString() + " name:" + domainName + "]";
-   }
-
-   protected boolean isParentBefore(String classname)
-   {
-      return parentDelegationStrategy.isParentBefore(classname);
-   }
-   
-   protected boolean isParentAfter(String classname)
-   {
-      return parentDelegationStrategy.isParentAfter(classname);
-   }
-   
-   protected List<DelegatingClassPool> getPoolsForClassName(String classname)
-   {
-      return delegatingPools;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassLoaderUtils.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassLoaderUtils.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassLoaderUtils.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,99 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.classpool;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import javassist.CtClass;
-import javassist.bytecode.Descriptor;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class ClassLoaderUtils
-{
-   private static final Set<String> primitiveNames;
-   static
-   {
-      Set<String> temp = new HashSet<String>();
-      temp.add(CtClass.booleanType.getName());
-      temp.add(CtClass.byteType.getName());
-      temp.add(CtClass.charType.getName());
-      temp.add(CtClass.doubleType.getName());
-      temp.add(CtClass.floatType.getName());
-      temp.add(CtClass.intType.getName());
-      temp.add(CtClass.longType.getName());
-      temp.add(CtClass.shortType.getName());
-      temp.add(CtClass.voidType.getName());
-      primitiveNames = Collections.unmodifiableSet(temp); 
-   }
-   
-   public static String getResourceName(String classname)
-   {
-      final String name = stripArrayFromClassName(classname);
-      final int lastIndex = name.lastIndexOf('$');
-      if (lastIndex < 0)
-      {
-         return name.replaceAll("[\\.]", "/") + ".class";
-      }
-      else
-      {
-         return name.substring(0, lastIndex).replaceAll("[\\.]", "/") + name.substring(lastIndex) + ".class";
-      }
-   }
-
-   public static String getPackageName(String classname)
-   {
-      final int last = classname.lastIndexOf('.');
-      if (last < 0)
-      {
-         return "";
-      }
-      else
-      {
-         return classname.substring(0, last);
-      }
-   }
-   
-   public static String stripArrayFromClassName(String classname)
-   {
-      if (classname.charAt(0) == '[')
-      {
-         return Descriptor.toClassName(classname);
-      }
-      if (classname.endsWith("[]"))
-      {
-         return classname.substring(0, classname.indexOf("[]"));
-      }
-      return classname;
-   }
-   
-   public static boolean isPrimitiveType(String classname)
-   {
-      final String name = stripArrayFromClassName(classname);
-      return primitiveNames.contains(name);
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolDomain.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolDomain.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolDomain.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,31 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface ClassPoolDomain
-{
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolDomainRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolDomainRegistry.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolDomainRegistry.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,59 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import java.lang.ref.WeakReference;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class ClassPoolDomainRegistry
-{
-   final static ClassPoolDomainRegistry INSTANCE = new ClassPoolDomainRegistry();
-   
-   final Map<Object, WeakReference<ClassPoolDomain>> domains = new WeakHashMap<Object, WeakReference<ClassPoolDomain>>();
-   
-   public static ClassPoolDomainRegistry getInstance()
-   {
-      return INSTANCE;
-   }
-   
-   public synchronized ClassPoolDomain getDomain(Object key)
-   {
-      WeakReference<ClassPoolDomain> ref = domains.get(key);
-      if (ref == null)
-      {
-         return null;
-      }
-      return ref.get();
-   }
-   
-   public synchronized void addClassPoolDomain(Object key, ClassPoolDomain domain)
-   {
-      domains.put(key, new WeakReference<ClassPoolDomain>(domain));
-   }
-   
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolRepository.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolRepository.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolRepository.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,184 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */ 
-package org.jboss.classpool;
-
-import java.util.Map;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
-import javassist.scopedpool.ScopedClassPoolRepository;
-import javassist.scopedpool.ScopedClassPoolRepositoryImpl;
-
-/**
- * Singleton classpool repository
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 87799 $
- */
-public class ClassPoolRepository implements ScopedClassPoolRepository
-{
-   //private static final Logger logger = Logger.getLogger(ClassPoolRepository.class);
-   
-   private final static ClassPoolRepository instance = new ClassPoolRepository();
-   
-   /** The classes per classppol */
-   //protected final HashMap<ClassLoader, HashSet<Class<?>>> ucl2classes = new HashMap<ClassLoader, HashSet<Class<?>>>();
-
-   private ScopedClassPoolRepository delegate;
-   private ClassPoolRepositoryCallback callback;
-
-   public static ClassPoolRepository getInstance()
-   {
-      return instance;
-   }
-   
-   private ClassPoolRepository()
-   {
-      this.delegate = ScopedClassPoolRepositoryImpl.getInstance();
-      //This was needed when jboss-aop.jar was deployed in the jboss/lib directory since the AspectManager bean had no chance to initialise it
-      delegate.setClassPoolFactory(new AbstractClassPoolFactoryImpl());
-      //      if (!setJBossSpecificStartupVariables())
-//      {
-//         delegate.setClassPoolFactory(new AbstractClassPoolFactory());
-//      }
-   }
-
-//   private boolean setJBossSpecificStartupVariables()
-//   {
-//      //We are running within JBoss 5, let's default to the JBossClassPoolFactory and set the ScopedClassPoolHelper
-//      //so that we get correct behaviour before the AspectManager service has been deployed
-//      try
-//      {
-//         Class jbcpf = Class.forName("org.jboss.aop.deployment.JBossClassPoolFactory");
-//         ScopedClassPoolFactory factory = (ScopedClassPoolFactory)jbcpf.newInstance();
-//         
-//         Class hlpr = Class.forName("org.jboss.aop.deployment.JBossScopedClassLoaderHelper");
-//         AOPScopedClassLoaderHelper helper = (AOPScopedClassLoaderHelper)hlpr.newInstance();
-//         delegate.setClassPoolFactory(factory);
-//         AspectManager.scopedCLHelper = helper;
-//         return true;
-//      }
-//      catch (Exception e)
-//      {
-//      }
-//      return false;//Not running in JBoss probably
-//   }
-   
-   public void setClassPoolFactory(ScopedClassPoolFactory factory)
-   {
-      delegate.setClassPoolFactory(factory);
-   }
-   
-   public ScopedClassPoolFactory getClassPoolFactory()
-   {
-      return delegate.getClassPoolFactory();
-   }
-   
-   public void setClassPoolRepositoryCallback(ClassPoolRepositoryCallback callback)
-   {
-      this.callback = callback;
-   }
-   
-   public ClassPoolRepositoryCallback getClassPoolRepositoryCallback()
-   {
-      return this.callback;
-   }
-
-   public boolean isPrune()
-   {
-      return delegate.isPrune();
-   }
-
-   public void setPrune(boolean prune)
-   {
-      delegate.setPrune(prune);
-   }
-
-   public ScopedClassPool createScopedClassPool(ClassLoader cl, ClassPool src)
-   {
-      return delegate.createScopedClassPool(cl, src);
-   }
-
-   public ClassPool findClassPool(ClassLoader cl)
-   {
-      return delegate.findClassPool(cl);
-   }
-   
-   /**
-    * Get the registered classloaders
-    * 
-    * @return the registered classloaders
-    */
-   public Map<ClassLoader, ClassPool> getRegisteredCLs()
-   {
-      return delegate.getRegisteredCLs();
-   }
-
-   /**
-    * This method will check to see if a register classloader has been undeployed (as in JBoss)
-    */
-   public void clearUnregisteredClassLoaders()
-   {
-      delegate.clearUnregisteredClassLoaders();
-   }
-   
-   public ClassPool registerClassLoader(ClassLoader classLoader)
-   {
-      if (classLoader == null)
-      {
-         classLoader = SecurityActions.getContextClassLoader();
-      }
-      ClassPool classPool = delegate.registerClassLoader(classLoader);
-      if (callback != null)
-      {
-         callback.classLoaderRegistered(classLoader);
-      }
-      return classPool;
-   }
-
-   public void unregisterClassLoader(ClassLoader classLoader)
-   {
-      delegate.unregisterClassLoader(classLoader);
-      if (callback != null)
-      {
-         callback.classLoaderUnregistered(classLoader);
-      }
-   }
-   
-   /*public void registerClass(Class<?> clazz)
-   {
-      ClassLoader classLoader = SecurityActions.getClassLoader(clazz);
-      HashSet<Class<?>> classes = ucl2classes.get(classLoader);
-      if (classes == null)
-      {
-         classes = new HashSet<Class<?>>();
-         ucl2classes.put(classLoader, classes);
-      }
-      classes.add(clazz);
-   }*/
-
-   /*public void perfomUnregisterClassLoader(ClassLoader cl)
-   {
-      ucl2classes.remove(cl);
-   }*/
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolRepositoryCallback.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolRepositoryCallback.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolRepositoryCallback.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,34 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */ 
-package org.jboss.classpool;
-
-
-/**
- * Singleton classpool repository
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 87799 $
- */
-public interface ClassPoolRepositoryCallback {
-   public void classLoaderRegistered(ClassLoader classLoader);
-   public void classLoaderUnregistered(ClassLoader classLoader);
-}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolSearchStrategy.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolSearchStrategy.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolSearchStrategy.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,34 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.CtClass;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface ClassPoolSearchStrategy
-{
-   CtClass getCached(String classname);
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolToClassPoolDomainAdapter.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolToClassPoolDomainAdapter.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolToClassPoolDomainAdapter.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,98 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-
-/**
- * Adapts a ClassPool to a ClassPoolDomain, i.e., this class represents an
- * unitary ClassPoolDomain.
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class ClassPoolToClassPoolDomainAdapter extends AbstractClassPoolDomain
-{
-   protected ClassPool pool;
-   
-   public ClassPoolToClassPoolDomainAdapter()
-   {
-      this.pool = initialiseParentClassLoader();
-      if (logger.isTraceEnabled()) logger.trace("Created " + this);
-      validate();
-   }
-   
-   public ClassPoolToClassPoolDomainAdapter(ClassPool pool)
-   {
-      this.pool = pool;
-      if (logger.isTraceEnabled()) logger.trace("Created " + this);
-      validate();
-   }
-
-   private void validate()
-   {
-      if (pool == null)
-      {
-         throw new IllegalStateException("Null parent classpool");
-      }
-   }
-   
-   public ClassPool initialiseParentClassLoader()
-   {
-      return ClassPool.getDefault();
-   }
-   
-   public void addClassPool(DelegatingClassPool pool)
-   {
-      throw new IllegalStateException("Cannot add pools to the domain adaptor");
-   }
-
-   
-   synchronized CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
-   {
-      return getCachedOrCreateFromPool(pool, classname, create, trace);
-   }
-
-   @Override
-   CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
-   {
-      return null;
-   }
-
-   void removeClassPool(DelegatingClassPool pool)
-   {
-      throw new IllegalStateException("Cannot remove pools from the domain adaptor");
-   }
-
-   public String toString()
-   {
-      return "ClassPoolToDomainAdapter[" + System.identityHashCode(this) + " " + pool.toString() + "]";
-   }
-
-   @Override
-   CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, boolean create)
-   {
-      throw new IllegalStateException("Should never be called");
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolToClassPoolDomainAdaptorFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolToClassPoolDomainAdaptorFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolToClassPoolDomainAdaptorFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,32 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface ClassPoolToClassPoolDomainAdaptorFactory
-{
-   ClassPoolToClassPoolDomainAdapter createAdaptor();
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassLoaderIsLocalResourcePlugin.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassLoaderIsLocalResourcePlugin.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassLoaderIsLocalResourcePlugin.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,42 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-/**
- * 
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class DefaultClassLoaderIsLocalResourcePlugin extends AbstractIsLocalResourcePlugin implements IsLocalResourcePlugin
-{
-   public DefaultClassLoaderIsLocalResourcePlugin(BaseClassPool pool)
-   {
-      super(pool);
-   }
-
-   public boolean isMyResource(String resourceName)
-   {
-      return getPool().getClassLoader().getResource(resourceName) != null;
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassLoaderIsLocalResourcePluginFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassLoaderIsLocalResourcePluginFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassLoaderIsLocalResourcePluginFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,37 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class DefaultClassLoaderIsLocalResourcePluginFactory implements IsLocalResourcePluginFactory
-{
-
-   public IsLocalResourcePlugin create(BaseClassPool pool)
-   {
-      return new DefaultClassLoaderIsLocalResourcePlugin(pool);
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassPoolToClassPoolDomainAdaptorFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassPoolToClassPoolDomainAdaptorFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassPoolToClassPoolDomainAdaptorFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,48 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class DefaultClassPoolToClassPoolDomainAdaptorFactory implements ClassPoolToClassPoolDomainAdaptorFactory
-{
-   private static final DefaultClassPoolToClassPoolDomainAdaptorFactory INSTANCE = new DefaultClassPoolToClassPoolDomainAdaptorFactory();
-   
-   private DefaultClassPoolToClassPoolDomainAdaptorFactory()
-   {
-      
-   }
-   
-   public static ClassPoolToClassPoolDomainAdaptorFactory getInstance()
-   {
-      return INSTANCE;
-   }
-   
-   public ClassPoolToClassPoolDomainAdapter createAdaptor()
-   {
-      return new ClassPoolToClassPoolDomainAdapter();
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultParentDelegationStrategy.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultParentDelegationStrategy.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultParentDelegationStrategy.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,51 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-class DefaultParentDelegationStrategy extends AbstractParentDelegationStrategy
-{
-   boolean parentFirst;
-   DefaultParentDelegationStrategy(ClassPoolDomain parent, boolean parentFirst, ClassPoolToClassPoolDomainAdaptorFactory adaptorFactory)
-   {
-      super(parent, adaptorFactory);
-      this.parentFirst = parentFirst;
-   }
-   
-   public boolean isParentBefore(String classname)
-   {
-      boolean isParentBefore = hasParent() && parentFirst == true;
-      if (logger.isTraceEnabled()) logger.trace(this + " " + getDomain() + " isParentBefore " + isParentBefore);
-      return isParentBefore;
-   }
-   
-   public boolean isParentAfter(String classname)
-   {
-      boolean isParentAfter = hasParent() && parentFirst == false;
-      if (logger.isTraceEnabled()) logger.trace(this + " " + getDomain() + " isParentAfter " + isParentAfter);
-      return isParentAfter;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DelegatingClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DelegatingClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,129 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.NotFoundException;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-/**
- * Base class for classpools backed by a domain
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class DelegatingClassPool extends BaseClassPool
-{
-   private final AbstractClassPoolDomain domain;
-   
-   private boolean closed;
-   
-   public DelegatingClassPool(ClassPoolDomain domain, ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository)
-   {
-      super(cl, parent, repository);
-      if (domain == null)
-      {
-         throw new IllegalArgumentException("Domain was null");
-      }
-      if (domain instanceof AbstractClassPoolDomain == false)
-      {
-         throw new IllegalArgumentException("Domain must implement AbstractClassPoolDomain");
-      }
-      this.domain = (AbstractClassPoolDomain)domain;
-      if (logger.isTraceEnabled()) logger.trace(this + " domain:" + this);
-      this.domain.addClassPool(this);
-   }
-
-   public CtClass loadLocally(String classname, String resourceName, boolean create)
-   {
-      boolean trace = logger.isTraceEnabled();
-      if (trace) logger.trace(this + " attempt to load locally " + classname);
-         
-      CtClass clazz = null;
-      if (isLocalResource(resourceName, trace))
-      {
-         clazz = getCachedLocally(classname);
-         if (clazz == null && create)
-         {
-            clazz = createCtClass(classname, true);
-         }
-      }
-      if (trace) logger.trace(this + " loaded locally " + classname + " " + getClassPoolLogStringForClass(clazz));
-      return clazz;
-   }
-   
-   /**
-    * Overrides ClassPool.get0() so that we can look up classes without caching them in the initiating pool.
-    * The DelgatingClassPool + DomainClassPool handle the caching in the correct pool + handles the 
-    * parentFirst functionality
-    */
-   @Override
-   public synchronized CtClass get0(String classname, boolean useCache) throws NotFoundException
-   {
-      if (isGeneratedClass(classname))
-      {
-         return null;
-      }
-      CtClass clazz = domain.getCachedOrCreate(this, classname, true);
-      if (clazz == null)
-      {
-         //It is probably a generated proxy. The package name can be different (for example if it is
-         //a proxy for a java system class) than the package names exported by the loaders.
-         //TODO It should be possible to remove this once these have been done:
-         //https://jira.jboss.org/jira/browse/JBCL-25
-         //https://jira.jboss.org/jira/browse/JBCL-92
-         clazz = loadLocally(classname, ClassLoaderUtils.getResourceName(classname), true);
-      }
-      return clazz;
-   }
-   
-   @Override
-   public boolean isUnloadedClassLoader()
-   {
-      return closed;
-   }
-
-   @Override
-   public void close()
-   {
-      closed = true;
-      super.close();
-      domain.removeClassPool(this);
-   }
-
-   @Override
-   public CtClass getCached(String classname)
-   {
-      if (isGeneratedClass(classname))
-      {
-         return null;
-      }
-      return domain.getCachedOrCreate(this, classname, false);
-   }
-   
-   @Override
-   public String toString()
-   {
-      return "[" + super.toString() + " domain: " + domain + "]";
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePlugin.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePlugin.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePlugin.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,32 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface IsLocalResourcePlugin
-{
-   boolean isMyResource(String resourceName);
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePluginFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePluginFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePluginFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,33 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-/**
- * Creates IsLocalResourcePlugins for a specific instance of {@link BaseClassPool}
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface IsLocalResourcePluginFactory
-{
-   IsLocalResourcePlugin create(BaseClassPool pool);
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePluginFactoryRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePluginFactoryRegistry.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePluginFactoryRegistry.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,117 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import java.net.URLClassLoader;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import org.jboss.util.loading.Translatable;
-
-/**
- * A global registry for IsLocalResourcePluginFactories.
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class IsLocalResourcePluginFactoryRegistry
-{
-   private static Map<Class<?>, IsLocalResourcePluginFactory> plugins = new WeakHashMap<Class<?>, IsLocalResourcePluginFactory>();
-   
-   static
-   {
-      addPluginFactory(ClassLoader.class, new DefaultClassLoaderIsLocalResourcePluginFactory());
-      addPluginFactory(URLClassLoader.class, new URLClassLoaderIsLocalResourcePluginFactory());
-      addPluginFactory(Translatable.class, new TranslatableClassLoaderIsLocalResourcePluginFactory());
-   }
-   
-   /**
-    * Registers {@code plugin} as the factory associated with the {@code classLoaderClass}.
-    * 
-    * @param classLoaderClass the class of a specific ClassLoader
-    * @param plugin           a plugin factory that will be used for classes loaded by
-    *                         a class loader of type {@code classLoaderClass}
-    */
-   public static synchronized void addPluginFactory(Class<?> classLoaderClass, IsLocalResourcePluginFactory plugin)
-   {
-      plugins.put(classLoaderClass, plugin);
-   }
-   
-   /**
-    * Unregisters {@code plugin} as the factory associated with the {@code classLoaderClass}.
-    * 
-    * @param classLoaderClass the class of a specific ClassLoader
-    * @param plugin           a plugin factory that should no longer be used for classes loaded by
-    *                         a class loader of type {@code classLoaderClass}
-    */
-   public static synchronized void removePluginFactory(Class<?> classLoaderClass, IsLocalResourcePluginFactory plugin)
-   {
-      plugins.remove(classLoaderClass);
-   }
-
-   /**
-    * Returns the plugin factory associated with the {@code classLoader}.
-    * 
-    * @return a plugin factory that should be used for classes loaded by
-    *         {@code classLoader}
-    */
-   public static synchronized IsLocalResourcePluginFactory getPluginFactory(ClassLoader classLoader)
-   {
-      if (classLoader != null)
-      {
-         return getPluginFactory(classLoader.getClass());
-      }
-      return getPluginFactory(ClassLoader.class);
-   }
-   
-   /**
-    * Returns the plugin factory associated with the {@code classLoaderClass}.
-    * 
-    * @return a plugin factory that should be used for classes loaded by
-    *         a class loader of type {@code classLoaderClass}
-    */
-   public static synchronized IsLocalResourcePluginFactory getPluginFactory(Class<?> classLoaderClass)
-   {
-      IsLocalResourcePluginFactory plugin = plugins.get(classLoaderClass);
-      if (plugin == null)
-      {
-         Class<?>[] interfaces = classLoaderClass.getInterfaces();
-         if (interfaces.length > 0)
-         {
-            for (Class<?> iface : interfaces)
-            {
-               plugin = getPluginFactory(iface);
-               if (plugin != null)
-               {
-                  return plugin;
-               }
-            }
-         }
-         Class<?> superClass = classLoaderClass.getSuperclass();
-         if (superClass != null && superClass != Object.class)
-         {
-            return getPluginFactory(superClass);
-         }
-      }
-      return plugin;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/NonDelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/NonDelegatingClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/NonDelegatingClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,66 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-
-/**
- * ClassPool for class loaders not backed by a repository/classloading domain
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class NonDelegatingClassPool extends BaseClassPool
-{
-   public NonDelegatingClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, boolean parentFirst)
-   {
-      super(cl, src, repository, AbstractClassPool.SEARCH_LOCAL_ONLY_STRATEGY);
-      super.childFirstLookup = !parentFirst;
-   }
-
-   @Override
-   public CtClass createCtClass(String classname, boolean useCache)
-   {
-      boolean trace = logger.isTraceEnabled();
-      CtClass clazz = null;
-      if (!childFirstLookup)
-      {
-         if (trace)logger.trace(this + " attempting to create " + classname + " in parent pool (parentFirst)");
-         clazz = createParentCtClass(classname, useCache, trace);
-      }
-      if (clazz == null && isLocalResource(getResourceName(classname), trace))
-      {
-         clazz = super.createCtClass(classname, useCache);
-      }
-      if (childFirstLookup && clazz == null)
-      {
-         if (trace)logger.trace(this + " attempting to create " + classname + " in parent pool (parentLast)");
-         clazz = createParentCtClass(classname, useCache, trace);
-      }
-      
-      if (trace)logger.trace(this + " created " + classname + " " + getClassPoolLogStringForClass(clazz));
-      return clazz;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ParentDelegationStrategy.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ParentDelegationStrategy.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ParentDelegationStrategy.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,40 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.CtClass;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface ParentDelegationStrategy
-{
-   void setDomain(AbstractClassPoolDomain domain);
-   
-   CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace);
-   
-   boolean isParentBefore(String classname);
-
-   boolean isParentAfter(String classname);
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/SecurityActions.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/SecurityActions.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/SecurityActions.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,217 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import java.beans
-.PropertyEditorManager;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-
-import org.jboss.util.propertyeditor.ClassArrayEditor;
-import org.jboss.util.propertyeditor.IntArrayEditor;
-import org.jboss.util.propertyeditor.StringArrayEditor;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-class SecurityActions
-{
-   interface GetParentAction
-   {
-      ClassLoader getParent(ClassLoader loader);
-      
-      GetParentAction NON_PRIVILEGED = new GetParentAction()
-      {
-         public ClassLoader getParent(ClassLoader loader)
-         {
-            return loader.getParent();
-         }
-      };
-      
-      GetParentAction PRIVILEGED = new GetParentAction()
-      {
-         public ClassLoader getParent(final ClassLoader loader)
-         {
-            try
-            {
-               return AccessController.doPrivileged(new PrivilegedExceptionAction<ClassLoader>()
-               {
-                  public ClassLoader run() throws Exception
-                  {
-                     return loader.getParent();
-                  }
-               });
-            }
-            catch (PrivilegedActionException e)
-            {
-               throw new RuntimeException(e.getException());
-            }
-         }
-      };
-   }
-
-   public static ClassLoader getParent(ClassLoader loader)
-   {
-      if (System.getSecurityManager() == null)
-      {
-         return GetParentAction.NON_PRIVILEGED.getParent(loader);
-      }
-      else
-      {
-         return GetParentAction.PRIVILEGED.getParent(loader);
-      }
-   }
-   
-   
-   private interface InitPropertyEditorsAction
-   {
-      void initEditors();
-      
-      InitPropertyEditorsAction PRIVILEGED = new InitPropertyEditorsAction()
-      {
-         public void initEditors() 
-         {
-            try
-            {
-               AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
-               {
-                  public Object run() throws Exception
-                  {
-                     doInitEditors();
-                     return null;
-                  }
-               });
-            }
-            catch (PrivilegedActionException e)
-            {
-               throw new RuntimeException(e.getException());
-            }
-         }
-      };
-
-      InitPropertyEditorsAction NON_PRIVILEGED = new InitPropertyEditorsAction()
-      {
-         public void initEditors() 
-         {
-            doInitEditors();
-         }
-      };
-   }
-
-   private static void doInitEditors()
-   {
-      String[] currentPath = PropertyEditorManager.getEditorSearchPath();
-      int length = currentPath != null ? currentPath.length : 0;
-      String[] newPath = new String[length+2];
-      System.arraycopy(currentPath, 0, newPath, 2, length);
-      // Put the JBoss editor path first
-      // The default editors are not very flexible
-      newPath[0] = "org.jboss.util.propertyeditor";
-      newPath[1] = "org.jboss.mx.util.propertyeditor";
-      PropertyEditorManager.setEditorSearchPath(newPath);
-
-      /* Register the editor types that will not be found using the standard
-      class name to editor name algorithm. For example, the type String[] has
-      a name '[Ljava.lang.String;' which does not map to a XXXEditor name.
-      */
-      Class<String[]> strArrayType = String[].class;
-      PropertyEditorManager.registerEditor(strArrayType, StringArrayEditor.class);
-      
-      @SuppressWarnings("unchecked")
-      Class<Class[]> clsArrayType = Class[].class;
-      PropertyEditorManager.registerEditor(clsArrayType, ClassArrayEditor.class);
-      
-      Class<int[]> intArrayType = int[].class;
-      PropertyEditorManager.registerEditor(intArrayType, IntArrayEditor.class);
-   }
-
-
-   static void initEditors()
-   {
-      if (System.getSecurityManager() == null)
-      {
-         InitPropertyEditorsAction.NON_PRIVILEGED.initEditors();
-      }
-      else
-      {
-         InitPropertyEditorsAction.PRIVILEGED.initEditors();
-      }
-   }
-
-   public static class GetContextClassLoaderAction implements PrivilegedAction<ClassLoader>
-   {
-      public static GetContextClassLoaderAction INSTANCE = new GetContextClassLoaderAction();
-      
-      public ClassLoader run()
-      {
-         return Thread.currentThread().getContextClassLoader();
-      }
-   }
-
-   static ClassLoader getContextClassLoader()
-   {
-      if (System.getSecurityManager() == null)
-         return Thread.currentThread().getContextClassLoader();
-      else
-         return AccessController.doPrivileged(GetContextClassLoaderAction.INSTANCE);
-   }
-   
-   interface GetClassLoaderAction 
-   {
-      ClassLoader getClassLoader(Class<?> clazz);
-      
-      GetClassLoaderAction NON_PRIVILEGED = new GetClassLoaderAction() {
-
-         public ClassLoader getClassLoader(Class<?> clazz)
-         {
-            return clazz.getClassLoader();
-         }};
-
-     GetClassLoaderAction PRIVILEGED = new GetClassLoaderAction() {
-
-         public ClassLoader getClassLoader(final Class<?> clazz)
-         {
-            return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
-
-               public ClassLoader run()
-               {
-                  return clazz.getClassLoader();
-               }});
-         }};
-   }
-   
-   public static ClassLoader getClassLoader(Class<?> clazz)
-   {
-      if (System.getSecurityManager() == null)
-      {
-         return GetClassLoaderAction.NON_PRIVILEGED.getClassLoader(clazz);
-      }
-      else
-      {
-         return GetClassLoaderAction.PRIVILEGED.getClassLoader(clazz);
-      }
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TempJBossClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TempJBossClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TempJBossClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,69 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-
-/**
- * The temporary classpool used by the instrumentor. It's main job is to delegate to the parent classpool
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class TempJBossClassPool extends AbstractClassPool
-{
-   boolean isParentAbstractPool;
-   public TempJBossClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      super(cl, src, repository);
-      if (src instanceof AbstractClassPool)
-      {
-         isParentAbstractPool = true;
-      }
-   }
-
-   public TempJBossClassPool(ClassPool src, ScopedClassPoolRepository repository)
-   {
-      super(src, repository);
-      if (src instanceof AbstractClassPool)
-      {
-         isParentAbstractPool = true;
-      }
-   }
-
-   public CtClass getCached(String classname)
-   {
-      CtClass clazz = null;
-      if (isParentAbstractPool)
-      {
-         clazz = ((AbstractClassPool)parent).getCached(classname);
-      }
-      if (clazz == null)
-      {
-         clazz = super.getCached(classname);
-      }
-      return clazz;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TempJBossDelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TempJBossDelegatingClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TempJBossDelegatingClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,69 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.NotFoundException;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class TempJBossDelegatingClassPool extends AbstractClassPool
-{
-   boolean isParentPoolDelegating;
-   public TempJBossDelegatingClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      super(cl, src, repository);
-      if (src instanceof BaseClassPool)
-      {
-         isParentPoolDelegating = true;
-      }
-   }
-
-   public TempJBossDelegatingClassPool(ClassPool src, ScopedClassPoolRepository repository)
-   {
-      super(src, repository);
-      if (src instanceof BaseClassPool)
-      {
-         isParentPoolDelegating = true;
-      }
-   }
-   @Override
-   public CtClass get0(String classname, boolean useCache) throws NotFoundException
-   {
-      CtClass clazz = null;
-      if (isParentPoolDelegating)
-      {
-         clazz = ((BaseClassPool)parent).get0(classname, useCache);
-      }
-      if (clazz == null)
-      {
-         clazz = super.get0(classname, useCache);
-      }
-      return clazz;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TranslatableClassLoaderIsLocalResourcePlugin.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TranslatableClassLoaderIsLocalResourcePlugin.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TranslatableClassLoaderIsLocalResourcePlugin.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,59 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import java.net.URL;
-
-import org.jboss.util.loading.Translatable;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class TranslatableClassLoaderIsLocalResourcePlugin extends AbstractIsLocalResourcePlugin
-{
-   public TranslatableClassLoaderIsLocalResourcePlugin(BaseClassPool pool)
-   {
-      super(pool);
-   }
-
-   public boolean isMyResource(String resourceName)
-   {
-      ClassLoader loader = getPool().getClassLoader();
-      if (loader instanceof Translatable == false)
-      {
-         throw new IllegalStateException("ClassLoader is not instance of Translatable " + loader);
-      }
-      URL url = ((Translatable)getPool().getClassLoader()).getResourceLocally(resourceName);
-      if (url == null)
-      {
-         return false;
-      }
-      if (isSameInParent(resourceName, url))
-      {
-         return false;
-      }
-      return true;
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TranslatableClassLoaderIsLocalResourcePluginFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TranslatableClassLoaderIsLocalResourcePluginFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TranslatableClassLoaderIsLocalResourcePluginFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,36 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class TranslatableClassLoaderIsLocalResourcePluginFactory implements IsLocalResourcePluginFactory
-{
-   public IsLocalResourcePlugin create(BaseClassPool pool)
-   {
-      return new TranslatableClassLoaderIsLocalResourcePlugin(pool);
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/URLClassLoaderIsLocalResourcePlugin.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/URLClassLoaderIsLocalResourcePlugin.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/URLClassLoaderIsLocalResourcePlugin.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,54 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-import java.net.URL;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class URLClassLoaderIsLocalResourcePlugin extends AbstractIsLocalResourcePlugin 
-{
-   public URLClassLoaderIsLocalResourcePlugin(BaseClassPool pool)
-   {
-      super(pool);
-   }
-   
-   public boolean isMyResource(String classResourceName)
-   {
-      //TODO This should be moved into URLClassLoaderIsLocalResourcePlugin, and the -core tests should be updated to
-      //not use the same urls
-      ClassLoader myLoader = getPool().getClassLoader();
-      URL myURL = myLoader.getResource(classResourceName); 
-      if (myURL == null)
-      {
-         return false;
-      }
-      if (isSameInParent(classResourceName, myURL))
-      {
-         return false;
-      }
-      return true;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/URLClassLoaderIsLocalResourcePluginFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/URLClassLoaderIsLocalResourcePluginFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/URLClassLoaderIsLocalResourcePluginFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,37 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class URLClassLoaderIsLocalResourcePluginFactory implements IsLocalResourcePluginFactory
-{
-
-   public IsLocalResourcePlugin create(BaseClassPool pool)
-   {
-      return new URLClassLoaderIsLocalResourcePlugin(pool);
-   }
-
-}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/AbstractIsLocalResourcePlugin.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractIsLocalResourcePlugin.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/AbstractIsLocalResourcePlugin.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/AbstractIsLocalResourcePlugin.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,80 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+import java.net.URL;
+
+import org.jboss.classpool.spi.AbstractClassPool;
+
+import javassist.ClassPool;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+abstract class AbstractIsLocalResourcePlugin implements IsLocalResourcePlugin
+{
+   private final BaseClassPool pool;
+   
+   public AbstractIsLocalResourcePlugin(BaseClassPool pool)
+   {
+      this.pool = pool;
+      initialise();
+   }
+
+   protected void initialise()
+   {
+      
+   }
+   
+   protected AbstractClassPool getPool()
+   {
+      return pool;
+   }
+   
+   /**
+    * Checks if the resource can be found in the parent classpool's loader
+    * and returns true if it either does not exist in the parent or if
+    * the parent has a different URL for the resource 
+    */
+   protected boolean isSameInParent(String classResourceName, URL foundURL)
+   {
+      ClassPool  parent = pool.getParent(); 
+      if (parent != null)
+      {
+         ClassLoader parentLoader = parent.getClassLoader();
+         URL parentURL = parentLoader.getResource(classResourceName);
+         if (parentURL == null)
+         {
+            return false;
+         }
+         if (parentURL.equals(foundURL))
+         {
+            return true;
+         }
+      }
+      
+      return false;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/AbstractParentDelegationStrategy.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractParentDelegationStrategy.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/AbstractParentDelegationStrategy.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/AbstractParentDelegationStrategy.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,96 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+import javassist.CtClass;
+
+import org.jboss.classpool.domain.AbstractClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolToClassPoolDomainAdaptorFactory;
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+import org.jboss.logging.Logger;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractParentDelegationStrategy implements ParentDelegationStrategy
+{
+   protected final Logger logger = Logger.getLogger(this.getClass().getName());
+   private ClassPoolDomain domain;
+   private ClassPoolDomain parent;
+   
+   protected AbstractParentDelegationStrategy(ClassPoolDomain parent, ClassPoolToClassPoolDomainAdaptorFactory adaptorFactory)
+   {
+      if (parent == null)
+      {
+         if (adaptorFactory == null)
+         {
+            throw new IllegalStateException("Null parent and null adaptorFactory");
+         }
+         this.parent = adaptorFactory.createAdaptor();
+      }
+      else 
+      {
+         if (parent instanceof AbstractClassPoolDomain == false)
+         {
+            throw new IllegalArgumentException("Parent must implement AbstractClassPoolDomain");         
+         }
+         this.parent = parent;
+      }
+      
+      if (this.parent == null)
+      {
+         throw new IllegalStateException("Parent was not set");
+      }
+   }
+   
+   protected boolean hasParent()
+   {
+      if (logger.isTraceEnabled()) logger.trace(this + " " + getDomain() + " hasParent " + parent != null);
+      return parent != null;
+   }
+   
+   protected ClassPoolDomain getDomain()
+   {
+      return domain;
+   }
+   
+   public CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
+   {
+      return parent.getCachedOrCreate(initiatingPool, classname, resourceName, create, trace);
+   }
+   
+   public void setDomain(ClassPoolDomain domain)
+   {
+      if (domain == null)
+      {
+         throw new IllegalArgumentException("Null domain");
+      }
+      if (this.domain != null)
+      {
+         throw new IllegalArgumentException("Cannot change domain");
+      }
+      this.domain = domain;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPool.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/BaseClassPool.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPool.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,160 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.NotFoundException;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.classpool.spi.AbstractClassPool;
+
+
+/**
+ * Intermediate class containing commonly needed functionality for the new classpools. I don't want to
+ * modify AbstractClassPool too much
+ *  
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class BaseClassPool extends AbstractClassPool
+{
+   private IsLocalResourcePlugin isLocalResourcePlugin;
+   
+   public BaseClassPool(ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository)
+   {
+      super(cl, parent, repository);
+      isLocalResourcePlugin = IsLocalResourcePluginFactoryRegistry.getPluginFactory(cl).create(this);
+      if (logger.isTraceEnabled()) logger.trace(this + " isLocalResourcePlugin:" + isLocalResourcePlugin);
+   }
+
+   public BaseClassPool(ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository, Class<? extends ClassPoolSearchStrategy> searchStrategy)
+   {
+      super(cl, parent, repository, searchStrategy);
+      isLocalResourcePlugin = IsLocalResourcePluginFactoryRegistry.getPluginFactory(cl).create(this);
+      if (logger.isTraceEnabled()) logger.trace(this + " isLocalResourcePlugin:" + isLocalResourcePlugin);
+   }
+   
+   
+   /**
+    * Stores the classes created in the ScopedClassPool cache.
+    */
+   @Override
+   public CtClass createCtClass(String classname, boolean useCache)
+   {
+      CtClass clazz = super.createCtClass(classname, useCache);
+      if (clazz != null)
+      {
+         lockInCache(clazz);
+      }
+      return clazz;
+   }
+
+   /**
+    * Uses the parent ClassPool, if available, to create the CtClass representing
+    * {@code classname}.
+    * 
+    * @param classname the name of the queried CtClass
+    * @param useCache  whether the ScopedClassPool cache should be used to search for the CtClass
+    * @param trace     enables tracing
+    * @return          a {@code CtClass} representing {@code classname}
+    */
+   protected CtClass createParentCtClass(String classname, boolean useCache, boolean trace)
+   {
+      if (parent == null)
+      {
+         return null;
+      }
+
+      //Make parent create class
+      if (parent instanceof BaseClassPool)
+      {
+         return ((BaseClassPool)parent).createCtClass(classname, useCache);
+      }
+      else
+      {
+         return plainParentGet(classname);
+      }
+   }
+   
+   private CtClass plainParentGet(String classname)
+   {
+      try
+      {
+         return parent.get(classname);
+      }
+      catch (NotFoundException e)
+      {
+      }
+      return null;
+   }
+
+   public ClassPool getParent()
+   {
+      return parent;
+   }
+   
+   @Override
+   protected boolean isLocalClassLoaderResource(String classResourceName)
+   {
+      return isLocalResourcePlugin.isMyResource(classResourceName);
+   }
+
+   @Override
+   public final CtClass get(String classname) throws NotFoundException 
+   {
+      boolean trace = logger.isTraceEnabled();
+      if (trace) logger.trace(this + " initiating get of " + classname);
+
+      try
+      {
+         CtClass clazz = super.get(classname);
+         if (trace)
+         {
+            logger.trace(this + " completed get of " + classname + " " + getClassPoolLogStringForClass(clazz));
+         }
+         return clazz;
+      }
+      catch (NotFoundException e)
+      {
+         // AutoGenerated
+         NotFoundException wrapped = new NotFoundException(e.getMessage() + " could not be found from " + this);
+         wrapped.setStackTrace(e.getStackTrace());
+         throw wrapped;
+      }
+   }
+   
+   @Override
+   public CtClass get0(String classname, boolean useCache) throws NotFoundException
+   {
+      return super.get0(classname, useCache);
+   }
+   
+   @Override
+   public void close()
+   {
+      super.close();
+
+      if (logger.isTraceEnabled()) logger.trace(this + " closing");
+   }
+
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPoolDomain.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/BaseClassPoolDomain.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPoolDomain.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/BaseClassPoolDomain.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,154 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.classpool.domain.AbstractClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.helpers.ClassLoaderUtils;
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+
+
+import javassist.CtClass;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class BaseClassPoolDomain extends AbstractClassPoolDomain
+{
+   private String domainName;
+   
+   private List<DelegatingClassPool> delegatingPools = new ArrayList<DelegatingClassPool>();
+   
+   private ParentDelegationStrategy parentDelegationStrategy;
+
+   public BaseClassPoolDomain(String domainName, ClassPoolDomain parent, boolean parentFirst)
+   {
+      this(domainName, 
+            new DefaultParentDelegationStrategy(
+                  parent, 
+                  parentFirst, 
+                  DefaultClassPoolToClassPoolDomainAdaptorFactory.getInstance())
+      );
+   }
+   
+   protected BaseClassPoolDomain(String domainName, ParentDelegationStrategy parentDelegationStrategy)
+   {
+      this.domainName = domainName;
+      this.parentDelegationStrategy = parentDelegationStrategy;
+      parentDelegationStrategy.setDomain(this);
+      if (logger.isTraceEnabled()) logger.trace("Created " + this + " parentDelegationStrategy:" + parentDelegationStrategy);
+   }
+   
+   public synchronized void addClassPool(DelegatingClassPool pool)
+   {
+      if (!delegatingPools.contains(pool))
+      {
+         if (logger.isTraceEnabled()) logger.trace(this + " adding pool " + pool);
+         delegatingPools.add(pool);
+      }
+   }
+   
+   public synchronized void removeClassPool(DelegatingClassPool pool)
+   {
+      if (logger.isTraceEnabled()) logger.trace(this + " removing pool " + pool);
+      delegatingPools.remove(pool);
+   }
+   
+   public synchronized CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, boolean create)
+   {
+      boolean trace = logger.isTraceEnabled();
+      String resourceName = ClassLoaderUtils.getResourceName(classname);
+      
+      CtClass clazz = getCachedOrCreate(initiatingPool, classname, resourceName, create, trace);
+      
+      if (clazz == null)
+      {
+         clazz = getCachedOrCreateFromPoolParent(initiatingPool, classname, create, trace);
+      }
+      return clazz;
+   }
+   
+   public CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
+   {
+      if (trace) logger.trace(this + " looking for " + classname);
+         
+      CtClass clazz = null;
+      if (isParentBefore(classname))
+      {
+         if (trace) logger.trace(this + " checking parent first for " + classname);
+         clazz = getCachedOrCreateFromParent(initiatingPool, classname, resourceName, create, trace);
+      }
+      if (clazz == null)
+      {
+         List<DelegatingClassPool> pools = getPoolsForClassName(classname);
+         if (pools.size() > 0)
+         {
+            for (DelegatingClassPool pool : pools)
+            {
+               clazz = pool.loadLocally(classname, resourceName, create);
+               if (clazz != null)
+               {
+                  break;
+               }
+            }
+         }
+      }
+      if (clazz == null && isParentAfter(classname))
+      {
+         if (trace) logger.trace(this + " checking parent last for " + classname);
+         clazz = getCachedOrCreateFromParent(initiatingPool, classname, resourceName, create, trace);
+      }
+      if (trace) logger.trace(this + " found " + classname + " in " + (clazz == null ? "null" : clazz.getClassPool()));
+      return clazz;
+   }
+
+   @Override
+   protected CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
+   {
+      return parentDelegationStrategy.getCachedOrCreateFromParent(initiatingPool, classname, resourceName, create, trace);
+   }
+   
+   public String toString()
+   {
+      return "[" + super.toString() + " name:" + domainName + "]";
+   }
+
+   protected boolean isParentBefore(String classname)
+   {
+      return parentDelegationStrategy.isParentBefore(classname);
+   }
+   
+   protected boolean isParentAfter(String classname)
+   {
+      return parentDelegationStrategy.isParentAfter(classname);
+   }
+   
+   protected List<DelegatingClassPool> getPoolsForClassName(String classname)
+   {
+      return delegatingPools;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassLoaderIsLocalResourcePlugin.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassLoaderIsLocalResourcePlugin.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassLoaderIsLocalResourcePlugin.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassLoaderIsLocalResourcePlugin.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,43 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+
+/**
+ * 
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultClassLoaderIsLocalResourcePlugin extends AbstractIsLocalResourcePlugin implements IsLocalResourcePlugin
+{
+   public DefaultClassLoaderIsLocalResourcePlugin(BaseClassPool pool)
+   {
+      super(pool);
+   }
+
+   public boolean isMyResource(String resourceName)
+   {
+      return getPool().getClassLoader().getResource(resourceName) != null;
+   }
+
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassLoaderIsLocalResourcePluginFactory.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassLoaderIsLocalResourcePluginFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassLoaderIsLocalResourcePluginFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassLoaderIsLocalResourcePluginFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,38 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultClassLoaderIsLocalResourcePluginFactory implements IsLocalResourcePluginFactory
+{
+
+   public IsLocalResourcePlugin create(BaseClassPool pool)
+   {
+      return new DefaultClassLoaderIsLocalResourcePlugin(pool);
+   }
+
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassPoolToClassPoolDomainAdaptorFactory.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultClassPoolToClassPoolDomainAdaptorFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassPoolToClassPoolDomainAdaptorFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultClassPoolToClassPoolDomainAdaptorFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+import org.jboss.classpool.domain.ClassPoolToClassPoolDomainAdapter;
+import org.jboss.classpool.domain.ClassPoolToClassPoolDomainAdaptorFactory;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+class DefaultClassPoolToClassPoolDomainAdaptorFactory implements ClassPoolToClassPoolDomainAdaptorFactory
+{
+   private static final DefaultClassPoolToClassPoolDomainAdaptorFactory INSTANCE = new DefaultClassPoolToClassPoolDomainAdaptorFactory();
+   
+   private DefaultClassPoolToClassPoolDomainAdaptorFactory()
+   {
+      
+   }
+   
+   public static ClassPoolToClassPoolDomainAdaptorFactory getInstance()
+   {
+      return INSTANCE;
+   }
+   
+   public ClassPoolToClassPoolDomainAdapter createAdaptor()
+   {
+      return new ClassPoolToClassPoolDomainAdapter();
+   }
+
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultParentDelegationStrategy.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/DefaultParentDelegationStrategy.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultParentDelegationStrategy.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/DefaultParentDelegationStrategy.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,54 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolToClassPoolDomainAdaptorFactory;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+class DefaultParentDelegationStrategy extends AbstractParentDelegationStrategy
+{
+   boolean parentFirst;
+   DefaultParentDelegationStrategy(ClassPoolDomain parent, boolean parentFirst, ClassPoolToClassPoolDomainAdaptorFactory adaptorFactory)
+   {
+      super(parent, adaptorFactory);
+      this.parentFirst = parentFirst;
+   }
+   
+   public boolean isParentBefore(String classname)
+   {
+      boolean isParentBefore = hasParent() && parentFirst == true;
+      if (logger.isTraceEnabled()) logger.trace(this + " " + getDomain() + " isParentBefore " + isParentBefore);
+      return isParentBefore;
+   }
+   
+   public boolean isParentAfter(String classname)
+   {
+      boolean isParentAfter = hasParent() && parentFirst == false;
+      if (logger.isTraceEnabled()) logger.trace(this + " " + getDomain() + " isParentAfter " + isParentAfter);
+      return isParentAfter;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePlugin.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePlugin.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePlugin.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePlugin.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface IsLocalResourcePlugin
+{
+   boolean isMyResource(String resourceName);
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePluginFactory.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePluginFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePluginFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePluginFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,34 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+
+/**
+ * Creates IsLocalResourcePlugins for a specific instance of {@link BaseClassPool}
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface IsLocalResourcePluginFactory
+{
+   IsLocalResourcePlugin create(BaseClassPool pool);
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePluginFactoryRegistry.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/IsLocalResourcePluginFactoryRegistry.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePluginFactoryRegistry.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/IsLocalResourcePluginFactoryRegistry.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,117 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+import java.net.URLClassLoader;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import org.jboss.util.loading.Translatable;
+
+/**
+ * A global registry for IsLocalResourcePluginFactories.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class IsLocalResourcePluginFactoryRegistry
+{
+   private static Map<Class<?>, IsLocalResourcePluginFactory> plugins = new WeakHashMap<Class<?>, IsLocalResourcePluginFactory>();
+   
+   static
+   {
+      addPluginFactory(ClassLoader.class, new DefaultClassLoaderIsLocalResourcePluginFactory());
+      addPluginFactory(URLClassLoader.class, new URLClassLoaderIsLocalResourcePluginFactory());
+      addPluginFactory(Translatable.class, new TranslatableClassLoaderIsLocalResourcePluginFactory());
+   }
+   
+   /**
+    * Registers {@code plugin} as the factory associated with the {@code classLoaderClass}.
+    * 
+    * @param classLoaderClass the class of a specific ClassLoader
+    * @param plugin           a plugin factory that will be used for classes loaded by
+    *                         a class loader of type {@code classLoaderClass}
+    */
+   public static synchronized void addPluginFactory(Class<?> classLoaderClass, IsLocalResourcePluginFactory plugin)
+   {
+      plugins.put(classLoaderClass, plugin);
+   }
+   
+   /**
+    * Unregisters {@code plugin} as the factory associated with the {@code classLoaderClass}.
+    * 
+    * @param classLoaderClass the class of a specific ClassLoader
+    * @param plugin           a plugin factory that should no longer be used for classes loaded by
+    *                         a class loader of type {@code classLoaderClass}
+    */
+   public static synchronized void removePluginFactory(Class<?> classLoaderClass, IsLocalResourcePluginFactory plugin)
+   {
+      plugins.remove(classLoaderClass);
+   }
+
+   /**
+    * Returns the plugin factory associated with the {@code classLoader}.
+    * 
+    * @return a plugin factory that should be used for classes loaded by
+    *         {@code classLoader}
+    */
+   public static synchronized IsLocalResourcePluginFactory getPluginFactory(ClassLoader classLoader)
+   {
+      if (classLoader != null)
+      {
+         return getPluginFactory(classLoader.getClass());
+      }
+      return getPluginFactory(ClassLoader.class);
+   }
+   
+   /**
+    * Returns the plugin factory associated with the {@code classLoaderClass}.
+    * 
+    * @return a plugin factory that should be used for classes loaded by
+    *         a class loader of type {@code classLoaderClass}
+    */
+   public static synchronized IsLocalResourcePluginFactory getPluginFactory(Class<?> classLoaderClass)
+   {
+      IsLocalResourcePluginFactory plugin = plugins.get(classLoaderClass);
+      if (plugin == null)
+      {
+         Class<?>[] interfaces = classLoaderClass.getInterfaces();
+         if (interfaces.length > 0)
+         {
+            for (Class<?> iface : interfaces)
+            {
+               plugin = getPluginFactory(iface);
+               if (plugin != null)
+               {
+                  return plugin;
+               }
+            }
+         }
+         Class<?> superClass = classLoaderClass.getSuperclass();
+         if (superClass != null && superClass != Object.class)
+         {
+            return getPluginFactory(superClass);
+         }
+      }
+      return plugin;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/ParentDelegationStrategy.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ParentDelegationStrategy.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/ParentDelegationStrategy.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/ParentDelegationStrategy.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+
+import javassist.CtClass;
+
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+interface ParentDelegationStrategy
+{
+   void setDomain(ClassPoolDomain domain);
+   
+   CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace);
+   
+   boolean isParentBefore(String classname);
+
+   boolean isParentAfter(String classname);
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePlugin.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TranslatableClassLoaderIsLocalResourcePlugin.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePlugin.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePlugin.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,59 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+import java.net.URL;
+
+import org.jboss.util.loading.Translatable;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class TranslatableClassLoaderIsLocalResourcePlugin extends AbstractIsLocalResourcePlugin
+{
+   public TranslatableClassLoaderIsLocalResourcePlugin(BaseClassPool pool)
+   {
+      super(pool);
+   }
+
+   public boolean isMyResource(String resourceName)
+   {
+      ClassLoader loader = getPool().getClassLoader();
+      if (loader instanceof Translatable == false)
+      {
+         throw new IllegalStateException("ClassLoader is not instance of Translatable " + loader);
+      }
+      URL url = ((Translatable)getPool().getClassLoader()).getResourceLocally(resourceName);
+      if (url == null)
+      {
+         return false;
+      }
+      if (isSameInParent(resourceName, url))
+      {
+         return false;
+      }
+      return true;
+   }
+
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePluginFactory.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TranslatableClassLoaderIsLocalResourcePluginFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePluginFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/TranslatableClassLoaderIsLocalResourcePluginFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,37 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class TranslatableClassLoaderIsLocalResourcePluginFactory implements IsLocalResourcePluginFactory
+{
+   public IsLocalResourcePlugin create(BaseClassPool pool)
+   {
+      return new TranslatableClassLoaderIsLocalResourcePlugin(pool);
+   }
+
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/URLClassLoaderIsLocalResourcePlugin.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/URLClassLoaderIsLocalResourcePlugin.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/URLClassLoaderIsLocalResourcePlugin.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/URLClassLoaderIsLocalResourcePlugin.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,55 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+import java.net.URL;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class URLClassLoaderIsLocalResourcePlugin extends AbstractIsLocalResourcePlugin 
+{
+   public URLClassLoaderIsLocalResourcePlugin(BaseClassPool pool)
+   {
+      super(pool);
+   }
+   
+   public boolean isMyResource(String classResourceName)
+   {
+      //TODO This should be moved into URLClassLoaderIsLocalResourcePlugin, and the -core tests should be updated to
+      //not use the same urls
+      ClassLoader myLoader = getPool().getClassLoader();
+      URL myURL = myLoader.getResource(classResourceName); 
+      if (myURL == null)
+      {
+         return false;
+      }
+      if (isSameInParent(classResourceName, myURL))
+      {
+         return false;
+      }
+      return true;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/URLClassLoaderIsLocalResourcePluginFactory.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/URLClassLoaderIsLocalResourcePluginFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/URLClassLoaderIsLocalResourcePluginFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/base/URLClassLoaderIsLocalResourcePluginFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,38 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.base;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class URLClassLoaderIsLocalResourcePluginFactory implements IsLocalResourcePluginFactory
+{
+
+   public IsLocalResourcePlugin create(BaseClassPool pool)
+   {
+      return new URLClassLoaderIsLocalResourcePlugin(pool);
+   }
+
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/AbstractClassPoolDomain.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolDomain.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/AbstractClassPoolDomain.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/AbstractClassPoolDomain.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,117 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.domain;
+
+import org.jboss.classpool.base.BaseClassPool;
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+import org.jboss.logging.Logger;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.NotFoundException;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractClassPoolDomain implements ClassPoolDomain
+{
+   protected final Logger logger = Logger.getLogger(this.getClass());
+   
+   protected abstract CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace);
+   
+   protected CtClass getCachedOrCreateFromPoolParent(BaseClassPool initiatingPool, String classname, boolean create, boolean trace)
+   {
+      if (initiatingPool == null)
+      {
+         if (trace) logger.trace(this + " get cached or create " + classname + " from pool parent - no initiating pool");
+         return null;
+      }
+      ClassPool parentPool = initiatingPool.getParent();
+      if (parentPool == null)
+      {
+         if (trace) logger.trace(this + " get cached or create " + classname + " from pool parent - no parent pool");
+         return null;
+      }
+       
+      return getCachedOrCreateFromPool(parentPool, classname, create, trace);
+   }
+
+   
+   protected CtClass getCachedOrCreateFromPool(ClassPool pool, String classname, boolean create, boolean trace)
+   {
+      if (pool instanceof BaseClassPool)
+      {
+         return getCachedOrCreateFromPool((BaseClassPool)pool, classname, create, trace);
+      }
+      try
+      {
+         //This will check the parents
+         if (trace) logger.trace(this + " get cached or create " + classname + " from non-BaseClassPool pool " + pool);
+         CtClass clazz = pool.get(classname);
+         if (trace) logger.trace(this + " got cached or create " + classname + " from non-BaseClassPool pool " + clazz.getClassPool());
+         return clazz;
+      }
+      catch(NotFoundException e)
+      {
+         return null;
+      }
+   }
+
+   protected CtClass getCachedOrCreateFromPool(BaseClassPool pool, String classname, boolean create, boolean trace)
+   {
+      if (pool == null)
+      {
+         if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - no pool");
+         return null;
+      }
+      
+      CtClass clazz = null;
+      if (!pool.childFirstLookup)
+      {
+         if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - checking parent (parentFirst)");
+         clazz = getCachedOrCreateFromPoolParent(pool, classname, create, trace); 
+      }
+      
+      if (clazz == null)
+      {
+         //We can use the exposed methods directly to avoid the overhead of NotFoundException
+         if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - checking cache");
+         clazz = pool.getCached(classname);
+         if (clazz == null && create)
+         {
+            if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - creating");
+            clazz = pool.createCtClass(classname, true);
+         }
+      }
+      
+      if (clazz == null && pool.childFirstLookup)
+      {
+         if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - checking parent (parentLast)");
+         clazz = getCachedOrCreateFromPoolParent(pool, classname, create, trace); 
+      }
+      return clazz;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolDomain.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolDomain.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolDomain.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolDomain.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,40 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors. 
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */ 
+package org.jboss.classpool.domain;
+
+import javassist.CtClass;
+
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassPoolDomain
+{
+   public void addClassPool(DelegatingClassPool pool);
+   public void removeClassPool(DelegatingClassPool pool);
+   public CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, boolean create);
+   public CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace);
+}
\ No newline at end of file

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolDomainRegistry.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolDomainRegistry.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolDomainRegistry.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolDomainRegistry.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,59 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.domain;
+
+import java.lang.ref.WeakReference;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassPoolDomainRegistry
+{
+   final static ClassPoolDomainRegistry INSTANCE = new ClassPoolDomainRegistry();
+   
+   final Map<Object, WeakReference<ClassPoolDomain>> domains = new WeakHashMap<Object, WeakReference<ClassPoolDomain>>();
+   
+   public static ClassPoolDomainRegistry getInstance()
+   {
+      return INSTANCE;
+   }
+   
+   public synchronized ClassPoolDomain getDomain(Object key)
+   {
+      WeakReference<ClassPoolDomain> ref = domains.get(key);
+      if (ref == null)
+      {
+         return null;
+      }
+      return ref.get();
+   }
+   
+   public synchronized void addClassPoolDomain(Object key, ClassPoolDomain domain)
+   {
+      domains.put(key, new WeakReference<ClassPoolDomain>(domain));
+   }
+   
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdapter.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolToClassPoolDomainAdapter.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdapter.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdapter.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,99 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.domain;
+
+
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+
+/**
+ * Adapts a ClassPool to a ClassPoolDomain, i.e., this class represents an
+ * unitary ClassPoolDomain.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassPoolToClassPoolDomainAdapter extends AbstractClassPoolDomain
+{
+   protected ClassPool pool;
+   
+   public ClassPoolToClassPoolDomainAdapter()
+   {
+      this.pool = initialiseParentClassLoader();
+      if (logger.isTraceEnabled()) logger.trace("Created " + this);
+      validate();
+   }
+   
+   public ClassPoolToClassPoolDomainAdapter(ClassPool pool)
+   {
+      this.pool = pool;
+      if (logger.isTraceEnabled()) logger.trace("Created " + this);
+      validate();
+   }
+
+   private void validate()
+   {
+      if (pool == null)
+      {
+         throw new IllegalStateException("Null parent classpool");
+      }
+   }
+   
+   public ClassPool initialiseParentClassLoader()
+   {
+      return ClassPool.getDefault();
+   }
+   
+   public void addClassPool(DelegatingClassPool pool)
+   {
+      throw new IllegalStateException("Cannot add pools to the domain adaptor");
+   }
+
+   
+   public synchronized CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
+   {
+      return getCachedOrCreateFromPool(pool, classname, create, trace);
+   }
+
+   @Override
+   protected CtClass getCachedOrCreateFromParent(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
+   {
+      return null;
+   }
+
+   public void removeClassPool(DelegatingClassPool pool)
+   {
+      throw new IllegalStateException("Cannot remove pools from the domain adaptor");
+   }
+
+   public CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, boolean create)
+   {
+      throw new IllegalStateException("Should never be called");
+   }
+
+   public String toString()
+   {
+      return "ClassPoolToDomainAdapter[" + System.identityHashCode(this) + " " + pool.toString() + "]";
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdaptorFactory.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolToClassPoolDomainAdaptorFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdaptorFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/domain/ClassPoolToClassPoolDomainAdaptorFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.domain;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassPoolToClassPoolDomainAdaptorFactory
+{
+   ClassPoolToClassPoolDomainAdapter createAdaptor();
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/helpers/ClassLoaderUtils.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassLoaderUtils.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/helpers/ClassLoaderUtils.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/helpers/ClassLoaderUtils.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,99 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.classpool.helpers;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javassist.CtClass;
+import javassist.bytecode.Descriptor;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassLoaderUtils
+{
+   private static final Set<String> primitiveNames;
+   static
+   {
+      Set<String> temp = new HashSet<String>();
+      temp.add(CtClass.booleanType.getName());
+      temp.add(CtClass.byteType.getName());
+      temp.add(CtClass.charType.getName());
+      temp.add(CtClass.doubleType.getName());
+      temp.add(CtClass.floatType.getName());
+      temp.add(CtClass.intType.getName());
+      temp.add(CtClass.longType.getName());
+      temp.add(CtClass.shortType.getName());
+      temp.add(CtClass.voidType.getName());
+      primitiveNames = Collections.unmodifiableSet(temp); 
+   }
+   
+   public static String getResourceName(String classname)
+   {
+      final String name = stripArrayFromClassName(classname);
+      final int lastIndex = name.lastIndexOf('$');
+      if (lastIndex < 0)
+      {
+         return name.replaceAll("[\\.]", "/") + ".class";
+      }
+      else
+      {
+         return name.substring(0, lastIndex).replaceAll("[\\.]", "/") + name.substring(lastIndex) + ".class";
+      }
+   }
+
+   public static String getPackageName(String classname)
+   {
+      final int last = classname.lastIndexOf('.');
+      if (last < 0)
+      {
+         return "";
+      }
+      else
+      {
+         return classname.substring(0, last);
+      }
+   }
+   
+   public static String stripArrayFromClassName(String classname)
+   {
+      if (classname.charAt(0) == '[')
+      {
+         return Descriptor.toClassName(classname);
+      }
+      if (classname.endsWith("[]"))
+      {
+         return classname.substring(0, classname.indexOf("[]"));
+      }
+      return classname;
+   }
+   
+   public static boolean isPrimitiveType(String classname)
+   {
+      final String name = stripArrayFromClassName(classname);
+      return primitiveNames.contains(name);
+   }
+}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,84 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.classpool.jboss4;
-
-import java.io.File;
-import java.net.URL;
-import java.security.ProtectionDomain;
-
-import javassist.CannotCompileException;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.mx.loading.RepositoryClassLoader;
-
-/**
- * Comment
- *
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
- * @author adrian at jboss.org
- * @version $Revision: 82781 $
- */
-public class JBossClassPool extends AbstractClassPool implements ToClassInvokerPoolReference
-{
-   ToClassInvoker toClassInvoker = null;
-   
-   protected JBossClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, File tmp, URL tmpURL)
-   {
-      super(cl, src, repository);
-      toClassInvoker = new ToClassInvoker(tmp);
-   }
-
-   protected JBossClassPool(ClassPool src, ScopedClassPoolRepository repository)
-   {
-      super(src, repository);
-   }
-
-   public boolean isUnloadedClassLoader()
-   {
-      if (getClassLoader() instanceof RepositoryClassLoader)
-      {
-         RepositoryClassLoader rcl = (RepositoryClassLoader) getClassLoader();
-         return rcl.getLoaderRepository() == null;
-      }
-      return false;
-   }
-
-   public Class<?> toClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException
-   {
-      return toClassInvoker.toClass(this, cc, getResourceName(cc.getName()), loader, domain);
-   }
-
-   public Class<?> superPoolToClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException
-   {
-      return super.toClass(cc, loader, domain);
-   }
-
-   @Override
-   public void lockInCache(CtClass clazz)
-   {
-      super.lockInCache(clazz);
-      localResources.put(getResourceName(clazz.getName()), Boolean.TRUE);
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPoolFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,129 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.classpool.jboss4;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.AbstractClassPoolFactory;
-import org.jboss.classpool.AbstractJBossClassPoolFactory;
-import org.jboss.mx.loading.RepositoryClassLoader;
-
-/**
- * Comment
- *
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
- * @author adrian at jboss.org
- * @version $Revision: 70841 $
- **/
-public class JBossClassPoolFactory extends AbstractJBossClassPoolFactory implements AbstractClassPoolFactory
-{
-   protected File tmpClassesDir;
-
-   public JBossClassPoolFactory(File tmpClassesDir) throws IOException
-   {
-      this.tmpClassesDir = tmpClassesDir;
-
-   }
-   public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      ClassPool parent = getCreateParentClassPools(cl, src, repository);
-      if (cl instanceof RepositoryClassLoader)
-      {
-         File tempdir = getTempDirectory(cl);
-         URL tmpCP;
-         try
-         {
-            tmpCP = createURLAndAddToLoader(cl, tempdir);
-         }
-         catch (IOException e)
-         {
-            throw new RuntimeException(e);
-         }
-         if (ScopedRepositoryClassLoaderHelper.isScopedClassLoader(cl))
-         {
-            //It is scoped
-            return new ScopedJBossClassPool(cl, parent, repository, tempdir, tmpCP);
-         }
-         return new JBossClassPool(cl, parent, repository, tempdir, tmpCP);
-      }
-      return new AbstractClassPool(cl, parent, repository);
-   }
-
-   protected File getTempDirectory(ClassLoader cl)
-   {
-      File tempdir = null;
-      int attempts = 0;
-      IOException ex = null;
-      while (tempdir == null && attempts < 5)
-      {
-         //Workaround for JBAOP-254, retry a few times
-         try
-         {
-            tempdir = createTempDir(cl);
-         }
-         catch (IOException e)
-         {
-            ex = e;
-         }
-      }
-      
-      if (tempdir == null)
-      {
-         throw new RuntimeException("", ex);
-      }
-      
-      return tempdir;
-   }
-
-   public File createTempDir(ClassLoader cl) throws IOException
-   {
-      File tempdir = File.createTempFile("ucl", "", tmpClassesDir);
-      tempdir.delete();
-      tempdir.mkdir();
-      tempdir.deleteOnExit();
-
-      return tempdir;
-   }
-   
-   private URL createURLAndAddToLoader(ClassLoader cl, File tempdir) throws IOException
-   {
-      URL tmpURL = tempdir.toURL();
-      URL tmpCP = new URL(tmpURL, "?dynamic=true");
-
-      RepositoryClassLoader ucl = (RepositoryClassLoader) cl;
-
-      // We may be undeploying.
-      if (ucl.getLoaderRepository() != null)
-      {
-         ucl.addURL(tmpCP);
-      }
-      
-      return tmpCP;
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/LoaderRepositoryUrlUtil.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/LoaderRepositoryUrlUtil.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/LoaderRepositoryUrlUtil.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,173 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss4;
-
-import java.net.URL;
-
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanServer;
-import javax.management.Notification;
-import javax.management.NotificationListener;
-import javax.management.ObjectName;
-
-import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
-import org.jboss.mx.loading.LoaderRepository;
-import org.jboss.mx.util.MBeanServerLocator;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class LoaderRepositoryUrlUtil implements NotificationListener
-{
-   final static MBeanServer SERVER;
-   final static ObjectName MAIN_LOADER_REPOSITORY_OBJECT_NAME;
-   final static LoaderRepository MAIN_LOADER_REPOSITORY;
-   static
-   {
-      SERVER = MBeanServerLocator.locateJBoss();
-      try
-      {
-         MAIN_LOADER_REPOSITORY_OBJECT_NAME = new ObjectName("JMImplementation:name=Default,service=LoaderRepository");
-         MAIN_LOADER_REPOSITORY = (LoaderRepository)SERVER.invoke(MAIN_LOADER_REPOSITORY_OBJECT_NAME, "getInstance", new Object[0], new String[0]);
-      }
-      catch (Exception e)
-      {
-         throw new RuntimeException(e);
-      }
-   }
-   
-   long currentSequenceNumber;
-   long lastSequenceNumber = -1;
-   URL[] urls;
-   
-   public LoaderRepositoryUrlUtil()
-   {
-      try
-      {
-         SERVER.addNotificationListener(MAIN_LOADER_REPOSITORY_OBJECT_NAME, this, null, null);
-      }
-      catch (InstanceNotFoundException e)
-      {
-         throw new RuntimeException(e);
-      }
-   }
-
-   public synchronized void handleNotification(Notification notification, Object handback)
-   {
-      if (notification.getType().equals(LoaderRepository.CLASSLOADER_ADDED))
-      {
-         currentSequenceNumber = notification.getSequenceNumber();
-      }
-      else if (notification.getType().equals(LoaderRepository.CLASSLOADER_REMOVED))
-      {
-         currentSequenceNumber = notification.getSequenceNumber();
-      }
-   }
-   
-   public synchronized UrlInfo getURLInfo(HeirarchicalLoaderRepository3 scopedLoader, UrlInfo urlInfo)
-   {
-      boolean changed = false;
-      if (lastSequenceNumber != currentSequenceNumber)
-      {
-         urls = MAIN_LOADER_REPOSITORY.getURLs();
-         lastSequenceNumber = currentSequenceNumber;
-         changed = true;
-      }
-      if (!changed)
-      {
-         changed = urlInfo != null && (urlInfo.getSequenceNumber() != lastSequenceNumber);
-      }
-      if (urlInfo == null || changed)
-      {
-         URL[] localUrls = getLocalUrls(scopedLoader, urls);
-         urlInfo = new UrlInfo(urls, localUrls, lastSequenceNumber);
-      }
-      return urlInfo;
-   }
-   
-   public long getCurrentSequenceNumber()
-   {
-      return currentSequenceNumber;
-   }
-   
-   private URL[] getLocalUrls(HeirarchicalLoaderRepository3 scopedRepository, URL[] globalUrls)
-   {
-      URL[] scopedRepositoryUrls = scopedRepository.getURLs();
-
-      //This is a bit of a hack, since this relies on the order of the urls returned by HeirarchicalLoaderRepository3
-      //My urls, followed by parent urls.
-      int scopedLength = 0;
-      for (int i = 0 ; i < scopedRepositoryUrls.length ; i++)
-      {
-         for (int j = 0 ; j < globalUrls.length ; j ++)
-         {
-            if (scopedRepositoryUrls[i].equals(globalUrls[j]))
-            {
-               scopedLength = i;
-               break;
-            }
-         }
-         if (scopedLength > 0)
-         {
-            break;
-         }
-      }
-      
-      URL[] localUrls = new URL[scopedLength];
-      System.arraycopy(scopedRepositoryUrls, 0, localUrls, 0, scopedLength);
-      return localUrls;
-   }
-   
-   public class UrlInfo
-   {
-      
-      URL[] globalUrls;
-      URL[] localUrls;
-      long sequenceNumber;
-
-      public UrlInfo(URL[] globalUrls, URL[] localUrls, long sequenceNumber)
-      {
-         super();
-         this.globalUrls = globalUrls;
-         this.localUrls = localUrls;
-         this.sequenceNumber = sequenceNumber;
-      }
-      
-      public URL[] getGlobalUrls()
-      {
-         return globalUrls;
-      }
-      
-      public URL[] getLocalUrls()
-      {
-         return localUrls;
-      }
-
-      public long getSequenceNumber()
-      {
-         return sequenceNumber;
-      }
-   }
-   
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ScopedJBossClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ScopedJBossClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ScopedJBossClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,273 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss4;
-
-import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.NotFoundException;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.jboss4.LoaderRepositoryUrlUtil.UrlInfo;
-import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
-import org.jboss.mx.loading.LoaderRepository;
-import org.jboss.mx.loading.RepositoryClassLoader;
-
-/**
- * A classpool in JBoss backed by a scoped (HierarchicalLoaderRepository) loader repository
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class ScopedJBossClassPool extends JBossClassPool 
-{
-   final static LoaderRepositoryUrlUtil LOADER_REPOSITORY_UTIL = new LoaderRepositoryUrlUtil();
-   
-   private UrlInfo urlInfo;
-   private ThreadLocal<ClassPool> lastPool = new ThreadLocal<ClassPool>();
-
-   public ScopedJBossClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, File tmp, URL tmpURL)
-   {
-      super(cl, src, repository, tmp, tmpURL);
-      
-      boolean parentFirst = false;
-      LoaderRepository loaderRepository = null;
-      ClassLoader prnt = cl;
-      while (prnt != null)
-      {
-         if (prnt instanceof RepositoryClassLoader)
-         {
-            loaderRepository = ((RepositoryClassLoader)prnt).getLoaderRepository();
-            if (loaderRepository instanceof HeirarchicalLoaderRepository3)
-            {
-               parentFirst = ((HeirarchicalLoaderRepository3)loaderRepository).getUseParentFirst();
-            }
-            break;
-         }
-         prnt = SecurityActions.getParent(cl);
-      }
-      
-      super.childFirstLookup = !parentFirst;
-   }
-   
-
-   private HeirarchicalLoaderRepository3 getRepository()
-   {
-      ClassLoader cl = getClassLoader0();
-      if (cl != null)
-      {
-         return (HeirarchicalLoaderRepository3)((RepositoryClassLoader)cl).getLoaderRepository();
-      }
-      return null;
-   }
-
-   private URL getResourceUrlForClass(String resourcename)
-   {
-      HeirarchicalLoaderRepository3 repo = getRepository();
-      return repo.getResource(resourcename, super.getClassLoader());
-   }
-   
-   private boolean isMine(URL url)
-   {
-      HeirarchicalLoaderRepository3 repo = getRepository();
-      if (repo != null)
-      {
-         //The URL of the class loaded with my scoped classloader
-         if (url != null)
-         {
-            urlInfo = LOADER_REPOSITORY_UTIL.getURLInfo(getRepository(), urlInfo);
-            
-            URL[] myUrls = urlInfo.getLocalUrls();
-            String resource = url.toString();
-            for (int i = 0 ; i < myUrls.length ; i++)
-            {
-               if (resource.indexOf(myUrls[i].toString()) >= 0)
-               {
-                  return true;
-               }
-            }
-            return false;
-         }
-      }
-      return true;
-   }
-
-   public CtClass getCached(String classname)
-   {
-      if (classname == null)
-      {
-         return null;
-      }
-      if (isUnloadedClassLoader())
-      {
-         return null;
-      }
-
-      if (generatedClasses.get(classname) != null)
-      {
-         //It is a new class, and this callback is probably coming from the frozen check when creating a new nested class
-         return super.getCached(classname);
-      }
-      
-      //Is this from the scoped classloader itself of from the parent?
-      String resourcename = getResourceName(classname);
-      URL url = getResourceUrlForClass(resourcename);
-      boolean isMine = isMine(url);
-      
-      if (isMine)
-      {
-         if (super.childFirstLookup)
-         {
-            //Parent delegation is false, attempt to get this class out of ourselves
-            CtClass clazz = super.getCachedLocally(classname);
-            if (clazz == null)
-            {
-               clazz = createCtClass(classname, false);
-               if (clazz != null)
-               {
-                  lockInCache(clazz);
-               }
-            }
-            if (clazz != null)
-            {
-               return clazz;
-            }
-         }
-         return super.getCached(classname);
-      }
-      
-
-      try
-      {
-         ClassPool pool = getCorrectPoolForResource(classname, url);
-         if (pool != lastPool.get())
-         {
-            lastPool.set(pool);
-            return pool.get(classname);
-         }
-      }
-      catch (NotFoundException e)
-      {
-      }
-      catch(StackOverflowError e)
-      {
-         throw e;
-      }
-      finally
-      {
-         lastPool.set(null);
-      }
-
-      return null;
-   }
-
-   @Override
-   protected boolean includeInGlobalSearch()
-   {
-      return false;
-   }
-   
-   private ClassPool getCorrectPoolForResource(String classname, URL url)
-   {
-      ClassPoolRepository classPoolRepository = ClassPoolRepository.getInstance();
-      synchronized(classPoolRepository.getRegisteredCLs())
-      {
-         //JBoss 5 has an extra NoAnnotationURLCLassLoader that is not on the default path, make sure that that is checked at the end
-         //FIXME This needs revisiting/removing once the 
-         ArrayList<AbstractClassPool> noAnnotationURLClassLoaderPools = null;
-         String resource = url.toString();
-         for(ClassPool pool : classPoolRepository.getRegisteredCLs().values())
-         {
-            AbstractClassPool candidate = (AbstractClassPool)pool;
-            if (candidate.isUnloadedClassLoader())
-            {
-               classPoolRepository.unregisterClassLoader(candidate.getClassLoader());
-               continue;
-            }
-            
-            if (candidate.getClassLoader() instanceof RepositoryClassLoader)
-            {
-               //Sometimes the ClassLoader is a proxy for MBeanProxyExt?!
-               RepositoryClassLoader rcl = (RepositoryClassLoader)candidate.getClassLoader();
-               URL[] urls = rcl.getClasspath();
-               
-               for (int i = 0 ; i < urls.length ; i++)
-               {
-                  if (resource.indexOf(urls[i].getFile()) >= 0)
-                  {
-                     return candidate;
-                  }
-               }
-            }
-            //FIXME Remove once we have the JBoss 5 version of pool
-            else if (isInstanceOfNoAnnotationURLClassLoader(candidate.getClassLoader()))
-            {
-               if (noAnnotationURLClassLoaderPools == null)
-               {
-                  noAnnotationURLClassLoaderPools = new ArrayList<AbstractClassPool>(); 
-               }
-               noAnnotationURLClassLoaderPools.add(candidate);
-            }
-         }
-         
-         //FIXME Remove once we have the JBoss 5 version of pool
-         if (noAnnotationURLClassLoaderPools != null)
-         {
-            for (AbstractClassPool pool : noAnnotationURLClassLoaderPools)
-            {
-               try
-               {
-                  pool.get(classname);
-                  return pool;
-               }
-               catch(NotFoundException ignoreTryNext)
-               {
-               }
-            }
-         }
-      }
-      return ClassPoolRepository.getInstance().getClassPoolFactory().
-      create(ClassPool.getDefault(), ClassPoolRepository.getInstance());
-   }
-   
-   /**
-    * NoAnnotationURLCLassLoader lives in different packages in JBoss 4 and 5
-    */
-   private boolean isInstanceOfNoAnnotationURLClassLoader(ClassLoader loader)
-   {
-      Class<?> parent = loader.getClass();
-      while (parent != null)
-      {
-         if ("NoAnnotationURLClassLoader".equals(parent.getSimpleName()))
-         {
-            return true;
-         }
-         parent = parent.getSuperclass();
-      }
-      return false;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ScopedRepositoryClassLoaderHelper.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ScopedRepositoryClassLoaderHelper.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ScopedRepositoryClassLoaderHelper.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,51 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss4;
-
-import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
-import org.jboss.mx.loading.LoaderRepository;
-import org.jboss.mx.loading.RepositoryClassLoader;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @autor adrian at jboss.org
- * @version $Revision$
- */
-public class ScopedRepositoryClassLoaderHelper
-{
-   public static boolean isScopedClassLoader(ClassLoader loader)
-   {
-      boolean scoped = false;
-      if (loader instanceof RepositoryClassLoader)
-      {
-         LoaderRepository repository = ((RepositoryClassLoader)loader).getLoaderRepository();
-         if (repository instanceof HeirarchicalLoaderRepository3)
-         {
-            scoped = true;
-            //HeirarchicalLoaderRepository3 hlr = (HeirarchicalLoaderRepository3)repository;
-            //boolean parentFirst = hlr.getUseParentFirst();
-         }
-      }
-      return scoped;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/SecurityActions.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/SecurityActions.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/SecurityActions.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,84 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss4;
-
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-class SecurityActions
-{
-   interface GetParentAction
-   {
-      ClassLoader getParent(ClassLoader loader);
-      
-      GetParentAction NON_PRIVILEGED = new GetParentAction()
-      {
-         public ClassLoader getParent(ClassLoader loader)
-         {
-            return loader.getParent();
-         }
-      };
-      
-      GetParentAction PRIVILEGED = new GetParentAction()
-      {
-         public ClassLoader getParent(final ClassLoader loader)
-         {
-            try
-            {
-               return AccessController.doPrivileged(new PrivilegedExceptionAction<ClassLoader>()
-               {
-                  public ClassLoader run() throws Exception
-                  {
-                     return loader.getParent();
-                  }
-               });
-            }
-            catch (PrivilegedActionException e)
-            {
-               throw new RuntimeException(e.getException());
-            }
-         }
-      };
-   }
-   
-   public static ClassLoader getParent(ClassLoader loader)
-   {
-      if (loader == null)
-      {
-         return null;
-      }
-      if (System.getSecurityManager() == null)
-      {
-         return GetParentAction.NON_PRIVILEGED.getParent(loader);
-      }
-      else
-      {
-         return GetParentAction.PRIVILEGED.getParent(loader);
-      }
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvoker.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvoker.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvoker.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,103 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss4;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.security.ProtectionDomain;
-
-import javassist.CannotCompileException;
-import javassist.CtClass;
-
-import org.jboss.logging.Logger;
-import org.jboss.mx.loading.RepositoryClassLoader;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class ToClassInvoker
-{
-   Logger logger = Logger.getLogger(this.getClass());
-
-   public File tmpDir;
-
-   public Object tmplock = new Object();
-
-   public ToClassInvoker(File tmpDir)
-   {
-      this.tmpDir = tmpDir;
-   }
-
-   public Class<?> toClass(ToClassInvokerPoolReference pool, CtClass cc, String classFileName, ClassLoader loader, ProtectionDomain domain)
-   throws CannotCompileException
-   {
-      boolean trace = logger.isTraceEnabled();
-      pool.lockInCache(cc);
-      final ClassLoader myloader = pool.getClassLoader();
-      if (myloader == null || tmpDir == null)
-      {
-         if (trace) logger.trace(this + " " + pool + ".toClass() myloader:" + myloader + " tmpDir:" + tmpDir + " default to superPool.toClass for " + cc.getName());
-         Class<?> clazz = pool.superPoolToClass(cc, loader, domain);
-         if (trace) logger.trace(this + " " + pool + " myloader:" + myloader + " created class:" + clazz);
-         return clazz;
-      }
-      Class<?> dynClass = null;
-      try
-      {
-         File classFile = null;
-         // Write the clas file to the tmpdir
-         synchronized (tmplock)
-         {
-            classFile = new File(tmpDir, classFileName);
-            if (trace) logger.trace(this + " " + pool + ".toClass() myloader:" + myloader + " writing bytes to " + classFile);
-            File pkgDirs = classFile.getParentFile();
-            pkgDirs.mkdirs();
-            FileOutputStream stream = new FileOutputStream(classFile);
-            stream.write(cc.toBytecode());
-            stream.flush();
-            stream.close();
-            classFile.deleteOnExit();
-         }
-         // We have to clear Blacklist caches or the class will never
-         // be found
-         //((UnifiedClassLoader)dcl).clearBlacklists();
-         // To be backward compatible
-         RepositoryClassLoader rcl = (RepositoryClassLoader)myloader;
-         rcl.clearClassBlackList();
-         rcl.clearResourceBlackList();
-
-         // Now load the class through the cl
-         dynClass = myloader.loadClass(cc.getName());
-         if (trace) logger.trace(this + " " + pool + " myloader:" + myloader + " created class:" + dynClass);
-         return dynClass;
-      }
-      catch (Exception ex)
-      {
-         ClassFormatError cfe = new ClassFormatError("Failed to load dyn class: " + cc.getName());
-         cfe.initCause(ex);
-         throw cfe;
-      }
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvokerPoolReference.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvokerPoolReference.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvokerPoolReference.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,39 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss4;
-
-import java.security.ProtectionDomain;
-
-import javassist.CannotCompileException;
-import javassist.CtClass;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface ToClassInvokerPoolReference
-{
-   Class<?> superPoolToClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException;
-   ClassLoader getClassLoader();
-   void lockInCache(CtClass clazz);
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/DomainRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/DomainRegistry.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/DomainRegistry.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,55 +0,0 @@
-package org.jboss.classpool.jboss5;
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.spi.dependency.Module;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface DomainRegistry
-{
-   ClassLoaderSystem getSystem();
-   
-   ClassLoaderDomain getDefaultDomain();
-   
-   boolean initMapsForLoader(ClassLoader loader, Module module, ClassLoader parentUnitLoader);
-
-   void cleanupLoader(ClassLoader loader);
-   
-   ClassLoaderDomain getClassLoaderDomainForLoader(ClassLoader cl);
-
-   ClassLoader getParentUnitLoader(ClassLoader loader);
-
-   Module getModule(ClassLoader loader);
-
-   ClassLoader getClassLoader(Module module);
-   
-   //List<ScopedVFSClassLoaderDomain> getAOPDomainsForClassLoaderDomain(ClassLoaderDomain domain);
-   
-   //ReadWriteLock getAOPDomainsLockForClassLoaderDomain(ClassLoaderDomain domain);
-}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,76 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss5;
-
-import java.net.URL;
-import java.security.ProtectionDomain;
-
-import javassist.CannotCompileException;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classpool.AbstractClassPool;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBoss5ClassPool extends AbstractClassPool implements ToClassInvokerPoolReference
-{
-   protected ToClassInvoker toClassInvoker = null;
-
-   boolean closed;
-   
-   protected JBoss5ClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, URL tmpURL)
-   {
-      super(cl, src, repository);
-      toClassInvoker = new ToClassInvoker(tmpURL);
-   }
-
-   protected JBoss5ClassPool(ClassPool src, ScopedClassPoolRepository repository)
-   {
-      super(src, repository);
-   }
-
-   public boolean isUnloadedClassLoader()
-   {
-      return closed;
-   }
-
-   public void close()
-   {
-      closed = true;
-      super.close();
-   }
-
-   public Class<?> toClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException
-   {
-      return toClassInvoker.toClass(this, cc, getResourceName(cc.getName()), loader, domain);
-   }
-
-   public Class<?> superPoolToClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException
-   {
-      return super.toClass(cc, loader, domain);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPoolFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,101 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.classpool.jboss5;
-
-import java.net.URL;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.spi.RealClassLoader;
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.AbstractJBossClassPoolFactory;
-import org.jboss.classpool.ClassPoolRepository;
-
-/**
- * Comment
- *
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
- * @author adrian at jboss.org
- * @version $Revision: 64815 $
- **/
-public class JBoss5ClassPoolFactory extends AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
-{
-   private DomainRegistry registry;
-   
-   public JBoss5ClassPoolFactory(DomainRegistry registry)
-   {
-      this.registry = registry;
-   }
-   
-   public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {      
-      ClassPool parent = getCreateParentClassPools(cl, src, repository);
-
-      AbstractClassPool pool = null;
-      
-      if (cl instanceof RealClassLoader)
-      {
-         Module module = registry.getModule(cl);
-         if (module != null && module.getDeterminedParentDomainName() != null)
-         {
-            //It is scoped
-            ClassLoaderSystem sys = registry.getSystem();
-            ClassLoaderDomain domain = sys.getDomain(module.getDeterminedDomainName());
-            boolean parentFirst = module.isJ2seClassLoadingCompliance();
-            ClassPool parentDomainPool = getParentUnitClassPool(cl); 
-            pool = new ScopedJBoss5ClassPool(cl, parent, parentDomainPool, repository, getTempURL(module), parentFirst, domain);
-         }
-         else
-         {
-            pool =  new JBoss5ClassPool(cl, parent, repository, getTempURL(module));
-         }
-      }
-      
-      if (pool == null)
-      {
-         pool = new AbstractClassPool(cl, parent, repository);
-      }
-      log.debug("Created pool " + pool + " for loader " + cl);
-      
-      return pool;
-   }
-
-   private ClassPool getParentUnitClassPool(ClassLoader cl)
-   {
-      ClassLoader parent = registry.getParentUnitLoader(cl);
-      return ClassPoolRepository.getInstance().registerClassLoader(parent);
-   }
-   
-
-   private URL getTempURL(Module module)
-   {
-      if (module == null)
-         return null;
-      
-      return module.getDynamicClassRoot();
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/RegisterModuleCallback.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/RegisterModuleCallback.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/RegisterModuleCallback.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,68 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss5;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.logging.Logger;
-
-/**
- * Use with org.jboss.classpool.jbosscl.JBossClDelegatingClassPoolFactory
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class RegisterModuleCallback
-{
-   Logger logger = Logger.getLogger(this.getClass());
-   
-   private Set<Module> registeredModules = new HashSet<Module>();
-   private Set<Module> unregisteredModules = new HashSet<Module>();
-
-   public synchronized void addModule(Module module)
-   {
-      logger.debug("Adding module " + module);
-      unregisteredModules.add(module);
-   }
-
-   public synchronized void removeModule(Module module)
-   {
-      logger.debug("Removing module " + module);
-      registeredModules.remove(module);
-      unregisteredModules.remove(module);
-   }
-   
-   public synchronized Set<Module> getUnregisteredModules()
-   {
-      return Collections.unmodifiableSet(new HashSet<Module>(unregisteredModules));
-   }
-   
-   public synchronized void registerModule(Module module)
-   {
-      logger.debug("Registering module " + module);
-      registeredModules.add(module);
-      unregisteredModules.remove(module);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ScopedJBoss5ClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ScopedJBoss5ClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ScopedJBoss5ClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,400 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss5;
-
-import java.lang.ref.WeakReference;
-import java.net.URL;
-import java.util.ArrayList;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.NotFoundException;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.Loader;
-import org.jboss.classloading.spi.RealClassLoader;
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.ClassPoolRepository;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class ScopedJBoss5ClassPool extends JBoss5ClassPool
-{
-   ThreadLocal<ClassPool> lastPool = new ThreadLocal<ClassPool>();
-   WeakReference<ClassLoaderDomain> domainRef;
-   /** The classpool representing the parent domain of this one */
-   ClassPool parentDomainPool;
-
-   public ScopedJBoss5ClassPool(ClassLoader cl, ClassPool src, ClassPool parentDomainPool, ScopedClassPoolRepository repository, 
-         URL tmpURL, boolean parentFirst, ClassLoaderDomain domain)
-   {
-      super(cl, src, repository, tmpURL);
-      super.childFirstLookup = !parentFirst;
-      this.parentDomainPool = parentDomainPool;
-      this.domainRef = new WeakReference<ClassLoaderDomain>(domain);
-      
-      logger.debug("Created new ScopedJBoss5ClasPool for " + cl + ", with parent: " + src + ", parentDomain: " + parentDomainPool + ", parentFirst: " + parentFirst);
-   }
-
-   private URL getResourceUrlForClass(String resourcename)
-   {
-      ClassLoaderDomain domain = domainRef.get();
-      return domain.getResource(resourcename);
-   }
-
-   private boolean isMine(URL myURL, String resourceName)
-   {
-      if (myURL == null)
-      {
-         return false;
-      }
-      
-      ClassLoaderDomain domain = domainRef.get();
-      Loader parent = domain.getParent();
-      URL parentURL = parent.getResource(resourceName);
-      
-      if (parentURL == null)
-      {
-         return true;
-      }
-      
-      if (!myURL.equals(parentURL))
-      {
-         return true;
-      }
-      
-      return false;
-   }
-   
-
-   @Override
-   protected synchronized CtClass get0(String classname, boolean useCache) throws NotFoundException
-   {
-      CtClass clazz = null;
-      if (useCache)
-      {
-         clazz = getCached(classname);
-         if (clazz != null)
-            return clazz;
-      }
-
-      if (!childFirstLookup)
-      {
-         if (parentDomainPool != null)
-         {
-            clazz = performGet(parentDomainPool, classname);
-            if (clazz != null)
-            {
-               return clazz;
-            }
-         }
-         if (parent != null)
-         {
-            clazz = performGet(parent, classname);
-            if (clazz != null)
-            {
-               return clazz;
-            }
-         }
-      }
-
-      clazz = createCtClass(classname, useCache);
-      if (clazz != null)
-      {
-         // clazz.getName() != classname if classname is "[L<name>;".
-         if (useCache)
-            cacheCtClass(clazz.getName(), clazz, false);
-
-         return clazz;
-      }
-
-      if (childFirstLookup)
-      {
-         if (parent != null)
-         {
-            clazz = performGet(parent, classname);
-            if (clazz != null)
-            {
-               return clazz;
-            }
-         }
-         if (parentDomainPool != null)
-         {
-            clazz = performGet(parentDomainPool, classname);
-            if (clazz != null)
-            {
-               return clazz;
-            }
-         }
-      }
-
-      return clazz;
-   }
-
-   private CtClass performGet(ClassPool pool, String classname)
-   {
-      try
-      {
-         // TODO check whether we should enable this optimization
-         //Want to avoid calling get() if possible since that creates NotFoundExceptions
-         //on misses which is expensive
-         /*if (pool instanceof AbstractClassPool)
-         {
-            return ((AbstractClassPool)pool).internalGet0(classname, true);
-         }
-         else
-         {*/
-            return pool.getCtClass(classname);
-      }
-      catch (NotFoundException e)
-      {
-         return null;
-      }
-   }
-   
-   
-   public CtClass getCached(String classname)
-   {
-      boolean trace = logger.isTraceEnabled();
-      
-      if (trace)
-      {
-         logger.trace("getCached() " + classname);
-      }
-      
-      if (classname == null)
-      {
-         if (trace)
-         {
-            logger.trace("getCached() returning null (classname == null)");
-         }
-         return null;
-      }
-      if (isUnloadedClassLoader())
-      {
-         if (trace)
-         {
-            logger.trace("getCached() returning null (unloaded)");
-         }
-         return null;
-      }
-
-      if (generatedClasses.get(classname) != null)
-      {
-         //It is a new class, and this callback is probably coming from the frozen check when creating a new nested class
-         if (trace)
-         {
-            logger.trace("getCached() In generated classes - check super");
-         }
-         return super.getCached(classname);
-      }
-      
-      //Is this from the scoped classloader itself of from the parent?
-      String resourcename = getResourceName(classname);
-      URL url = getResourceUrlForClass(resourcename);
-      
-      if (isMine(url, resourcename))
-      {
-         if (super.childFirstLookup)
-         {
-            //Parent delegation is false, attempt to get this class out of ourselves
-            CtClass clazz = super.getCachedLocally(classname);
-            if (clazz == null)
-            {
-               if (trace)
-               {
-                  logger.trace("getCached() Creating my class " + classname);
-               }
-               clazz = createCtClass(classname, false);
-               if (clazz != null)
-               {
-                  lockInCache(clazz);
-               }
-            }
-            if (clazz != null)
-            {
-               if (trace)
-               {
-                  logger.trace("getCached() Returning my class " + classname);
-               }
-               return clazz;
-            }
-         }
-         if (trace)
-         {
-            logger.trace("getCached() Checking super for my class " + classname);
-         }
-         return super.getCached(classname);
-      }
-      else if (url == null)
-      {
-         if (trace)
-         {
-            logger.trace("getCached() Checking super for my class " + classname + " (no url)");
-         }
-         return super.getCached(classname);
-      }
-      
-
-      try
-      {
-         ClassPool pool = getCorrectPoolForResource(classname, resourcename, url, trace);
-         if (trace)
-         {
-            logger.trace("getCached() Found pool for class " + classname + " " + pool);
-         }
-         if (pool != lastPool.get())
-         {
-            lastPool.set(pool);
-            CtClass found = pool.get(classname);
-            if (trace)
-            {
-               logger.trace("getCached() Found clazz " + classname + " in " + pool + " : " + found);
-            }
-            return found;
-         }
-      }
-      catch (NotFoundException e)
-      {
-      }
-      catch(StackOverflowError e)
-      {
-         throw e;
-      }
-      finally
-      {
-         lastPool.set(null);
-      }
-
-      return null;
-   }
-   
-   @Override
-   protected boolean includeInGlobalSearch()
-   {
-      return false;
-   } 
-   
-   private ClassPool getCorrectPoolForResource(String classname, String resourceName, URL url, boolean trace)
-   {
-      synchronized(ClassPoolRepository.getInstance().getRegisteredCLs())
-      {
-         //JBoss 5 has an extra NoAnnotationURLCLassLoader that is not on the default path, make sure that that is checked at the end
-         //FIXME This needs revisiting/removing once the 
-         ArrayList<ClassPool> noAnnotationURLClassLoaderPools = null;
-                 
-         ClassPoolRepository classPoolRepository = ClassPoolRepository.getInstance();
-         for(ClassPool classPool: classPoolRepository.getRegisteredCLs().values())
-         {
-            AbstractClassPool candidate = (AbstractClassPool)classPool;
-            if (candidate.isUnloadedClassLoader())
-            {
-               classPoolRepository.unregisterClassLoader(candidate.getClassLoader());
-               continue;
-            }
-            
-            if (candidate.getClassLoader() instanceof RealClassLoader)
-            {
-               //Sometimes the ClassLoader is a proxy for MBeanProxyExt?!
-               RealClassLoader bcl = (RealClassLoader)candidate.getClassLoader();
-               URL foundUrl = bcl.getResourceLocally(resourceName);
-               if (foundUrl != null)
-               {
-                  if (url.equals(foundUrl))
-                  {
-                     if (trace)
-                     {
-                        logger.trace("getCorrectPoolForResource() Candidate classloader " + bcl + " has local resource " + foundUrl);
-                     }
-                     return candidate;
-                  }
-               }
-            }
-            //FIXME Remove once we have the JBoss 5 version of pool
-            else if (isInstanceOfNoAnnotationURLClassLoader(candidate.getClassLoader()))
-            {
-               if (noAnnotationURLClassLoaderPools == null)
-               {
-                  noAnnotationURLClassLoaderPools = new ArrayList<ClassPool>(); 
-               }
-               noAnnotationURLClassLoaderPools.add(candidate);
-            }
-         }
-         
-         //FIXME Remove once we have the JBoss 5 version of pool
-         if (noAnnotationURLClassLoaderPools != null)
-         {
-            for (ClassPool pool : noAnnotationURLClassLoaderPools)
-            {
-               try
-               {
-                  pool.get(classname);
-                  if (trace)
-                  {
-                     logger.trace("getCorrectPoolForResource(() Found  " + classname + " (no url)");
-                  }
-                  return pool;
-               }
-               catch(NotFoundException ignoreTryNext)
-               {
-               }
-            }
-         }
-      }
-      return createTempPool();
-   }
-   
-   private ClassPool createTempPool()
-   {
-      //Rememeber that the stuff in jboss5/lib goes in a child classloader of the default classloader. We need
-      //to make this the parent of the temp classloader
-      ClassLoader loader = this.getClass().getClassLoader();// AspectManager.class.getClassLoader(); TODO validate this
-      ClassPool pool = ClassPoolRepository.getInstance().registerClassLoader(loader);
-      return ClassPoolRepository.getInstance().getClassPoolFactory().create(pool, ClassPoolRepository.getInstance());
-   }
-   
-   /**
-    * NoAnnotationURLCLassLoader lives in different packages in JBoss 4 and 5
-    */
-   private boolean isInstanceOfNoAnnotationURLClassLoader(ClassLoader loader)
-   {
-      if (loader == null)
-      {
-         return false;
-      }
-      Class<?> parent = loader.getClass();
-      while (parent != null)
-      {
-         if ("NoAnnotationURLClassLoader".equals(parent.getSimpleName()))
-         {
-            return true;
-         }
-         parent = parent.getSuperclass();
-      }
-      return false;
-   }
-   
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/SecurityActions.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/SecurityActions.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/SecurityActions.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,80 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss5;
-
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-class SecurityActions
-{
-   interface GetParentAction
-   {
-      ClassLoader getParent(ClassLoader loader);
-      
-      GetParentAction NON_PRIVILEGED = new GetParentAction()
-      {
-         public ClassLoader getParent(ClassLoader loader)
-         {
-            return loader.getParent();
-         }
-      };
-      
-      GetParentAction PRIVILEGED = new GetParentAction()
-      {
-         public ClassLoader getParent(final ClassLoader loader)
-         {
-            try
-            {
-               return AccessController.doPrivileged(new PrivilegedExceptionAction<ClassLoader>()
-               {
-                  public ClassLoader run() throws Exception
-                  {
-                     return loader.getParent();
-                  }
-               });
-            }
-            catch (PrivilegedActionException e)
-            {
-               throw new RuntimeException(e.getException());
-            }
-         }
-      };
-   }
-
-   public static ClassLoader getParent(ClassLoader loader)
-   {
-      if (System.getSecurityManager() == null)
-      {
-         return GetParentAction.NON_PRIVILEGED.getParent(loader);
-      }
-      else
-      {
-         return GetParentAction.PRIVILEGED.getParent(loader);
-      }
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ToClassInvoker.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ToClassInvoker.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ToClassInvoker.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,102 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss5;
-
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayOutputStream;
-import java.net.URL;
-import java.security.ProtectionDomain;
-
-import javassist.CannotCompileException;
-import javassist.CtClass;
-
-import org.jboss.classloading.spi.RealClassLoader;
-import org.jboss.logging.Logger;
-import org.jboss.virtual.plugins.context.memory.MemoryContextFactory;
-
-/**
- * 
- * 
- * @author  <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version  $Revision: 1.1 $
- */
-public class ToClassInvoker
-{
-   Logger logger = Logger.getLogger(this.getClass());
-   
-   public URL tempURL;
-
-   public Object tmplock = new Object();
-
-   public ToClassInvoker(URL tempURL)
-   {
-      this.tempURL = tempURL;
-   }
-
-   public Class<?> toClass(ToClassInvokerPoolReference pool, CtClass cc, String classFileName, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException
-   {
-      boolean trace = logger.isTraceEnabled();
-      pool.lockInCache(cc);
-      final ClassLoader myloader = pool.getClassLoader();
-      if (myloader == null || tempURL == null)
-      {
-         if (trace) logger.trace(this + " " + pool + ".toClass() myloader:" + myloader + " tempURL:" + tempURL + " default to superPool.toClass for " + cc.getName());
-         Class<?> clazz = pool.superPoolToClass(cc, loader, domain);
-         if (trace) logger.trace(this + " " + pool + " myloader:" + myloader + " created class:" + clazz);
-         return clazz;
-      }
-      
-      try
-      {
-         URL outputURL = new URL(tempURL.toString() + "/" + classFileName);
-         //Write the classfile to the temporary url
-         synchronized (tmplock)
-         {
-            if (trace) logger.trace(this + " " + pool + ".toClass() myloader:" + myloader + " writing bytes to " + tempURL);
-            ByteArrayOutputStream byteout = new ByteArrayOutputStream();
-            BufferedOutputStream out = new BufferedOutputStream(byteout);
-            out.write(cc.toBytecode());
-            out.flush();
-            out.close();
-            
-            byte[] classBytes = byteout.toByteArray();
-            MemoryContextFactory factory = MemoryContextFactory.getInstance();
-            factory.putFile(outputURL, classBytes);
-
-            if (myloader instanceof RealClassLoader)
-            {
-               ((RealClassLoader)myloader).clearBlackList(classFileName);
-            }
-            
-            Class<?> clazz = myloader.loadClass(cc.getName());
-            if (trace) logger.trace(this + " " + pool + " myloader:" + myloader + " created class:" + clazz);
-            return clazz;
-         }
-      }
-      catch(Exception e)
-      {
-         ClassFormatError cfe = new ClassFormatError("Failed to load dyn class: " + cc.getName() + " on " + this + " loader:" + myloader);
-         cfe.initCause(e);
-         throw cfe;
-      }
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ToClassInvokerPoolReference.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ToClassInvokerPoolReference.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ToClassInvokerPoolReference.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,40 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss5;
-
-import java.security.ProtectionDomain;
-
-import javassist.CannotCompileException;
-import javassist.CtClass;
-
-/**
- * Exposes methods on ClassPool needed by JBoss5ClassPool
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface ToClassInvokerPoolReference
-{
-   Class<?> superPoolToClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException;
-   ClassLoader getClassLoader();
-   void lockInCache(CtClass clazz);
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/VFSClassLoaderDomainRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/VFSClassLoaderDomainRegistry.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/VFSClassLoaderDomainRegistry.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,239 +0,0 @@
-package org.jboss.classpool.jboss5;
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-
-
-import java.lang.ref.WeakReference;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.spi.dependency.Module;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class VFSClassLoaderDomainRegistry implements DomainRegistry
-{
-   protected final static ClassLoaderDomain domain = new ClassLoaderDomain("NOT_USED_PLACEHOLDER");
-   
-   private ClassLoaderSystem system;
-   
-   private ClassLoaderDomain defaultDomain;
-   
-   /** classloader domains by their classloaders */
-   protected Map<ClassLoader, WeakReference<ClassLoaderDomain>> classLoaderDomainsByLoader = new WeakHashMap<ClassLoader, WeakReference<ClassLoaderDomain>>();
-
-   /** parent deployment unit classloaders indexed by children */
-   private Map<ClassLoader, WeakReference<ClassLoader>> classLoaderUnitParents = new WeakHashMap<ClassLoader, WeakReference<ClassLoader>>(); 
-   
-   /** Modules by classloader */
-   private Map<ClassLoader, WeakReference<Module>> classLoaderModules = new WeakHashMap<ClassLoader, WeakReference<Module>>();
-   
-   /** classloaders by module */
-   private Map<Module, WeakReference<ClassLoader>> moduleClassLoaders = new WeakHashMap<Module, WeakReference<ClassLoader>>();
-
-   protected Map<ClassLoaderDomain, Integer> classLoaderDomainReferenceCounts = new WeakHashMap<ClassLoaderDomain, Integer>();
-   
-   /**
-    * Needed for the tests, not expected to be needed in production
-    */
-   public void setSystem(ClassLoaderSystem system)
-   {
-      this.system = system;
-   }
-   
-   /**
-    * Needed for the tests, not expected to be needed in production
-    */
-   public void setDefaultDomain(ClassLoaderDomain domain)
-   {
-      this.defaultDomain = domain;
-   }
-   
-   public synchronized ClassLoaderSystem getSystem()
-   {
-      if (system == null)
-      {
-         system = ClassLoaderSystem.getInstance();
-      }
-      return system;
-   }
-   
-   public synchronized ClassLoaderDomain getDefaultDomain()
-   {
-      if (defaultDomain == null)
-      {
-         defaultDomain = getSystem().getDefaultDomain();
-      }
-      return defaultDomain;
-   }
-
-   public synchronized boolean initMapsForLoader(ClassLoader loader, Module module, ClassLoader parentUnitLoader)
-   {
-      if (loader == parentUnitLoader)
-      {
-         throw new IllegalArgumentException("initMapsForLoader() should only be called if parentUnitLoader is different from loader");
-      }
-      ClassLoaderSystem system = getSystem();
-      
-      String domainName = module.getDeterminedDomainName();
-      ClassLoaderDomain clDomain = system.getDomain(domainName);
-      this.validateInitMaps(loader, clDomain, module, parentUnitLoader);
-      
-      boolean ret = false;
-      if (!classLoaderDomainsByLoader.containsKey(loader))
-      {
-         Integer count = classLoaderDomainReferenceCounts.get(clDomain);
-         int cnt = count == null ? 0 : count.intValue();
-         classLoaderDomainReferenceCounts.put(clDomain, cnt);
-         
-         classLoaderDomainsByLoader.put(loader, new WeakReference<ClassLoaderDomain>(clDomain));
-         classLoaderUnitParents.put(loader, new WeakReference<ClassLoader>(parentUnitLoader));
-         classLoaderModules.put(loader, new WeakReference<Module>(module));
-         moduleClassLoaders.put(module, new WeakReference<ClassLoader>(loader));
-         ret = true;
-         this.initMapsDone(loader, clDomain, module, parentUnitLoader);
-      }
-      
-      
-      return ret;
-   }
-   
-   protected void validateInitMaps(ClassLoader loader, ClassLoaderDomain loaderDomain, Module module, ClassLoader parentUnitLoader)
-   {
-      
-   }
-   
-   protected void initMapsDone(ClassLoader loader, ClassLoaderDomain loaderDomain, Module module, ClassLoader parentUnitLoader)
-   {
-      
-   }
-   
-   public synchronized void cleanupLoader(ClassLoader loader)
-   {
-      validateCleanupLoader(loader);
-      WeakReference<ClassLoaderDomain> clDomainRef = classLoaderDomainsByLoader.remove(loader);
-      ClassLoaderDomain clDomain = clDomainRef == null ? null : clDomainRef.get();
-      int cnt = 0;
-      if (clDomain != null)
-      {
-         Integer count =  classLoaderDomainReferenceCounts.get(clDomain);
-         cnt = count == null ? 0 : count.intValue();
-         if (cnt > 0)
-         {
-            cnt--;
-         }
-         if (cnt == 0)
-         {
-            //aopDomainsByClassLoaderDomain.remove(clDomain);
-            classLoaderDomainReferenceCounts.remove(clDomain);
-         }
-         else
-         {
-            classLoaderDomainReferenceCounts.put(clDomain, ++cnt);
-         }
-         //ScopedVFSClassLoaderDomain aopDomain = aopDomainsByClassLoader.remove(loader);
-         classLoaderUnitParents.remove(loader);
-         WeakReference<Module> moduleRef = classLoaderModules.remove(loader);
-         if (moduleRef != null)
-         {
-            Module module = moduleRef.get();
-            if (module != null)
-            {
-               moduleClassLoaders.remove(module);
-            }
-         }
-         
-
-         /*List<ScopedVFSClassLoaderDomain> aopDomains = aopDomainsByClassLoaderDomain.get(clDomain);
-         if (aopDomains != null)
-         {
-            aopDomains.remove(aopDomain);
-         }
-         if (aopDomain != null)
-         {
-            aopDomain.getParent().unsubscribeSubDomain(aopDomain);
-         }*/
-      }
-      cleanupLoaderDone(loader, clDomain, cnt);
-      //aopDomainsByClassLoader.remove(loader);
-   }
-
-   protected void validateCleanupLoader(ClassLoader loader) {}
-   
-   protected void cleanupLoaderDone(ClassLoader loader, ClassLoaderDomain loaderDomain, int domainReferences) {}
-   
-   public synchronized ClassLoaderDomain getClassLoaderDomainForLoader(ClassLoader cl)
-   {
-      WeakReference<ClassLoaderDomain> clDomainRef = classLoaderDomainsByLoader.get(cl);
-      if (clDomainRef != null)
-      {
-         return clDomainRef.get();
-      }
-      
-      ClassLoader parent = SecurityActions.getParent(cl);
-      if (parent != null)
-      {
-         ClassLoaderDomain domain = getClassLoaderDomainForLoader(parent);
-         if (domain != null)
-         {
-            classLoaderDomainsByLoader.put(parent, new WeakReference<ClassLoaderDomain>(domain));
-            return domain;
-         }
-      }
-      return null;
-   }
-   
-   public synchronized ClassLoader getParentUnitLoader(ClassLoader loader)
-   {
-      WeakReference<ClassLoader> parentRef = classLoaderUnitParents.get(loader);
-      if (parentRef != null)
-      {
-         return parentRef.get();
-      }
-      return null;
-   }
-   
-   public synchronized Module getModule(ClassLoader loader)
-   {
-      WeakReference<Module> moduleRef = classLoaderModules.get(loader);
-      if (moduleRef != null)
-      {
-         return moduleRef.get();
-      }
-      return null;
-   }
-   
-   public synchronized ClassLoader getClassLoader(Module module)
-   {
-      WeakReference<ClassLoader> loaderRef = moduleClassLoaders.get(module);
-      if (loaderRef != null)
-      {
-         return loaderRef.get();
-      }
-      return null;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolDomain.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolDomain.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolDomain.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,251 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jbosscl;
-
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.NotFoundException;
-
-import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classpool.BaseClassPool;
-import org.jboss.classpool.BaseClassPoolDomain;
-import org.jboss.classpool.ClassLoaderUtils;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.DelegatingClassPool;
-import org.jboss.classpool.jboss5.DomainRegistry;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBossClClassPoolDomain extends BaseClassPoolDomain
-{
-   Map<String, Set<DelegatingClassPool>> poolsByPackage = new HashMap<String, Set<DelegatingClassPool>>();
-   final static List<DelegatingClassPool> EMPTY_LIST = Collections.unmodifiableList(Collections.EMPTY_LIST);
-   
-   DomainRegistry registry;
-   
-   public JBossClClassPoolDomain(String domainName, ClassPoolDomain parent, ParentPolicy parentPolicy, DomainRegistry registry)
-   {
-      super(domainName, 
-            new JBossClParentDelegationStrategy(
-                  parent, 
-                  parentPolicy, 
-                  JBossClClassPoolToClassPoolDomainAdaptorFactory.getInstance())
-      );
-      this.registry = registry;
-   }
-
-   synchronized void setupPoolsByPackage(DelegatingClassPool pool)
-   {
-      if (pool instanceof JBossClDelegatingClassPool == false)
-      {
-         throw new IllegalStateException("Not an instance of JBossClDelegatingClassPool: " + pool.getClass().getName());
-      }
-      
-      Module module = getModuleForPool(pool);
-      boolean trace = logger.isTraceEnabled();
-      
-      for (String pkg : module.getPackageNames())
-      {
-         Set<DelegatingClassPool> pools = poolsByPackage.get(pkg);
-         if (pools == null)
-         {
-            pools = new LinkedHashSet<DelegatingClassPool>();
-            poolsByPackage.put(pkg, pools);
-         }
-         pools.add(pool);
-         if (trace) logger.trace(this + " adding package " + pkg + " for pool " + pool);
-      }
-   }
-   
-   @Override
-   protected synchronized void removeClassPool(DelegatingClassPool pool)
-   {
-      super.removeClassPool(pool);
-   
-      Module module = getModuleForPool(pool);
-      boolean trace = logger.isTraceEnabled();
-
-      for (String pkg : module.getPackageNames())
-      {
-         Set<DelegatingClassPool> pools = poolsByPackage.get(pkg);
-         if (pools != null)
-         {
-            pools.remove(pool);
-            if (pools.size() == 0)
-            {
-               poolsByPackage.remove(pkg);
-               if (trace) logger.trace(this + " removing package " + pkg + " for pool " + pool);
-            }
-         }
-      }
-   }
- 
-   @Override
-   protected CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
-   {
-      if (trace) logger.trace(this + " looking for " + classname);
-      
-      CtClass clazz = getCheckPrimitive(classname);
-      if (clazz != null)
-      {
-         if (trace) logger.trace(this + " isPrimitive " + classname);
-      }
-      else
-      {
-         Module module = getModuleForPool(initiatingPool);
-         if (module != null && module.isImportAll())
-         {
-            //Use the old "big ball of mud" model
-            if (trace) logger.trace(this + " isImportAll");
-            return super.getCachedOrCreate(initiatingPool, classname, resourceName, create, trace);
-         }
-         
-         //Attempt OSGi style loading
-         if (isParentBefore(classname))
-         {
-            if (trace) logger.trace(this + " checking parent first for " + classname);
-            clazz = getCachedOrCreateFromParent(null, classname, resourceName, create, trace);
-         }
-         
-         //Check imports first
-         if (clazz == null && module != null)
-         {
-            if (trace) logger.trace(this + " checking imports for " + classname);
-            clazz = getCtClassFromModule(module, classname, trace);
-         }
-         
-         //Try to check the initiating pool itself
-         if (clazz == null && initiatingPool != null)
-         {
-            if (trace) logger.trace(this + " checking pool " + initiatingPool + " locally for " + classname);
-            clazz = initiatingPool.loadLocally(classname, resourceName, create);
-         }
-         
-         if (clazz == null && isParentAfter(classname))
-         {
-            if (trace) logger.trace(this + " checking parent last for " + classname);
-            clazz = getCachedOrCreateFromParent(null, classname, resourceName, create, trace);
-         }
-      }
-      if (trace) logger.trace(this + " found " + classname + " in " + (clazz == null ? "null" : clazz.getClassPool()));
-      return clazz;
-   }
-   
-   private CtClass getCheckPrimitive(String classname)
-   {
-      if (ClassLoaderUtils.isPrimitiveType(classname))
-      {
-         try
-         {
-            return ClassPool.getDefault().get(classname);
-         }
-         catch(NotFoundException e)
-         {
-            throw new RuntimeException(classname + " should have been a primitive", e);
-         }
-      }
-      return null;
-   }
-   
-   private Module getModuleForPool(DelegatingClassPool pool)
-   {
-      if (pool == null)
-      {
-         return null;
-      }
-      Module module = ((JBossClDelegatingClassPool)pool).getModule();
-      if (logger.isTraceEnabled()) logger.trace(this + " got module " + module + " for " + pool);
-      return module;
-   }
-   
-   @Override
-   protected List<DelegatingClassPool> getPoolsForClassName(String classname)
-   {
-      String packageName = ClassLoaderUtils.getPackageName(classname);
-      Set<DelegatingClassPool> poolSet = poolsByPackage.get(packageName);
-      if (poolSet == null)
-      {
-         return EMPTY_LIST;
-      }
-      return new ArrayList<DelegatingClassPool>(poolSet);
-   }
-
-   private CtClass getCtClassFromModule(final Module module, final String classname, boolean trace)
-   {
-      Module found = null;
-      try
-      {
-         found = AccessController.doPrivileged(new PrivilegedExceptionAction<Module>()
-         {
-         
-            public Module run() throws Exception
-            {
-               return module.getModuleForClass(ClassLoaderUtils.stripArrayFromClassName(classname));
-            }
-         });
-      }
-      catch (PrivilegedActionException e)
-      {
-         if (e.getCause() instanceof ClassNotFoundException == false)
-         {
-            throw new RuntimeException(e);
-         }
-      }
-
-      if (trace) logger.trace(this + " module for " + classname + " " + found);
-
-      if (found == null || found == module)
-      {
-         return null;
-      }
-      ClassLoader foundLoader = registry.getClassLoader(found);
-      ClassPool pool = ClassPoolRepository.getInstance().registerClassLoader(foundLoader);
-      try
-      {
-         if (pool instanceof BaseClassPool)
-         {
-            return getCachedOrCreateFromPool((BaseClassPool)pool, classname, true, trace);
-         }
-         return pool.get(classname);
-      }
-      catch(NotFoundException e)
-      {
-      }
-      return null;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,42 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jbosscl;
-
-import javassist.ClassPool;
-
-import org.jboss.classloader.spi.base.BaseClassLoaderDomain;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.ClassPoolToClassPoolDomainAdapter;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBossClClassPoolToClassPoolDomainAdapter extends ClassPoolToClassPoolDomainAdapter
-{
-   @Override
-   public ClassPool initialiseParentClassLoader()
-   {
-      return ClassPoolRepository.getInstance().registerClassLoader(BaseClassLoaderDomain.class.getClassLoader());
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdaptorFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdaptorFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdaptorFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,51 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jbosscl;
-
-import org.jboss.classpool.ClassPoolToClassPoolDomainAdapter;
-import org.jboss.classpool.ClassPoolToClassPoolDomainAdaptorFactory;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBossClClassPoolToClassPoolDomainAdaptorFactory implements ClassPoolToClassPoolDomainAdaptorFactory
-{
-   private static final JBossClClassPoolToClassPoolDomainAdaptorFactory INSTANCE = new JBossClClassPoolToClassPoolDomainAdaptorFactory();
-   
-   private JBossClClassPoolToClassPoolDomainAdaptorFactory()
-   {
-      
-   }
-   
-   public static ClassPoolToClassPoolDomainAdaptorFactory getInstance()
-   {
-      return INSTANCE;
-   }
-   
-   public ClassPoolToClassPoolDomainAdapter createAdaptor()
-   {
-      return new JBossClClassPoolToClassPoolDomainAdapter();
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,95 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jbosscl;
-
-import java.lang.ref.WeakReference;
-import java.security.ProtectionDomain;
-
-import javassist.CannotCompileException;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.DelegatingClassPool;
-import org.jboss.classpool.jboss5.RegisterModuleCallback;
-import org.jboss.classpool.jboss5.ToClassInvoker;
-import org.jboss.classpool.jboss5.ToClassInvokerPoolReference;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBossClDelegatingClassPool extends DelegatingClassPool implements ToClassInvokerPoolReference
-{
-   private WeakReference<Module> module;
-   private RegisterModuleCallback callback;
-
-   ToClassInvoker toClassInvoker;
-   
-   protected JBossClDelegatingClassPool(ClassPoolDomain domain, ClassLoader cl, ClassPool parent,
-         ScopedClassPoolRepository repository, Module module, RegisterModuleCallback callback)
-   {
-      super(domain, cl, parent, repository);
-      if (module == null)
-      {
-         throw new IllegalStateException("Null Module for loader " + cl);
-      }
-      if (domain instanceof JBossClClassPoolDomain == false)
-      {
-         throw new IllegalArgumentException("Domain was not instance of JBossClClassPoolDomain: " + domain.getClass().getName());
-      }
-      this.module = new WeakReference<Module>(module);
-      this.callback = callback;
-      toClassInvoker = new ToClassInvoker(module == null ? null : module.getDynamicClassRoot());
-      if (logger.isTraceEnabled()) logger.trace(this + " module");
-      ((JBossClClassPoolDomain)domain).setupPoolsByPackage(this);
-   }
-
-   Module getModule()
-   {
-      if (module != null)
-      {
-         return module.get();
-      }
-      return null;
-   }
-   
-   public Class<?> toClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException
-   {
-      return toClassInvoker.toClass(this, cc, getResourceName(cc.getName()), loader, domain);
-   }
-
-   public Class<?> superPoolToClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException
-   {
-      return super.toClass(cc, loader, domain);
-   }
-
-   @Override
-   public void close()
-   {
-      super.close();
-      callback.removeModule(getModule());
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,177 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jbosscl;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Set;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.spi.RealClassLoader;
-import org.jboss.classloading.spi.dependency.ClassLoading;
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.AbstractJBossDelegatingClassPoolFactory;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.ClassPoolDomainRegistry;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.ClassPoolToClassPoolDomainAdapter;
-import org.jboss.classpool.NonDelegatingClassPool;
-import org.jboss.classpool.jboss5.DomainRegistry;
-import org.jboss.classpool.jboss5.RegisterModuleCallback;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBossClDelegatingClassPoolFactory extends AbstractJBossDelegatingClassPoolFactory implements ScopedClassPoolFactory
-{
-   private final DomainRegistry registry;
-   
-   private final RegisterModuleCallback registerModuleCallback;
-   
-   public JBossClDelegatingClassPoolFactory(DomainRegistry registry, RegisterModuleCallback registerModuleCallback)
-   {
-      this.registry = registry;
-      this.registerModuleCallback = registerModuleCallback;
-   }
-   
-   public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      ClassPool parent = getCreateParentClassPools(cl, src, repository);
-      
-      if (cl instanceof RealClassLoader)
-      {
-         Module module = registry.getModule(cl);
-         if (module == null)
-         {
-            module = getModuleForClassLoader(cl);
-         }
-         registerModuleCallback.registerModule(module);
-         registerBootstrapLoaders();
-         ClassPoolDomain domain = getDomain(module, cl);  
-         return new JBossClDelegatingClassPool(domain, cl, parent, repository, module, registerModuleCallback);
-      }
-      
-      return new NonDelegatingClassPool(cl, parent, repository, true);
-   }
-
-   private synchronized ClassPoolDomain getDomain(Module module, ClassLoader cl)
-   {
-      ClassLoaderDomain domain = null;
-      ClassLoaderSystem sys = registry.getSystem();
-      if (module != null && module.getDeterminedParentDomainName() != null)
-      {
-         //It is scoped
-         domain = sys.getDomain(module.getDeterminedDomainName());
-      }
-      
-      if (domain == null)
-      {
-         domain = registry.getDefaultDomain();
-      }
-      
-      ClassPoolDomain poolDomain = ClassPoolDomainRegistry.getInstance().getDomain(domain);
-      if (poolDomain == null)
-      {
-         String parentDomainName = domain.getParentDomainName();
-         ClassPoolDomain parentPoolDomain = null;
-         if (parentDomainName != null)
-         {
-            ClassLoaderDomain parentDomain = sys.getDomain(parentDomainName);
-            if (parentDomain == null)
-            {
-               throw new RuntimeException("No domain found called: " + parentDomainName);
-            }
-            parentPoolDomain = ClassPoolDomainRegistry.getInstance().getDomain(parentDomain);
-         }
-         if (parentDomainName == null)
-         {
-            ClassLoader parentUnitLoader = registry.getParentUnitLoader(cl);
-            if (parentUnitLoader != null)
-            {
-               ClassPool parentUnitPool = ClassPoolRepository.getInstance().registerClassLoader(parentUnitLoader);
-               parentPoolDomain = new ClassPoolToClassPoolDomainAdapter(parentUnitPool);
-            }
-         }
-         poolDomain = new JBossClClassPoolDomain(domain.getName(), parentPoolDomain, domain.getParentPolicy(), registry);
-         
-         ClassPoolDomainRegistry.getInstance().addClassPoolDomain(domain, poolDomain);
-      }
-      return poolDomain;
-   }
-   
-   @Override
-   protected ClassPool getCreateParentClassPools(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      ClassPool parent = super.getCreateParentClassPools(cl, src, repository);
-      if (parent == ClassPool.getDefault())
-      {
-         //In AS BaseClassLoader seems to normally have a null parent
-         return null;
-      }
-      return parent;
-   }
-   
-   private void registerBootstrapLoaders()
-   {
-      Set<Module> unregistered = registerModuleCallback.getUnregisteredModules();
-      if (unregistered.size() > 0)
-      {
-         for (Module module : unregistered)
-         {
-            ClassLoader loader = getClassLoaderForModule(module);
-            log.debug("Registering loader for module " + module + ": " + loader);
-            ClassPoolRepository.getInstance().registerClassLoader(loader);
-         }
-      }
-   }
-   
-   private ClassLoader getClassLoaderForModule(final Module module)
-   {
-      return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
-      {
-      
-         public ClassLoader run()
-         {
-            return ClassLoading.getClassLoaderForModule(module);
-         }
-      });
-   }
-   
-   private Module getModuleForClassLoader(final ClassLoader classLoader)
-   {
-      return AccessController.doPrivileged(new PrivilegedAction<Module>()
-      {
-         public Module run()
-         {
-            return ClassLoading.getModuleForClassLoader(classLoader);
-         }
-      });
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClParentDelegationStrategy.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClParentDelegationStrategy.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClParentDelegationStrategy.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,65 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jbosscl;
-
-import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
-import org.jboss.classpool.AbstractParentDelegationStrategy;
-import org.jboss.classpool.ClassLoaderUtils;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.ClassPoolToClassPoolDomainAdaptorFactory;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-class JBossClParentDelegationStrategy extends AbstractParentDelegationStrategy
-{
-   ParentPolicy parentPolicy;
-   
-   JBossClParentDelegationStrategy(ClassPoolDomain parent, ParentPolicy parentPolicy, ClassPoolToClassPoolDomainAdaptorFactory adaptorFactory)
-   {
-      super(parent, adaptorFactory);
-      if (parentPolicy == null)
-      {
-         throw new IllegalStateException("Null parent policy");
-      }
-      this.parentPolicy = parentPolicy;
-   }
-
-   public boolean isParentAfter(String classname)
-   {
-      ClassFilter filter = parentPolicy.getAfterFilter();
-      boolean isParentAfter = filter.matchesClassName(ClassLoaderUtils.stripArrayFromClassName(classname));
-      if (logger.isTraceEnabled()) logger.trace(this + " " + getDomain() + " isParentAfter " + isParentAfter);      
-      return isParentAfter;
-   }
-
-   public boolean isParentBefore(String classname)
-   {
-      ClassFilter filter = parentPolicy.getBeforeFilter();
-      boolean isParentBefore = filter.matchesClassName(ClassLoaderUtils.stripArrayFromClassName(classname));
-      if (logger.isTraceEnabled()) logger.trace(this + " " + getDomain() + " isParentBefore " + isParentBefore);
-      return isParentBefore;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/SecurityActions.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/SecurityActions.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/SecurityActions.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,90 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jbosscl;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-class SecurityActions
-{
-   
-   interface GetClassLoaderAction 
-   {
-      ClassLoader getClassLoader(Class<?> clazz);
-      
-      GetClassLoaderAction NON_PRIVILEGED = new GetClassLoaderAction() {
-
-         public ClassLoader getClassLoader(Class<?> clazz)
-         {
-            return clazz.getClassLoader();
-         }};
-
-     GetClassLoaderAction PRIVILEGED = new GetClassLoaderAction() {
-
-         public ClassLoader getClassLoader(final Class<?> clazz)
-         {
-            return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
-
-               public ClassLoader run()
-               {
-                  return clazz.getClassLoader();
-               }});
-         }};
-   }
-   
-   static ClassLoader getClassLoader(Class<?> clazz)
-   {
-      if (System.getSecurityManager() == null)
-      {
-         return GetClassLoaderAction.NON_PRIVILEGED.getClassLoader(clazz);
-      }
-      else
-      {
-         return GetClassLoaderAction.PRIVILEGED.getClassLoader(clazz);
-      }
-   }
-   
-   public static class GetContextClassLoaderAction implements PrivilegedAction<ClassLoader>
-   {
-      public static GetContextClassLoaderAction INSTANCE = new GetContextClassLoaderAction();
-      
-      public ClassLoader run()
-      {
-         return Thread.currentThread().getContextClassLoader();
-      }
-   }
-
-   static ClassLoader getContextClassLoader()
-   {
-      if (System.getSecurityManager() == null)
-         return Thread.currentThread().getContextClassLoader();
-      else
-         return AccessController.doPrivileged(GetContextClassLoaderAction.INSTANCE);
-   }
-   
-}

Added: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/AbstractJBossClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/AbstractJBossClassPoolFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/AbstractJBossClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,63 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.plugins.as;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.classpool.spi.AbstractClassPool;
+import org.jboss.classpool.spi.AbstractClassPoolFactory;
+import org.jboss.classpool.temp.TempJBossClassPool;
+import org.jboss.logging.Logger;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractJBossClassPoolFactory extends AbstractClassPoolFactory
+{
+   protected final Logger log = Logger.getLogger(this.getClass().getName());
+   
+   protected ClassPool getCreateParentClassPools(final ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      //Make sure that we get classpools for all the parent classloaders
+      if (cl == null)
+      {
+         return ClassPool.getDefault();
+      }
+      ClassLoader parent = SecurityActions.getParent(cl);
+
+      if (parent != null)
+      {
+         return repository.registerClassLoader(parent);
+      }
+      return src;
+   }
+   
+   public AbstractClassPool create(ClassPool src, ScopedClassPoolRepository repository)
+   {
+      return new TempJBossClassPool(src, repository);
+   }
+
+
+}

Added: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/DelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/DelegatingClassPool.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/DelegatingClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,135 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.plugins.as;
+
+
+import org.jboss.classpool.base.BaseClassPool;
+import org.jboss.classpool.domain.AbstractClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.helpers.ClassLoaderUtils;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.NotFoundException;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+/**
+ * Base class for classpools backed by a domain
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DelegatingClassPool extends BaseClassPool
+{
+   private final ClassPoolDomain domain;
+   
+   private boolean closed;
+   
+   public DelegatingClassPool(ClassPoolDomain domain, ClassLoader cl, ClassPool parent, ScopedClassPoolRepository repository)
+   {
+      super(cl, parent, repository);
+      if (domain == null)
+      {
+         throw new IllegalArgumentException("Domain was null");
+      }
+      if (domain instanceof AbstractClassPoolDomain == false)
+      {
+         throw new IllegalArgumentException("Domain must implement AbstractClassPoolDomain");
+      }
+      if (logger.isTraceEnabled()) logger.trace(this + " domain:" + this);
+      this.domain = domain;
+      this.domain.addClassPool(this);
+   }
+
+   public CtClass loadLocally(String classname, String resourceName, boolean create)
+   {
+      boolean trace = logger.isTraceEnabled();
+      if (trace) logger.trace(this + " attempt to load locally " + classname);
+         
+      CtClass clazz = null;
+      if (isLocalResource(resourceName, trace))
+      {
+         clazz = getCachedLocally(classname);
+         if (clazz == null && create)
+         {
+            clazz = createCtClass(classname, true);
+         }
+      }
+      if (trace) logger.trace(this + " loaded locally " + classname + " " + getClassPoolLogStringForClass(clazz));
+      return clazz;
+   }
+   
+   /**
+    * Overrides ClassPool.get0() so that we can look up classes without caching them in the initiating pool.
+    * The DelgatingClassPool + DomainClassPool handle the caching in the correct pool + handles the 
+    * parentFirst functionality
+    */
+   @Override
+   public synchronized CtClass get0(String classname, boolean useCache) throws NotFoundException
+   {
+      if (isGeneratedClass(classname))
+      {
+         return null;
+      }
+      CtClass clazz = domain.getCachedOrCreate(this, classname, true);
+      if (clazz == null)
+      {
+         //It is probably a generated proxy. The package name can be different (for example if it is
+         //a proxy for a java system class) than the package names exported by the loaders.
+         //TODO It should be possible to remove this once these have been done:
+         //https://jira.jboss.org/jira/browse/JBCL-25
+         //https://jira.jboss.org/jira/browse/JBCL-92
+         clazz = loadLocally(classname, ClassLoaderUtils.getResourceName(classname), true);
+      }
+      return clazz;
+   }
+   
+   @Override
+   public boolean isUnloadedClassLoader()
+   {
+      return closed;
+   }
+
+   @Override
+   public void close()
+   {
+      closed = true;
+      super.close();
+      domain.removeClassPool(this);
+   }
+
+   @Override
+   public CtClass getCached(String classname)
+   {
+      if (isGeneratedClass(classname))
+      {
+         return null;
+      }
+      return domain.getCachedOrCreate(this, classname, false);
+   }
+   
+   @Override
+   public String toString()
+   {
+      return "[" + super.toString() + " domain: " + domain + "]";
+   }
+}

Added: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/NonDelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/NonDelegatingClassPool.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/NonDelegatingClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,69 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.plugins.as;
+
+import org.jboss.classpool.base.BaseClassPool;
+import org.jboss.classpool.spi.AbstractClassPool;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+
+/**
+ * ClassPool for class loaders not backed by a repository/classloading domain
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class NonDelegatingClassPool extends BaseClassPool
+{
+   public NonDelegatingClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, boolean parentFirst)
+   {
+      super(cl, src, repository, AbstractClassPool.SEARCH_LOCAL_ONLY_STRATEGY);
+      super.childFirstLookup = !parentFirst;
+   }
+
+   @Override
+   public CtClass createCtClass(String classname, boolean useCache)
+   {
+      boolean trace = logger.isTraceEnabled();
+      CtClass clazz = null;
+      if (!childFirstLookup)
+      {
+         if (trace)logger.trace(this + " attempting to create " + classname + " in parent pool (parentFirst)");
+         clazz = createParentCtClass(classname, useCache, trace);
+      }
+      if (clazz == null && isLocalResource(getResourceName(classname), trace))
+      {
+         clazz = super.createCtClass(classname, useCache);
+      }
+      if (childFirstLookup && clazz == null)
+      {
+         if (trace)logger.trace(this + " attempting to create " + classname + " in parent pool (parentLast)");
+         clazz = createParentCtClass(classname, useCache, trace);
+      }
+      
+      if (trace)logger.trace(this + " created " + classname + " " + getClassPoolLogStringForClass(clazz));
+      return clazz;
+   }
+}

Added: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/SecurityActions.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/SecurityActions.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as/SecurityActions.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,87 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.plugins.as;
+
+import java.beans
+.PropertyEditorManager;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+
+import org.jboss.util.propertyeditor.ClassArrayEditor;
+import org.jboss.util.propertyeditor.IntArrayEditor;
+import org.jboss.util.propertyeditor.StringArrayEditor;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+class SecurityActions
+{
+   interface GetParentAction
+   {
+      ClassLoader getParent(ClassLoader loader);
+      
+      GetParentAction NON_PRIVILEGED = new GetParentAction()
+      {
+         public ClassLoader getParent(ClassLoader loader)
+         {
+            return loader.getParent();
+         }
+      };
+      
+      GetParentAction PRIVILEGED = new GetParentAction()
+      {
+         public ClassLoader getParent(final ClassLoader loader)
+         {
+            try
+            {
+               return AccessController.doPrivileged(new PrivilegedExceptionAction<ClassLoader>()
+               {
+                  public ClassLoader run() throws Exception
+                  {
+                     return loader.getParent();
+                  }
+               });
+            }
+            catch (PrivilegedActionException e)
+            {
+               throw new RuntimeException(e.getException());
+            }
+         }
+      };
+   }
+
+   public static ClassLoader getParent(ClassLoader loader)
+   {
+      if (System.getSecurityManager() == null)
+      {
+         return GetParentAction.NON_PRIVILEGED.getParent(loader);
+      }
+      else
+      {
+         return GetParentAction.PRIVILEGED.getParent(loader);
+      }
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4 (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4)

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/JBossClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPool.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/JBossClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
-package org.jboss.classpool.jboss4;
+package org.jboss.classpool.plugins.as4;
 
 import java.io.File;
 import java.net.URL;
@@ -30,7 +30,7 @@
 import javassist.CtClass;
 import javassist.scopedpool.ScopedClassPoolRepository;
 
-import org.jboss.classpool.AbstractClassPool;
+import org.jboss.classpool.spi.AbstractClassPool;
 import org.jboss.mx.loading.RepositoryClassLoader;
 
 /**

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/JBossClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPoolFactory.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/JBossClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,130 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.classpool.jboss4;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.AbstractJBossClassPoolFactory;
-import org.jboss.mx.loading.RepositoryClassLoader;
-
-/**
- * Comment
- *
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
- * @author adrian at jboss.org
- * @version $Revision: 70841 $
- **/
-public class JBossClassPoolFactory extends AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
-{
-   protected File tmpClassesDir;
-
-   public JBossClassPoolFactory(File tmpClassesDir) throws IOException
-   {
-      this.tmpClassesDir = tmpClassesDir;
-
-   }
-   public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      ClassPool parent = getCreateParentClassPools(cl, src, repository);
-      if (cl instanceof RepositoryClassLoader)
-      {
-         File tempdir = getTempDirectory(cl);
-         URL tmpCP;
-         try
-         {
-            tmpCP = createURLAndAddToLoader(cl, tempdir);
-         }
-         catch (IOException e)
-         {
-            throw new RuntimeException(e);
-         }
-         if (ScopedRepositoryClassLoaderHelper.isScopedClassLoader(cl))
-         {
-            //It is scoped
-            return new ScopedJBossClassPool(cl, parent, repository, tempdir, tmpCP);
-         }
-         return new JBossClassPool(cl, parent, repository, tempdir, tmpCP);
-      }
-      return new AbstractClassPool(cl, parent, repository);
-   }
-
-   protected File getTempDirectory(ClassLoader cl)
-   {
-      File tempdir = null;
-      int attempts = 0;
-      IOException ex = null;
-      while (tempdir == null && attempts < 5)
-      {
-         //Workaround for JBAOP-254, retry a few times
-         try
-         {
-            tempdir = createTempDir(cl);
-         }
-         catch (IOException e)
-         {
-            ex = e;
-         }
-      }
-      
-      if (tempdir == null)
-      {
-         throw new RuntimeException("", ex);
-      }
-      
-      return tempdir;
-   }
-
-   public File createTempDir(ClassLoader cl) throws IOException
-   {
-      File tempdir = File.createTempFile("ucl", "", tmpClassesDir);
-      tempdir.delete();
-      tempdir.mkdir();
-      tempdir.deleteOnExit();
-
-      return tempdir;
-   }
-   
-   private URL createURLAndAddToLoader(ClassLoader cl, File tempdir) throws IOException
-   {
-      URL tmpURL = tempdir.toURL();
-      URL tmpCP = new URL(tmpURL, "?dynamic=true");
-
-      RepositoryClassLoader ucl = (RepositoryClassLoader) cl;
-
-      // We may be undeploying.
-      if (ucl.getLoaderRepository() != null)
-      {
-         ucl.addURL(tmpCP);
-      }
-      
-      return tmpCP;
-   }
-
-}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/JBossClassPoolFactory.java (from rev 92349, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/JBossClassPoolFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/JBossClassPoolFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/JBossClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,129 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.classpool.plugins.as4;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.classpool.plugins.as.AbstractJBossClassPoolFactory;
+import org.jboss.classpool.spi.AbstractClassPool;
+import org.jboss.classpool.spi.AbstractClassPoolFactory;
+import org.jboss.mx.loading.RepositoryClassLoader;
+
+/**
+ * Comment
+ *
+ * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
+ * @author adrian at jboss.org
+ * @version $Revision: 70841 $
+ **/
+public class JBossClassPoolFactory extends AbstractJBossClassPoolFactory
+{
+   protected File tmpClassesDir;
+
+   public JBossClassPoolFactory(File tmpClassesDir) throws IOException
+   {
+      this.tmpClassesDir = tmpClassesDir;
+
+   }
+   public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      ClassPool parent = getCreateParentClassPools(cl, src, repository);
+      if (cl instanceof RepositoryClassLoader)
+      {
+         File tempdir = getTempDirectory(cl);
+         URL tmpCP;
+         try
+         {
+            tmpCP = createURLAndAddToLoader(cl, tempdir);
+         }
+         catch (IOException e)
+         {
+            throw new RuntimeException(e);
+         }
+         if (ScopedRepositoryClassLoaderHelper.isScopedClassLoader(cl))
+         {
+            //It is scoped
+            return new ScopedJBossClassPool(cl, parent, repository, tempdir, tmpCP);
+         }
+         return new JBossClassPool(cl, parent, repository, tempdir, tmpCP);
+      }
+      return new AbstractClassPool(cl, parent, repository);
+   }
+
+   protected File getTempDirectory(ClassLoader cl)
+   {
+      File tempdir = null;
+      int attempts = 0;
+      IOException ex = null;
+      while (tempdir == null && attempts < 5)
+      {
+         //Workaround for JBAOP-254, retry a few times
+         try
+         {
+            tempdir = createTempDir(cl);
+         }
+         catch (IOException e)
+         {
+            ex = e;
+         }
+      }
+      
+      if (tempdir == null)
+      {
+         throw new RuntimeException("", ex);
+      }
+      
+      return tempdir;
+   }
+
+   public File createTempDir(ClassLoader cl) throws IOException
+   {
+      File tempdir = File.createTempFile("ucl", "", tmpClassesDir);
+      tempdir.delete();
+      tempdir.mkdir();
+      tempdir.deleteOnExit();
+
+      return tempdir;
+   }
+   
+   private URL createURLAndAddToLoader(ClassLoader cl, File tempdir) throws IOException
+   {
+      URL tmpURL = tempdir.toURL();
+      URL tmpCP = new URL(tmpURL, "?dynamic=true");
+
+      RepositoryClassLoader ucl = (RepositoryClassLoader) cl;
+
+      // We may be undeploying.
+      if (ucl.getLoaderRepository() != null)
+      {
+         ucl.addURL(tmpCP);
+      }
+      
+      return tmpCP;
+   }
+
+}

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/LoaderRepositoryUrlUtil.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/LoaderRepositoryUrlUtil.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/LoaderRepositoryUrlUtil.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jboss4;
+package org.jboss.classpool.plugins.as4;
 
 import java.net.URL;
 

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ScopedJBossClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ScopedJBossClassPool.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ScopedJBossClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jboss4;
+package org.jboss.classpool.plugins.as4;
 
 import java.io.File;
 import java.net.URL;
@@ -30,9 +30,9 @@
 import javassist.NotFoundException;
 import javassist.scopedpool.ScopedClassPoolRepository;
 
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.jboss4.LoaderRepositoryUrlUtil.UrlInfo;
+import org.jboss.classpool.plugins.as4.LoaderRepositoryUrlUtil.UrlInfo;
+import org.jboss.classpool.spi.AbstractClassPool;
+import org.jboss.classpool.spi.ClassPoolRepository;
 import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
 import org.jboss.mx.loading.LoaderRepository;
 import org.jboss.mx.loading.RepositoryClassLoader;

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ScopedRepositoryClassLoaderHelper.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ScopedRepositoryClassLoaderHelper.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ScopedRepositoryClassLoaderHelper.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jboss4;
+package org.jboss.classpool.plugins.as4;
 
 import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
 import org.jboss.mx.loading.LoaderRepository;

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/SecurityActions.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/SecurityActions.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/SecurityActions.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jboss4;
+package org.jboss.classpool.plugins.as4;
 
 import java.security.AccessController;
 import java.security.PrivilegedActionException;

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvoker.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvoker.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvoker.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,103 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss4;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.security.ProtectionDomain;
-
-import javassist.CannotCompileException;
-import javassist.CtClass;
-
-import org.jboss.logging.Logger;
-import org.jboss.mx.loading.RepositoryClassLoader;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class ToClassInvoker
-{
-   Logger logger = Logger.getLogger(this.getClass());
-
-   public File tmpDir;
-
-   public Object tmplock = new Object();
-
-   public ToClassInvoker(File tmpDir)
-   {
-      this.tmpDir = tmpDir;
-   }
-
-   public Class<?> toClass(ToClassInvokerPoolReference pool, CtClass cc, String classFileName, ClassLoader loader, ProtectionDomain domain)
-   throws CannotCompileException
-   {
-      boolean trace = logger.isTraceEnabled();
-      pool.lockInCache(cc);
-      final ClassLoader myloader = pool.getClassLoader();
-      if (myloader == null || tmpDir == null)
-      {
-         if (trace) logger.trace(this + " " + pool + ".toClass() myloader:" + myloader + " tmpDir:" + tmpDir + " default to superPool.toClass for " + cc.getName());
-         Class<?> clazz = pool.superPoolToClass(cc, loader, domain);
-         if (trace) logger.trace(this + " " + pool + " myloader:" + myloader + " created class:" + clazz);
-         return clazz;
-      }
-      Class<?> dynClass = null;
-      try
-      {
-         File classFile = null;
-         // Write the clas file to the tmpdir
-         synchronized (tmplock)
-         {
-            classFile = new File(tmpDir, classFileName);
-            if (trace) logger.trace(this + " " + pool + ".toClass() myloader:" + myloader + " writing bytes to " + classFile);
-            File pkgDirs = classFile.getParentFile();
-            pkgDirs.mkdirs();
-            FileOutputStream stream = new FileOutputStream(classFile);
-            stream.write(cc.toBytecode());
-            stream.flush();
-            stream.close();
-            classFile.deleteOnExit();
-         }
-         // We have to clear Blacklist caches or the class will never
-         // be found
-         //((UnifiedClassLoader)dcl).clearBlacklists();
-         // To be backward compatible
-         RepositoryClassLoader rcl = (RepositoryClassLoader)myloader;
-         rcl.clearClassBlackList();
-         rcl.clearResourceBlackList();
-
-         // Now load the class through the cl
-         dynClass = myloader.loadClass(cc.getName());
-         if (trace) logger.trace(this + " " + pool + " myloader:" + myloader + " created class:" + dynClass);
-         return dynClass;
-      }
-      catch (Exception ex)
-      {
-         ClassFormatError cfe = new ClassFormatError("Failed to load dyn class: " + cc.getName());
-         cfe.initCause(ex);
-         throw cfe;
-      }
-   }
-
-}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvoker.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvoker.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvoker.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvoker.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,103 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.plugins.as4;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.security.ProtectionDomain;
+
+import javassist.CannotCompileException;
+import javassist.CtClass;
+
+import org.jboss.logging.Logger;
+import org.jboss.mx.loading.RepositoryClassLoader;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ToClassInvoker
+{
+   Logger logger = Logger.getLogger(this.getClass());
+
+   public File tmpDir;
+
+   public Object tmplock = new Object();
+
+   public ToClassInvoker(File tmpDir)
+   {
+      this.tmpDir = tmpDir;
+   }
+
+   public Class<?> toClass(ToClassInvokerPoolReference pool, CtClass cc, String classFileName, ClassLoader loader, ProtectionDomain domain)
+   throws CannotCompileException
+   {
+      boolean trace = logger.isTraceEnabled();
+      pool.lockInCache(cc);
+      final ClassLoader myloader = pool.getClassLoader();
+      if (myloader == null || tmpDir == null)
+      {
+         if (trace) logger.trace(this + " " + pool + ".toClass() myloader:" + myloader + " tmpDir:" + tmpDir + " default to superPool.toClass for " + cc.getName());
+         Class<?> clazz = pool.superPoolToClass(cc, loader, domain);
+         if (trace) logger.trace(this + " " + pool + " myloader:" + myloader + " created class:" + clazz);
+         return clazz;
+      }
+      Class<?> dynClass = null;
+      try
+      {
+         File classFile = null;
+         // Write the clas file to the tmpdir
+         synchronized (tmplock)
+         {
+            classFile = new File(tmpDir, classFileName);
+            if (trace) logger.trace(this + " " + pool + ".toClass() myloader:" + myloader + " writing bytes to " + classFile);
+            File pkgDirs = classFile.getParentFile();
+            pkgDirs.mkdirs();
+            FileOutputStream stream = new FileOutputStream(classFile);
+            stream.write(cc.toBytecode());
+            stream.flush();
+            stream.close();
+            classFile.deleteOnExit();
+         }
+         // We have to clear Blacklist caches or the class will never
+         // be found
+         //((UnifiedClassLoader)dcl).clearBlacklists();
+         // To be backward compatible
+         RepositoryClassLoader rcl = (RepositoryClassLoader)myloader;
+         rcl.clearClassBlackList();
+         rcl.clearResourceBlackList();
+
+         // Now load the class through the cl
+         dynClass = myloader.loadClass(cc.getName());
+         if (trace) logger.trace(this + " " + pool + " myloader:" + myloader + " created class:" + dynClass);
+         return dynClass;
+      }
+      catch (Exception ex)
+      {
+         ClassFormatError cfe = new ClassFormatError("Failed to load dyn class: " + cc.getName());
+         cfe.initCause(ex);
+         throw cfe;
+      }
+   }
+
+}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvokerPoolReference.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvokerPoolReference.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvokerPoolReference.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,39 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jboss4;
-
-import java.security.ProtectionDomain;
-
-import javassist.CannotCompileException;
-import javassist.CtClass;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public interface ToClassInvokerPoolReference
-{
-   Class<?> superPoolToClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException;
-   ClassLoader getClassLoader();
-   void lockInCache(CtClass clazz);
-}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvokerPoolReference.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss4/ToClassInvokerPoolReference.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvokerPoolReference.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ToClassInvokerPoolReference.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,39 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.plugins.as4;
+
+import java.security.ProtectionDomain;
+
+import javassist.CannotCompileException;
+import javassist.CtClass;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ToClassInvokerPoolReference
+{
+   Class<?> superPoolToClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException;
+   ClassLoader getClassLoader();
+   void lockInCache(CtClass clazz);
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl)

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPool.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.ucl;
+package org.jboss.classpool.plugins.as4.ucl;
 
 import java.io.File;
 import java.net.URL;
@@ -30,16 +30,17 @@
 import javassist.CtClass;
 import javassist.scopedpool.ScopedClassPoolRepository;
 
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.DelegatingClassPool;
-import org.jboss.classpool.jboss4.ToClassInvoker;
-import org.jboss.classpool.jboss4.ToClassInvokerPoolReference;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+import org.jboss.classpool.plugins.as4.ToClassInvoker;
+import org.jboss.classpool.plugins.as4.ToClassInvokerPoolReference;
 
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
+ at Deprecated
 public class JBossUclDelegatingClassPool extends DelegatingClassPool implements ToClassInvokerPoolReference
 {
    ToClassInvoker toClassInvoker = null;

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPoolFactory.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,166 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.ucl;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classpool.AbstractJBossDelegatingClassPoolFactory;
-import org.jboss.classpool.BaseClassPoolDomain;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.ClassPoolDomainRegistry;
-import org.jboss.classpool.NonDelegatingClassPool;
-import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
-import org.jboss.mx.loading.LoaderRepository;
-import org.jboss.mx.loading.RepositoryClassLoader;
-import org.jboss.mx.server.ServerConstants;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBossUclDelegatingClassPoolFactory extends AbstractJBossDelegatingClassPoolFactory implements ScopedClassPoolFactory
-{
-   private ClassPoolDomain mainDomain;
-   protected File tmpClassesDir;
-
-   public JBossUclDelegatingClassPoolFactory(File tmpClassesDir) throws IOException
-   {
-      System.out.println("TMP CLASSES DIR: " + tmpClassesDir);
-      this.tmpClassesDir = tmpClassesDir;
-   }
-   
-   public synchronized ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      ClassPool parent = getCreateParentClassPools(cl, src, repository);
-
-      if (cl instanceof RepositoryClassLoader)
-      {
-         ClassPoolDomain domain = getDomain((RepositoryClassLoader)cl);  
-         
-         File tempdir = getTempDirectory(cl);
-         URL tmpCP = createURLAndAddToLoader(cl, tempdir);
-         
-         return new JBossUclDelegatingClassPool(domain, cl, parent, repository, tempdir, tmpCP);
-      }
-      
-      return new NonDelegatingClassPool(cl, parent, repository, true);
-   }
-
-   private ClassPoolDomain getDomain(RepositoryClassLoader cl)
-   {
-      LoaderRepository loaderRepository = cl.getLoaderRepository();
-      ClassPoolDomainRegistry registry = ClassPoolDomainRegistry.getInstance();
-      ClassPoolDomain domain = registry.getDomain(loaderRepository);
-      if (domain == null)
-      {
-         if (loaderRepository instanceof HeirarchicalLoaderRepository3)
-         {
-            
-            boolean parentFirst = ((HeirarchicalLoaderRepository3)loaderRepository).getUseParentFirst();
-            domain = new BaseClassPoolDomain("Scoped" + System.identityHashCode(loaderRepository), mainDomain, parentFirst);
-         }
-         else
-         {
-            if (mainDomain == null)
-            {
-               domain = new BaseClassPoolDomain(ServerConstants.DEFAULT_LOADER_NAME, null, false);
-               mainDomain = domain;
-            }
-            else
-            {
-               domain = mainDomain;
-            }
-            registry.addClassPoolDomain(loaderRepository, domain);
-         }
-      }
-      return domain;
-   }
-   
-   protected File getTempDirectory(ClassLoader cl)
-   {
-      File tempdir = null;
-      int attempts = 0;
-      IOException ex = null;
-      while (tempdir == null && attempts < 5)
-      {
-         //Workaround for JBAOP-254, retry a few times
-         try
-         {
-            tempdir = createTempDir(cl);
-         }
-         catch (IOException e)
-         {
-            ex = e;
-         }
-      }
-      
-      if (tempdir == null)
-      {
-         throw new RuntimeException("", ex);
-      }
-      
-      return tempdir;
-   }
-
-   public File createTempDir(ClassLoader cl) throws IOException
-   {
-      File tempdir = File.createTempFile("ucl", "", tmpClassesDir);
-      tempdir.delete();
-      tempdir.mkdir();
-      tempdir.deleteOnExit();
-
-      return tempdir;
-   }
-   
-   private URL createURLAndAddToLoader(ClassLoader cl, File tempdir)
-   {
-      try
-      {
-         URL tmpURL = tempdir.toURL();
-         URL tmpCP = new URL(tmpURL, "?dynamic=true");
-
-         RepositoryClassLoader ucl = (RepositoryClassLoader) cl;
-
-         // We may be undeploying.
-         if (ucl.getLoaderRepository() != null)
-         {
-            ucl.addURL(tmpCP);
-         }
-         
-         return tmpCP;
-      }
-      catch(Exception e)
-      {
-         // AutoGenerated
-         throw new RuntimeException(e);
-      }
-   }
-
-}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java (from rev 92349, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPoolFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as4/ucl/JBossUclDelegatingClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,167 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.plugins.as4.ucl;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.classpool.base.BaseClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomainRegistry;
+import org.jboss.classpool.plugins.as.NonDelegatingClassPool;
+import org.jboss.classpool.spi.AbstractClassPool;
+import org.jboss.classpool.spi.AbstractClassPoolFactory;
+import org.jboss.classpool.temp.TempClassPoolFactory;
+import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
+import org.jboss.mx.loading.LoaderRepository;
+import org.jboss.mx.loading.RepositoryClassLoader;
+import org.jboss.mx.server.ServerConstants;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at Deprecated
+public class JBossUclDelegatingClassPoolFactory extends TempClassPoolFactory
+{
+   private ClassPoolDomain mainDomain;
+   protected File tmpClassesDir;
+
+   public JBossUclDelegatingClassPoolFactory(File tmpClassesDir) throws IOException
+   {
+      System.out.println("TMP CLASSES DIR: " + tmpClassesDir);
+      this.tmpClassesDir = tmpClassesDir;
+   }
+   
+   public synchronized AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      ClassPool parent = getCreateParentClassPools(cl, src, repository);
+
+      if (cl instanceof RepositoryClassLoader)
+      {
+         ClassPoolDomain domain = getDomain((RepositoryClassLoader)cl);  
+         
+         File tempdir = getTempDirectory(cl);
+         URL tmpCP = createURLAndAddToLoader(cl, tempdir);
+         
+         return new JBossUclDelegatingClassPool(domain, cl, parent, repository, tempdir, tmpCP);
+      }
+      
+      return new NonDelegatingClassPool(cl, parent, repository, true);
+   }
+
+   private ClassPoolDomain getDomain(RepositoryClassLoader cl)
+   {
+      LoaderRepository loaderRepository = cl.getLoaderRepository();
+      ClassPoolDomainRegistry registry = ClassPoolDomainRegistry.getInstance();
+      ClassPoolDomain domain = registry.getDomain(loaderRepository);
+      if (domain == null)
+      {
+         if (loaderRepository instanceof HeirarchicalLoaderRepository3)
+         {
+            
+            boolean parentFirst = ((HeirarchicalLoaderRepository3)loaderRepository).getUseParentFirst();
+            domain = new BaseClassPoolDomain("Scoped" + System.identityHashCode(loaderRepository), mainDomain, parentFirst);
+         }
+         else
+         {
+            if (mainDomain == null)
+            {
+               domain = new BaseClassPoolDomain(ServerConstants.DEFAULT_LOADER_NAME, null, false);
+               mainDomain = domain;
+            }
+            else
+            {
+               domain = mainDomain;
+            }
+            registry.addClassPoolDomain(loaderRepository, domain);
+         }
+      }
+      return domain;
+   }
+   
+   protected File getTempDirectory(ClassLoader cl)
+   {
+      File tempdir = null;
+      int attempts = 0;
+      IOException ex = null;
+      while (tempdir == null && attempts < 5)
+      {
+         //Workaround for JBAOP-254, retry a few times
+         try
+         {
+            tempdir = createTempDir(cl);
+         }
+         catch (IOException e)
+         {
+            ex = e;
+         }
+      }
+      
+      if (tempdir == null)
+      {
+         throw new RuntimeException("", ex);
+      }
+      
+      return tempdir;
+   }
+
+   public File createTempDir(ClassLoader cl) throws IOException
+   {
+      File tempdir = File.createTempFile("ucl", "", tmpClassesDir);
+      tempdir.delete();
+      tempdir.mkdir();
+      tempdir.deleteOnExit();
+
+      return tempdir;
+   }
+   
+   private URL createURLAndAddToLoader(ClassLoader cl, File tempdir)
+   {
+      try
+      {
+         URL tmpURL = tempdir.toURL();
+         URL tmpCP = new URL(tmpURL, "?dynamic=true");
+
+         RepositoryClassLoader ucl = (RepositoryClassLoader) cl;
+
+         // We may be undeploying.
+         if (ucl.getLoaderRepository() != null)
+         {
+            ucl.addURL(tmpCP);
+         }
+         
+         return tmpCP;
+      }
+      catch(Exception e)
+      {
+         // AutoGenerated
+         throw new RuntimeException(e);
+      }
+   }
+
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5 (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5)

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/DomainRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/DomainRegistry.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/DomainRegistry.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,4 +1,4 @@
-package org.jboss.classpool.jboss5;
+package org.jboss.classpool.plugins.as5;
 /*
 * JBoss, Home of Professional Open Source.
 * Copyright 2006, Red Hat Middleware LLC, and individual contributors
@@ -48,8 +48,4 @@
    Module getModule(ClassLoader loader);
 
    ClassLoader getClassLoader(Module module);
-   
-   //List<ScopedVFSClassLoaderDomain> getAOPDomainsForClassLoaderDomain(ClassLoaderDomain domain);
-   
-   //ReadWriteLock getAOPDomainsLockForClassLoaderDomain(ClassLoaderDomain domain);
 }
\ No newline at end of file

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/JBoss5ClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPool.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/JBoss5ClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jboss5;
+package org.jboss.classpool.plugins.as5;
 
 import java.net.URL;
 import java.security.ProtectionDomain;
@@ -29,14 +29,14 @@
 import javassist.CtClass;
 import javassist.scopedpool.ScopedClassPoolRepository;
 
-import org.jboss.classpool.AbstractClassPool;
+import org.jboss.classpool.spi.AbstractClassPool;
 
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class JBoss5ClassPool extends AbstractClassPool implements ToClassInvokerPoolReference
+class JBoss5ClassPool extends AbstractClassPool implements ToClassInvokerPoolReference
 {
    protected ToClassInvoker toClassInvoker = null;
 

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/JBoss5ClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPoolFactory.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/JBoss5ClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,102 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.classpool.jboss5;
-
-import java.net.URL;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.spi.RealClassLoader;
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.AbstractJBossClassPoolFactory;
-import org.jboss.classpool.ClassPoolRepository;
-
-/**
- * Comment
- *
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
- * @author adrian at jboss.org
- * @version $Revision: 64815 $
- **/
-public class JBoss5ClassPoolFactory extends AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
-{
-   private DomainRegistry registry;
-   
-   public JBoss5ClassPoolFactory(DomainRegistry registry)
-   {
-      this.registry = registry;
-   }
-   
-   public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {      
-      ClassPool parent = getCreateParentClassPools(cl, src, repository);
-
-      ScopedClassPool pool = null;
-      
-      if (cl instanceof RealClassLoader)
-      {
-         Module module = registry.getModule(cl);
-         if (module != null && module.getDeterminedParentDomainName() != null)
-         {
-            //It is scoped
-            ClassLoaderSystem sys = registry.getSystem();
-            ClassLoaderDomain domain = sys.getDomain(module.getDeterminedDomainName());
-            boolean parentFirst = module.isJ2seClassLoadingCompliance();
-            ClassPool parentDomainPool = getParentUnitClassPool(cl); 
-            pool = new ScopedJBoss5ClassPool(cl, parent, parentDomainPool, repository, getTempURL(module), parentFirst, domain);
-         }
-         else
-         {
-            pool =  new JBoss5ClassPool(cl, parent, repository, getTempURL(module));
-         }
-      }
-      
-      if (pool == null)
-      {
-         pool = new AbstractClassPool(cl, parent, repository);
-      }
-      log.debug("Created pool " + pool + " for loader " + cl);
-      
-      return pool;
-   }
-
-   private ClassPool getParentUnitClassPool(ClassLoader cl)
-   {
-      ClassLoader parent = registry.getParentUnitLoader(cl);
-      return ClassPoolRepository.getInstance().registerClassLoader(parent);
-   }
-   
-
-   private URL getTempURL(Module module)
-   {
-      if (module == null)
-         return null;
-      
-      return module.getDynamicClassRoot();
-   }
-}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/JBoss5ClassPoolFactory.java (from rev 92349, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/JBoss5ClassPoolFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/JBoss5ClassPoolFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/JBoss5ClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,101 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.classpool.plugins.as5;
+
+import java.net.URL;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPoolFactory;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.spi.RealClassLoader;
+import org.jboss.classloading.spi.dependency.Module;
+import org.jboss.classpool.plugins.as.AbstractJBossClassPoolFactory;
+import org.jboss.classpool.spi.AbstractClassPool;
+import org.jboss.classpool.spi.ClassPoolRepository;
+
+/**
+ * Comment
+ *
+ * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
+ * @author adrian at jboss.org
+ * @version $Revision: 64815 $
+ **/
+public class JBoss5ClassPoolFactory extends AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
+{
+   private DomainRegistry registry;
+   
+   public JBoss5ClassPoolFactory(DomainRegistry registry)
+   {
+      this.registry = registry;
+   }
+   
+   public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {      
+      ClassPool parent = getCreateParentClassPools(cl, src, repository);
+
+      AbstractClassPool pool = null;
+      
+      if (cl instanceof RealClassLoader)
+      {
+         Module module = registry.getModule(cl);
+         if (module != null && module.getDeterminedParentDomainName() != null)
+         {
+            //It is scoped
+            ClassLoaderSystem sys = registry.getSystem();
+            ClassLoaderDomain domain = sys.getDomain(module.getDeterminedDomainName());
+            boolean parentFirst = module.isJ2seClassLoadingCompliance();
+            ClassPool parentDomainPool = getParentUnitClassPool(cl); 
+            pool = new ScopedJBoss5ClassPool(cl, parent, parentDomainPool, repository, getTempURL(module), parentFirst, domain);
+         }
+         else
+         {
+            pool =  new JBoss5ClassPool(cl, parent, repository, getTempURL(module));
+         }
+      }
+      
+      if (pool == null)
+      {
+         pool = new AbstractClassPool(cl, parent, repository);
+      }
+      log.debug("Created pool " + pool + " for loader " + cl);
+      
+      return pool;
+   }
+
+   private ClassPool getParentUnitClassPool(ClassLoader cl)
+   {
+      ClassLoader parent = registry.getParentUnitLoader(cl);
+      return ClassPoolRepository.getInstance().registerClassLoader(parent);
+   }
+   
+
+   private URL getTempURL(Module module)
+   {
+      if (module == null)
+         return null;
+      
+      return module.getDynamicClassRoot();
+   }
+}

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/RegisterModuleCallback.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/RegisterModuleCallback.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/RegisterModuleCallback.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jboss5;
+package org.jboss.classpool.plugins.as5;
 
 import java.util.Collections;
 import java.util.HashSet;

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/ScopedJBoss5ClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ScopedJBoss5ClassPool.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/ScopedJBoss5ClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jboss5;
+package org.jboss.classpool.plugins.as5;
 
 import java.lang.ref.WeakReference;
 import java.net.URL;
@@ -33,8 +33,8 @@
 import org.jboss.classloader.spi.ClassLoaderDomain;
 import org.jboss.classloader.spi.Loader;
 import org.jboss.classloading.spi.RealClassLoader;
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.ClassPoolRepository;
+import org.jboss.classpool.spi.AbstractClassPool;
+import org.jboss.classpool.spi.ClassPoolRepository;
 
 /**
  * 

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/SecurityActions.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/SecurityActions.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/SecurityActions.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jboss5;
+package org.jboss.classpool.plugins.as5;
 
 import java.security.AccessController;
 import java.security.PrivilegedActionException;

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/ToClassInvoker.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ToClassInvoker.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/ToClassInvoker.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jboss5;
+package org.jboss.classpool.plugins.as5;
 
 import java.io.BufferedOutputStream;
 import java.io.ByteArrayOutputStream;

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/ToClassInvokerPoolReference.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/ToClassInvokerPoolReference.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/ToClassInvokerPoolReference.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jboss5;
+package org.jboss.classpool.plugins.as5;
 
 import java.security.ProtectionDomain;
 

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/VFSClassLoaderDomainRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/VFSClassLoaderDomainRegistry.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/VFSClassLoaderDomainRegistry.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,285 +0,0 @@
-package org.jboss.classpool.jboss5;
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-
-
-import java.lang.ref.WeakReference;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.spi.dependency.Module;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class VFSClassLoaderDomainRegistry implements DomainRegistry
-{
-   final static ClassLoaderDomain domain = new ClassLoaderDomain("NOT_USED_PLACEHOLDER");
-   
-   private ClassLoaderSystem system;
-   
-   private ClassLoaderDomain defaultDomain;
-   
-   /** classloader domains by their classloaders */
-   private Map<ClassLoader, WeakReference<ClassLoaderDomain>> classLoaderDomainsByLoader = new WeakHashMap<ClassLoader, WeakReference<ClassLoaderDomain>>();
-
-   /** aopDomains by classloader */
-   //private Map<ClassLoader, ScopedVFSClassLoaderDomain> aopDomainsByClassLoader = new WeakHashMap<ClassLoader, ScopedVFSClassLoaderDomain>();
-   
-   /** aopDomains by classloader domain */
-   //private Map<ClassLoaderDomain, List<ScopedVFSClassLoaderDomain>> aopDomainsByClassLoaderDomain = new WeakHashMap<ClassLoaderDomain, List<ScopedVFSClassLoaderDomain>>();
-
-   //private Map<ClassLoaderDomain, ReadWriteLock> aopDomainsLocksByClassLoaderDomain = new WeakHashMap<ClassLoaderDomain, ReadWriteLock>();
-
-
-   /** parent deployment unit classloaders indexed by children */
-   private Map<ClassLoader, WeakReference<ClassLoader>> classLoaderUnitParents = new WeakHashMap<ClassLoader, WeakReference<ClassLoader>>(); 
-   
-   /** Modules by classloader */
-   private Map<ClassLoader, WeakReference<Module>> classLoaderModules = new WeakHashMap<ClassLoader, WeakReference<Module>>();
-   
-   /** classloaders by module */
-   private Map<Module, WeakReference<ClassLoader>> moduleClassLoaders = new WeakHashMap<Module, WeakReference<ClassLoader>>();
-
-   private Map<ClassLoaderDomain, Integer> classLoaderDomainReferenceCounts = new WeakHashMap<ClassLoaderDomain, Integer>();
-   
-   /**
-    * Needed for the tests, not expected to be needed in production
-    */
-   public void setSystem(ClassLoaderSystem system)
-   {
-      this.system = system;
-   }
-   
-   /**
-    * Needed for the tests, not expected to be needed in production
-    */
-   public void setDefaultDomain(ClassLoaderDomain domain)
-   {
-      this.defaultDomain = domain;
-   }
-   
-   public synchronized ClassLoaderSystem getSystem()
-   {
-      if (system == null)
-      {
-         system = ClassLoaderSystem.getInstance();
-      }
-      return system;
-   }
-   
-   public synchronized ClassLoaderDomain getDefaultDomain()
-   {
-      if (defaultDomain == null)
-      {
-         defaultDomain = getSystem().getDefaultDomain();
-      }
-      return defaultDomain;
-   }
-
-   public synchronized boolean initMapsForLoader(ClassLoader loader, Module module, ClassLoader parentUnitLoader)
-   {
-      if (loader == parentUnitLoader)
-      {
-         throw new IllegalArgumentException("initMapsForLoader() should only be called if parentUnitLoader is different from loader");
-      }
-      ClassLoaderSystem system = getSystem();
-      
-      String domainName = module.getDeterminedDomainName();
-      ClassLoaderDomain clDomain = system.getDomain(domainName);
-      if (clDomain == null && domain != null)
-      {
-         throw new IllegalStateException("Have " + domain + " but no classloader domain");
-      }
-
-      boolean ret = false;
-      if (!classLoaderDomainsByLoader.containsKey(loader))
-      {
-         Integer count = classLoaderDomainReferenceCounts.get(clDomain);
-         int cnt = count == null ? 0 : count.intValue();
-         classLoaderDomainReferenceCounts.put(clDomain, cnt);
-         
-         classLoaderDomainsByLoader.put(loader, new WeakReference<ClassLoaderDomain>(clDomain));
-         classLoaderUnitParents.put(loader, new WeakReference<ClassLoader>(parentUnitLoader));
-         classLoaderModules.put(loader, new WeakReference<Module>(module));
-         moduleClassLoaders.put(module, new WeakReference<ClassLoader>(loader));
-         ret = true;
-         if (domain != null)
-         {
-            
-
-            /*ReadWriteLock lock = aopDomainsLocksByClassLoaderDomain.get(clDomain);
-            if (lock == null)
-            {
-               lock = new ReentrantReadWriteLock();
-               aopDomainsLocksByClassLoaderDomain.put(clDomain, lock);
-            }
-            
-            lock.writeLock().lock();
-            try
-            {
-               List<ScopedVFSClassLoaderDomain> aopDomains = aopDomainsByClassLoaderDomain.get(clDomain);
-               if (aopDomains == null)
-               {
-                  synchronized (aopDomainsByClassLoaderDomain)
-                  {
-                     aopDomains = new CopyOnWriteArrayList<ScopedVFSClassLoaderDomain>();
-                     if (!aopDomains.contains(clDomain))
-                     {
-                        aopDomainsByClassLoaderDomain.put(clDomain, aopDomains);
-                     }
-                  }
-               }
-               aopDomains.add(domain);
-            }
-            finally
-            {
-               lock.writeLock().unlock();
-            }*/
-         }
-      }
-      
-      
-      return ret;
-   }
-   
-   public synchronized void cleanupLoader(ClassLoader loader)
-   {
-      WeakReference<ClassLoaderDomain> clDomainRef = classLoaderDomainsByLoader.remove(loader);
-      ClassLoaderDomain clDomain = clDomainRef == null ? null : clDomainRef.get();
-      if (clDomain != null)
-      {
-         Integer count =  classLoaderDomainReferenceCounts.get(clDomain);
-         int cnt = count == null ? 0 : count.intValue();
-         if (cnt > 0)
-         {
-            cnt--;
-         }
-         if (cnt == 0)
-         {
-            //aopDomainsByClassLoaderDomain.remove(clDomain);
-            classLoaderDomainReferenceCounts.remove(clDomain);
-         }
-         else
-         {
-            classLoaderDomainReferenceCounts.put(clDomain, ++cnt);
-         }
-         //ScopedVFSClassLoaderDomain aopDomain = aopDomainsByClassLoader.remove(loader);
-         classLoaderUnitParents.remove(loader);
-         WeakReference<Module> moduleRef = classLoaderModules.remove(loader);
-         if (moduleRef != null)
-         {
-            Module module = moduleRef.get();
-            if (module != null)
-            {
-               moduleClassLoaders.remove(module);
-            }
-         }
-
-         /*List<ScopedVFSClassLoaderDomain> aopDomains = aopDomainsByClassLoaderDomain.get(clDomain);
-         if (aopDomains != null)
-         {
-            aopDomains.remove(aopDomain);
-         }
-         if (aopDomain != null)
-         {
-            aopDomain.getParent().unsubscribeSubDomain(aopDomain);
-         }*/
-      }
-      //aopDomainsByClassLoader.remove(loader);
-   }
-
-   /*public synchronized Domain getRegisteredDomain(ClassLoader cl)
-   {
-      return aopDomainsByClassLoader.get(cl);
-   }*/
-   
-   public synchronized ClassLoaderDomain getClassLoaderDomainForLoader(ClassLoader cl)
-   {
-      WeakReference<ClassLoaderDomain> clDomainRef = classLoaderDomainsByLoader.get(cl);
-      if (clDomainRef != null)
-      {
-         return clDomainRef.get();
-      }
-      
-      ClassLoader parent = SecurityActions.getParent(cl);
-      if (parent != null)
-      {
-         ClassLoaderDomain domain = getClassLoaderDomainForLoader(parent);
-         if (domain != null)
-         {
-            classLoaderDomainsByLoader.put(parent, new WeakReference<ClassLoaderDomain>(domain));
-            return domain;
-         }
-      }
-      return null;
-   }
-   
-   public synchronized ClassLoader getParentUnitLoader(ClassLoader loader)
-   {
-      WeakReference<ClassLoader> parentRef = classLoaderUnitParents.get(loader);
-      if (parentRef != null)
-      {
-         return parentRef.get();
-      }
-      return null;
-   }
-   
-   public synchronized Module getModule(ClassLoader loader)
-   {
-      WeakReference<Module> moduleRef = classLoaderModules.get(loader);
-      if (moduleRef != null)
-      {
-         return moduleRef.get();
-      }
-      return null;
-   }
-   
-   public synchronized ClassLoader getClassLoader(Module module)
-   {
-      WeakReference<ClassLoader> loaderRef = moduleClassLoaders.get(module);
-      if (loaderRef != null)
-      {
-         return loaderRef.get();
-      }
-      return null;
-   }
-
-   /*public List<ScopedVFSClassLoaderDomain> getAOPDomainsForClassLoaderDomain(ClassLoaderDomain domain)
-   {
-      List<ScopedVFSClassLoaderDomain> domains = aopDomainsByClassLoaderDomain.get(domain);
-      if (domains != null)
-      {
-         return domains;
-      }
-      return Collections.emptyList();
-   }
-
-   public ReadWriteLock getAOPDomainsLockForClassLoaderDomain(ClassLoaderDomain domain)
-   {
-      return aopDomainsLocksByClassLoaderDomain.get(domain);
-   }*/
-}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/VFSClassLoaderDomainRegistry.java (from rev 92349, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jboss5/VFSClassLoaderDomainRegistry.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/VFSClassLoaderDomainRegistry.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/VFSClassLoaderDomainRegistry.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,239 @@
+package org.jboss.classpool.plugins.as5;
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+
+
+import java.lang.ref.WeakReference;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.spi.dependency.Module;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class VFSClassLoaderDomainRegistry implements DomainRegistry
+{
+   protected final static ClassLoaderDomain domain = new ClassLoaderDomain("NOT_USED_PLACEHOLDER");
+   
+   private ClassLoaderSystem system;
+   
+   private ClassLoaderDomain defaultDomain;
+   
+   /** classloader domains by their classloaders */
+   protected Map<ClassLoader, WeakReference<ClassLoaderDomain>> classLoaderDomainsByLoader = new WeakHashMap<ClassLoader, WeakReference<ClassLoaderDomain>>();
+
+   /** parent deployment unit classloaders indexed by children */
+   private Map<ClassLoader, WeakReference<ClassLoader>> classLoaderUnitParents = new WeakHashMap<ClassLoader, WeakReference<ClassLoader>>(); 
+   
+   /** Modules by classloader */
+   private Map<ClassLoader, WeakReference<Module>> classLoaderModules = new WeakHashMap<ClassLoader, WeakReference<Module>>();
+   
+   /** classloaders by module */
+   private Map<Module, WeakReference<ClassLoader>> moduleClassLoaders = new WeakHashMap<Module, WeakReference<ClassLoader>>();
+
+   protected Map<ClassLoaderDomain, Integer> classLoaderDomainReferenceCounts = new WeakHashMap<ClassLoaderDomain, Integer>();
+   
+   /**
+    * Needed for the tests, not expected to be needed in production
+    */
+   public void setSystem(ClassLoaderSystem system)
+   {
+      this.system = system;
+   }
+   
+   /**
+    * Needed for the tests, not expected to be needed in production
+    */
+   public void setDefaultDomain(ClassLoaderDomain domain)
+   {
+      this.defaultDomain = domain;
+   }
+   
+   public synchronized ClassLoaderSystem getSystem()
+   {
+      if (system == null)
+      {
+         system = ClassLoaderSystem.getInstance();
+      }
+      return system;
+   }
+   
+   public synchronized ClassLoaderDomain getDefaultDomain()
+   {
+      if (defaultDomain == null)
+      {
+         defaultDomain = getSystem().getDefaultDomain();
+      }
+      return defaultDomain;
+   }
+
+   public synchronized boolean initMapsForLoader(ClassLoader loader, Module module, ClassLoader parentUnitLoader)
+   {
+      if (loader == parentUnitLoader)
+      {
+         throw new IllegalArgumentException("initMapsForLoader() should only be called if parentUnitLoader is different from loader");
+      }
+      ClassLoaderSystem system = getSystem();
+      
+      String domainName = module.getDeterminedDomainName();
+      ClassLoaderDomain clDomain = system.getDomain(domainName);
+      this.validateInitMaps(loader, clDomain, module, parentUnitLoader);
+      
+      boolean ret = false;
+      if (!classLoaderDomainsByLoader.containsKey(loader))
+      {
+         Integer count = classLoaderDomainReferenceCounts.get(clDomain);
+         int cnt = count == null ? 0 : count.intValue();
+         classLoaderDomainReferenceCounts.put(clDomain, cnt);
+         
+         classLoaderDomainsByLoader.put(loader, new WeakReference<ClassLoaderDomain>(clDomain));
+         classLoaderUnitParents.put(loader, new WeakReference<ClassLoader>(parentUnitLoader));
+         classLoaderModules.put(loader, new WeakReference<Module>(module));
+         moduleClassLoaders.put(module, new WeakReference<ClassLoader>(loader));
+         ret = true;
+         this.initMapsDone(loader, clDomain, module, parentUnitLoader);
+      }
+      
+      
+      return ret;
+   }
+   
+   protected void validateInitMaps(ClassLoader loader, ClassLoaderDomain loaderDomain, Module module, ClassLoader parentUnitLoader)
+   {
+      
+   }
+   
+   protected void initMapsDone(ClassLoader loader, ClassLoaderDomain loaderDomain, Module module, ClassLoader parentUnitLoader)
+   {
+      
+   }
+   
+   public synchronized void cleanupLoader(ClassLoader loader)
+   {
+      validateCleanupLoader(loader);
+      WeakReference<ClassLoaderDomain> clDomainRef = classLoaderDomainsByLoader.remove(loader);
+      ClassLoaderDomain clDomain = clDomainRef == null ? null : clDomainRef.get();
+      int cnt = 0;
+      if (clDomain != null)
+      {
+         Integer count =  classLoaderDomainReferenceCounts.get(clDomain);
+         cnt = count == null ? 0 : count.intValue();
+         if (cnt > 0)
+         {
+            cnt--;
+         }
+         if (cnt == 0)
+         {
+            //aopDomainsByClassLoaderDomain.remove(clDomain);
+            classLoaderDomainReferenceCounts.remove(clDomain);
+         }
+         else
+         {
+            classLoaderDomainReferenceCounts.put(clDomain, ++cnt);
+         }
+         //ScopedVFSClassLoaderDomain aopDomain = aopDomainsByClassLoader.remove(loader);
+         classLoaderUnitParents.remove(loader);
+         WeakReference<Module> moduleRef = classLoaderModules.remove(loader);
+         if (moduleRef != null)
+         {
+            Module module = moduleRef.get();
+            if (module != null)
+            {
+               moduleClassLoaders.remove(module);
+            }
+         }
+         
+
+         /*List<ScopedVFSClassLoaderDomain> aopDomains = aopDomainsByClassLoaderDomain.get(clDomain);
+         if (aopDomains != null)
+         {
+            aopDomains.remove(aopDomain);
+         }
+         if (aopDomain != null)
+         {
+            aopDomain.getParent().unsubscribeSubDomain(aopDomain);
+         }*/
+      }
+      cleanupLoaderDone(loader, clDomain, cnt);
+      //aopDomainsByClassLoader.remove(loader);
+   }
+
+   protected void validateCleanupLoader(ClassLoader loader) {}
+   
+   protected void cleanupLoaderDone(ClassLoader loader, ClassLoaderDomain loaderDomain, int domainReferences) {}
+   
+   public synchronized ClassLoaderDomain getClassLoaderDomainForLoader(ClassLoader cl)
+   {
+      WeakReference<ClassLoaderDomain> clDomainRef = classLoaderDomainsByLoader.get(cl);
+      if (clDomainRef != null)
+      {
+         return clDomainRef.get();
+      }
+      
+      ClassLoader parent = SecurityActions.getParent(cl);
+      if (parent != null)
+      {
+         ClassLoaderDomain domain = getClassLoaderDomainForLoader(parent);
+         if (domain != null)
+         {
+            classLoaderDomainsByLoader.put(parent, new WeakReference<ClassLoaderDomain>(domain));
+            return domain;
+         }
+      }
+      return null;
+   }
+   
+   public synchronized ClassLoader getParentUnitLoader(ClassLoader loader)
+   {
+      WeakReference<ClassLoader> parentRef = classLoaderUnitParents.get(loader);
+      if (parentRef != null)
+      {
+         return parentRef.get();
+      }
+      return null;
+   }
+   
+   public synchronized Module getModule(ClassLoader loader)
+   {
+      WeakReference<Module> moduleRef = classLoaderModules.get(loader);
+      if (moduleRef != null)
+      {
+         return moduleRef.get();
+      }
+      return null;
+   }
+   
+   public synchronized ClassLoader getClassLoader(Module module)
+   {
+      WeakReference<ClassLoader> loaderRef = moduleClassLoaders.get(module);
+      if (loaderRef != null)
+      {
+         return loaderRef.get();
+      }
+      return null;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl)

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClClassPoolDomain.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolDomain.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClClassPoolDomain.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jbosscl;
+package org.jboss.classpool.plugins.as5.jbosscl;
 
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
@@ -38,20 +38,20 @@
 
 import org.jboss.classloader.spi.ParentPolicy;
 import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classpool.BaseClassPool;
-import org.jboss.classpool.BaseClassPoolDomain;
-import org.jboss.classpool.ClassLoaderUtils;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.DelegatingClassPool;
-import org.jboss.classpool.jboss5.DomainRegistry;
+import org.jboss.classpool.base.BaseClassPool;
+import org.jboss.classpool.base.BaseClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.helpers.ClassLoaderUtils;
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+import org.jboss.classpool.plugins.as5.DomainRegistry;
+import org.jboss.classpool.spi.ClassPoolRepository;
 
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class JBossClClassPoolDomain extends BaseClassPoolDomain
+class JBossClClassPoolDomain extends BaseClassPoolDomain
 {
    Map<String, Set<DelegatingClassPool>> poolsByPackage = new HashMap<String, Set<DelegatingClassPool>>();
    final static List<DelegatingClassPool> EMPTY_LIST = Collections.unmodifiableList(Collections.EMPTY_LIST);
@@ -93,7 +93,7 @@
    }
    
    @Override
-   protected synchronized void removeClassPool(DelegatingClassPool pool)
+   public synchronized void removeClassPool(DelegatingClassPool pool)
    {
       super.removeClassPool(pool);
    
@@ -116,7 +116,7 @@
    }
  
    @Override
-   protected CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
+   public CtClass getCachedOrCreate(DelegatingClassPool initiatingPool, String classname, String resourceName, boolean create, boolean trace)
    {
       if (trace) logger.trace(this + " looking for " + classname);
       

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,20 +19,20 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jbosscl;
+package org.jboss.classpool.plugins.as5.jbosscl;
 
 import javassist.ClassPool;
 
 import org.jboss.classloader.spi.base.BaseClassLoaderDomain;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.ClassPoolToClassPoolDomainAdapter;
+import org.jboss.classpool.domain.ClassPoolToClassPoolDomainAdapter;
+import org.jboss.classpool.spi.ClassPoolRepository;
 
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class JBossClClassPoolToClassPoolDomainAdapter extends ClassPoolToClassPoolDomainAdapter
+class JBossClClassPoolToClassPoolDomainAdapter extends ClassPoolToClassPoolDomainAdapter
 {
    @Override
    public ClassPool initialiseParentClassLoader()

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClClassPoolToClassPoolDomainAdaptorFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdaptorFactory.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClClassPoolToClassPoolDomainAdaptorFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,17 +19,17 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jbosscl;
+package org.jboss.classpool.plugins.as5.jbosscl;
 
-import org.jboss.classpool.ClassPoolToClassPoolDomainAdapter;
-import org.jboss.classpool.ClassPoolToClassPoolDomainAdaptorFactory;
+import org.jboss.classpool.domain.ClassPoolToClassPoolDomainAdapter;
+import org.jboss.classpool.domain.ClassPoolToClassPoolDomainAdaptorFactory;
 
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class JBossClClassPoolToClassPoolDomainAdaptorFactory implements ClassPoolToClassPoolDomainAdaptorFactory
+class JBossClClassPoolToClassPoolDomainAdaptorFactory implements ClassPoolToClassPoolDomainAdaptorFactory
 {
    private static final JBossClClassPoolToClassPoolDomainAdaptorFactory INSTANCE = new JBossClClassPoolToClassPoolDomainAdaptorFactory();
    

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPool.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jbosscl;
+package org.jboss.classpool.plugins.as5.jbosscl;
 
 import java.lang.ref.WeakReference;
 import java.security.ProtectionDomain;
@@ -30,18 +30,18 @@
 import javassist.scopedpool.ScopedClassPoolRepository;
 
 import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.DelegatingClassPool;
-import org.jboss.classpool.jboss5.RegisterModuleCallback;
-import org.jboss.classpool.jboss5.ToClassInvoker;
-import org.jboss.classpool.jboss5.ToClassInvokerPoolReference;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+import org.jboss.classpool.plugins.as5.RegisterModuleCallback;
+import org.jboss.classpool.plugins.as5.ToClassInvoker;
+import org.jboss.classpool.plugins.as5.ToClassInvokerPoolReference;
 
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class JBossClDelegatingClassPool extends DelegatingClassPool implements ToClassInvokerPoolReference
+class JBossClDelegatingClassPool extends DelegatingClassPool implements ToClassInvokerPoolReference
 {
    private WeakReference<Module> module;
    private RegisterModuleCallback callback;

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,177 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.jbosscl;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Set;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.spi.RealClassLoader;
-import org.jboss.classloading.spi.dependency.ClassLoading;
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classpool.AbstractJBossDelegatingClassPoolFactory;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.ClassPoolDomainRegistry;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.ClassPoolToClassPoolDomainAdapter;
-import org.jboss.classpool.NonDelegatingClassPool;
-import org.jboss.classpool.jboss5.DomainRegistry;
-import org.jboss.classpool.jboss5.RegisterModuleCallback;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBossClDelegatingClassPoolFactory extends AbstractJBossDelegatingClassPoolFactory implements ScopedClassPoolFactory
-{
-   private final DomainRegistry registry;
-   
-   private final RegisterModuleCallback registerModuleCallback;
-   
-   public JBossClDelegatingClassPoolFactory(DomainRegistry registry, RegisterModuleCallback registerModuleCallback)
-   {
-      this.registry = registry;
-      this.registerModuleCallback = registerModuleCallback;
-   }
-   
-   public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      ClassPool parent = getCreateParentClassPools(cl, src, repository);
-      
-      if (cl instanceof RealClassLoader)
-      {
-         Module module = registry.getModule(cl);
-         if (module == null)
-         {
-            module = getModuleForClassLoader(cl);
-         }
-         registerModuleCallback.registerModule(module);
-         registerBootstrapLoaders();
-         ClassPoolDomain domain = getDomain(module, cl);  
-         return new JBossClDelegatingClassPool(domain, cl, parent, repository, module, registerModuleCallback);
-      }
-      
-      return new NonDelegatingClassPool(cl, parent, repository, true);
-   }
-
-   private synchronized ClassPoolDomain getDomain(Module module, ClassLoader cl)
-   {
-      ClassLoaderDomain domain = null;
-      ClassLoaderSystem sys = registry.getSystem();
-      if (module != null && module.getDeterminedParentDomainName() != null)
-      {
-         //It is scoped
-         domain = sys.getDomain(module.getDeterminedDomainName());
-      }
-      
-      if (domain == null)
-      {
-         domain = registry.getDefaultDomain();
-      }
-      
-      ClassPoolDomain poolDomain = ClassPoolDomainRegistry.getInstance().getDomain(domain);
-      if (poolDomain == null)
-      {
-         String parentDomainName = domain.getParentDomainName();
-         ClassPoolDomain parentPoolDomain = null;
-         if (parentDomainName != null)
-         {
-            ClassLoaderDomain parentDomain = sys.getDomain(parentDomainName);
-            if (parentDomain == null)
-            {
-               throw new RuntimeException("No domain found called: " + parentDomainName);
-            }
-            parentPoolDomain = ClassPoolDomainRegistry.getInstance().getDomain(parentDomain);
-         }
-         if (parentDomainName == null)
-         {
-            ClassLoader parentUnitLoader = registry.getParentUnitLoader(cl);
-            if (parentUnitLoader != null)
-            {
-               ClassPool parentUnitPool = ClassPoolRepository.getInstance().registerClassLoader(parentUnitLoader);
-               parentPoolDomain = new ClassPoolToClassPoolDomainAdapter(parentUnitPool);
-            }
-         }
-         poolDomain = new JBossClClassPoolDomain(domain.getName(), parentPoolDomain, domain.getParentPolicy(), registry);
-         
-         ClassPoolDomainRegistry.getInstance().addClassPoolDomain(domain, poolDomain);
-      }
-      return poolDomain;
-   }
-   
-   @Override
-   protected ClassPool getCreateParentClassPools(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      ClassPool parent = super.getCreateParentClassPools(cl, src, repository);
-      if (parent == ClassPool.getDefault())
-      {
-         //In AS BaseClassLoader seems to normally have a null parent
-         return null;
-      }
-      return parent;
-   }
-   
-   private void registerBootstrapLoaders()
-   {
-      Set<Module> unregistered = registerModuleCallback.getUnregisteredModules();
-      if (unregistered.size() > 0)
-      {
-         for (Module module : unregistered)
-         {
-            ClassLoader loader = getClassLoaderForModule(module);
-            log.debug("Registering loader for module " + module + ": " + loader);
-            ClassPoolRepository.getInstance().registerClassLoader(loader);
-         }
-      }
-   }
-   
-   private ClassLoader getClassLoaderForModule(final Module module)
-   {
-      return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
-      {
-      
-         public ClassLoader run()
-         {
-            return ClassLoading.getClassLoaderForModule(module);
-         }
-      });
-   }
-   
-   private Module getModuleForClassLoader(final ClassLoader classLoader)
-   {
-      return AccessController.doPrivileged(new PrivilegedAction<Module>()
-      {
-         public Module run()
-         {
-            return ClassLoading.getModuleForClassLoader(classLoader);
-         }
-      });
-   }
-}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java (from rev 92349, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClDelegatingClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,178 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.plugins.as5.jbosscl;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.Set;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPoolFactory;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.spi.RealClassLoader;
+import org.jboss.classloading.spi.dependency.ClassLoading;
+import org.jboss.classloading.spi.dependency.Module;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomainRegistry;
+import org.jboss.classpool.domain.ClassPoolToClassPoolDomainAdapter;
+import org.jboss.classpool.plugins.as.NonDelegatingClassPool;
+import org.jboss.classpool.plugins.as5.DomainRegistry;
+import org.jboss.classpool.plugins.as5.RegisterModuleCallback;
+import org.jboss.classpool.spi.AbstractClassPool;
+import org.jboss.classpool.spi.ClassPoolRepository;
+import org.jboss.classpool.temp.TempClassPoolFactory;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at Deprecated
+public class JBossClDelegatingClassPoolFactory extends TempClassPoolFactory implements ScopedClassPoolFactory
+{
+   private final DomainRegistry registry;
+   
+   private final RegisterModuleCallback registerModuleCallback;
+   
+   public JBossClDelegatingClassPoolFactory(DomainRegistry registry, RegisterModuleCallback registerModuleCallback)
+   {
+      this.registry = registry;
+      this.registerModuleCallback = registerModuleCallback;
+   }
+   
+   public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      ClassPool parent = getCreateParentClassPools(cl, src, repository);
+      
+      if (cl instanceof RealClassLoader)
+      {
+         Module module = registry.getModule(cl);
+         if (module == null)
+         {
+            module = getModuleForClassLoader(cl);
+         }
+         registerModuleCallback.registerModule(module);
+         registerBootstrapLoaders();
+         ClassPoolDomain domain = getDomain(module, cl);  
+         return new JBossClDelegatingClassPool(domain, cl, parent, repository, module, registerModuleCallback);
+      }
+      
+      return new NonDelegatingClassPool(cl, parent, repository, true);
+   }
+
+   private synchronized ClassPoolDomain getDomain(Module module, ClassLoader cl)
+   {
+      ClassLoaderDomain domain = null;
+      ClassLoaderSystem sys = registry.getSystem();
+      if (module != null && module.getDeterminedParentDomainName() != null)
+      {
+         //It is scoped
+         domain = sys.getDomain(module.getDeterminedDomainName());
+      }
+      
+      if (domain == null)
+      {
+         domain = registry.getDefaultDomain();
+      }
+      
+      ClassPoolDomain poolDomain = ClassPoolDomainRegistry.getInstance().getDomain(domain);
+      if (poolDomain == null)
+      {
+         String parentDomainName = domain.getParentDomainName();
+         ClassPoolDomain parentPoolDomain = null;
+         if (parentDomainName != null)
+         {
+            ClassLoaderDomain parentDomain = sys.getDomain(parentDomainName);
+            if (parentDomain == null)
+            {
+               throw new RuntimeException("No domain found called: " + parentDomainName);
+            }
+            parentPoolDomain = ClassPoolDomainRegistry.getInstance().getDomain(parentDomain);
+         }
+         if (parentDomainName == null)
+         {
+            ClassLoader parentUnitLoader = registry.getParentUnitLoader(cl);
+            if (parentUnitLoader != null)
+            {
+               ClassPool parentUnitPool = ClassPoolRepository.getInstance().registerClassLoader(parentUnitLoader);
+               parentPoolDomain = new ClassPoolToClassPoolDomainAdapter(parentUnitPool);
+            }
+         }
+         poolDomain = new JBossClClassPoolDomain(domain.getName(), parentPoolDomain, domain.getParentPolicy(), registry);
+         
+         ClassPoolDomainRegistry.getInstance().addClassPoolDomain(domain, poolDomain);
+      }
+      return poolDomain;
+   }
+   
+   @Override
+   protected ClassPool getCreateParentClassPools(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      ClassPool parent = super.getCreateParentClassPools(cl, src, repository);
+      if (parent == ClassPool.getDefault())
+      {
+         //In AS BaseClassLoader seems to normally have a null parent
+         return null;
+      }
+      return parent;
+   }
+   
+   private void registerBootstrapLoaders()
+   {
+      Set<Module> unregistered = registerModuleCallback.getUnregisteredModules();
+      if (unregistered.size() > 0)
+      {
+         for (Module module : unregistered)
+         {
+            ClassLoader loader = getClassLoaderForModule(module);
+            log.debug("Registering loader for module " + module + ": " + loader);
+            ClassPoolRepository.getInstance().registerClassLoader(loader);
+         }
+      }
+   }
+   
+   private ClassLoader getClassLoaderForModule(final Module module)
+   {
+      return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+      {
+      
+         public ClassLoader run()
+         {
+            return ClassLoading.getClassLoaderForModule(module);
+         }
+      });
+   }
+   
+   private Module getModuleForClassLoader(final ClassLoader classLoader)
+   {
+      return AccessController.doPrivileged(new PrivilegedAction<Module>()
+      {
+         public Module run()
+         {
+            return ClassLoading.getModuleForClassLoader(classLoader);
+         }
+      });
+   }
+}

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClParentDelegationStrategy.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/JBossClParentDelegationStrategy.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/JBossClParentDelegationStrategy.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,14 +19,14 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jbosscl;
+package org.jboss.classpool.plugins.as5.jbosscl;
 
 import org.jboss.classloader.spi.ParentPolicy;
 import org.jboss.classloader.spi.filter.ClassFilter;
-import org.jboss.classpool.AbstractParentDelegationStrategy;
-import org.jboss.classpool.ClassLoaderUtils;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.ClassPoolToClassPoolDomainAdaptorFactory;
+import org.jboss.classpool.base.AbstractParentDelegationStrategy;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolToClassPoolDomainAdaptorFactory;
+import org.jboss.classpool.helpers.ClassLoaderUtils;
 
 /**
  * 

Modified: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/SecurityActions.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/jbosscl/SecurityActions.java	2009-07-23 18:49:50 UTC (rev 91617)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/plugins/as5/jbosscl/SecurityActions.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -19,7 +19,7 @@
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
-package org.jboss.classpool.jbosscl;
+package org.jboss.classpool.plugins.as5.jbosscl;
 
 import java.security.AccessController;
 import java.security.PrivilegedAction;

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/AbstractClassPool.java (from rev 91980, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPool.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/AbstractClassPool.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/AbstractClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,428 @@
+package org.jboss.classpool.spi;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.scopedpool.ScopedClassPool;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.classpool.helpers.ClassLoaderUtils;
+import org.jboss.logging.Logger;
+
+/**
+ * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision: 86930 $
+ */
+public class AbstractClassPool extends ScopedClassPool
+{
+   protected final Logger logger = Logger.getLogger(this.getClass());
+   
+   /** Classnames of classes that will be created - we do not want to look for these in other pools.
+    * The main use for this is when a class is created in a parent pool, and we then want to 
+    * create a class with the same name in a parent-last child pool. As part of the create process
+    * javassist.ClassPool will check if that class is frozen (which in turn will call getCached()
+    * and get0()). If the classname exists in this map, get0() and getCached() should return null;   
+    */
+   protected final ConcurrentHashMap<String, String> generatedClasses = new ConcurrentHashMap<String, String>();
+
+   protected final ConcurrentHashMap<String, Boolean> localResources = new ConcurrentHashMap<String, Boolean>();
+
+   /** Classnames of classes that have been loaded, but were not woven */
+   protected final ConcurrentHashMap<String, Boolean> loadedButNotWovenClasses = new ConcurrentHashMap<String, Boolean>();
+
+   /** Causes the AbstractClassPool.getCached() method to search all ClassPools registered in the repository */
+   public static final Class<SearchAllRegisteredLoadersSearchStrategy> SEARCH_ALL_STRATEGY = SearchAllRegisteredLoadersSearchStrategy.class;
+
+   /** Causes the AbstractClassPool.getCached() method to search only itself */
+   public static final Class<SearchLocalLoaderLoaderSearchStrategy> SEARCH_LOCAL_ONLY_STRATEGY = SearchLocalLoaderLoaderSearchStrategy.class;
+   
+   private final ClassPoolSearchStrategy searchStrategy;
+   
+   private final Map<AbstractClassPool, Boolean> children = new WeakHashMap<AbstractClassPool, Boolean>();
+   
+   static
+   {
+      ClassPool.doPruning = false;
+      ClassPool.releaseUnmodifiedClassFile = false;
+   }
+
+   public AbstractClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      this(cl, src, repository, false);
+   }
+
+   protected AbstractClassPool(ClassPool src, ScopedClassPoolRepository repository)
+   {
+      this(null, src, repository, true);
+   }
+
+   private AbstractClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, boolean isTemp)
+   {
+      this(cl, src, repository, SEARCH_ALL_STRATEGY, isTemp);
+   }
+
+   public AbstractClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, Class<? extends ClassPoolSearchStrategy> searchStrategy)
+   {
+      this(cl, src, repository, searchStrategy, false);
+   }
+   
+   public AbstractClassPool(ClassPool src, ScopedClassPoolRepository repository, Class<? extends ClassPoolSearchStrategy> searchStrategy)
+   {
+      this(null, src, repository, searchStrategy, true);
+   }
+   
+   private AbstractClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, Class<? extends ClassPoolSearchStrategy> searchStrategy, boolean isTemp)
+   {
+      super(cl, src, repository, isTemp);
+      if (searchStrategy == SEARCH_ALL_STRATEGY)
+      {
+         this.searchStrategy = new SearchAllRegisteredLoadersSearchStrategy();
+      }
+      else if (searchStrategy == SEARCH_LOCAL_ONLY_STRATEGY)
+      {
+         this.searchStrategy = new SearchLocalLoaderLoaderSearchStrategy();
+      }
+      else
+      {
+         try
+         {
+            this.searchStrategy = searchStrategy.newInstance();
+         }
+         catch (Exception e)
+         {
+            throw new RuntimeException("Error instantiating search strategy class " + searchStrategy, e);
+         }
+      }
+      if (logger.isTraceEnabled()) logger.trace(this + " creating pool for loader " + cl + " searchStrategy:" + this.searchStrategy + " isTemp:" + isTemp);
+
+      registerWithParent();
+   }
+   
+   private void registerWithParent()
+   {
+      if (parent != null && parent instanceof AbstractClassPool)
+      {
+         ((AbstractClassPool)parent).children.put(this, Boolean.TRUE);
+      }
+   }
+   
+   private void unregisterWithParent()
+   {
+      if (parent != null && parent instanceof AbstractClassPool)
+      {
+         ((AbstractClassPool)parent).children.remove(this);
+      }
+   }
+   
+   public void registerGeneratedClass(String className)
+   {
+      generatedClasses.put(className, className);
+   }
+
+   public boolean isGeneratedClass(String className)
+   {
+      return generatedClasses.containsKey(className);
+   }
+   
+   public void doneGeneratingClass(String className)
+   {
+      generatedClasses.remove(className);
+   }
+
+   public void close()
+   {
+      super.close();
+      unregisterWithParent();
+      repository.unregisterClassLoader(getClassLoader());
+      
+      for (Iterator<AbstractClassPool> childIterator = children.keySet().iterator(); childIterator.hasNext();)
+      {
+         AbstractClassPool child = childIterator.next();
+         childIterator.remove();
+         if (child.getClassLoader() != null)
+         {
+            child.close();
+         }
+      }
+//      for (Iterator<AbstractClassPool> it = children.keySet().iterator() ; it.hasNext() ; )
+//      {
+//         AbstractClassPool child = it.next();
+//         it.remove();
+//         ClassLoader loader = child.getClassLoader();
+//         if (loader != null)
+//         {
+//            AspectManager.instance().unregisterClassLoader(loader);
+//         }
+//      }
+   }
+
+   public CtClass getCached(String classname)
+   {
+      return searchStrategy.getCached(classname);
+   }
+   
+   /**
+    * Make createCtClass public so that we can override it 
+    */
+//   @Override
+//   public CtClass createCtClass(String classname, boolean useCache)
+//   {
+//      boolean trace = logger.isTraceEnabled();
+//      
+//      if (trace) logger.trace(this + " attempting to create CtClass " + classname);
+//      CtClass clazz = super.createCtClass(classname, useCache);
+//      if (trace) logger.trace(this + " created CtClass " + getClassPoolLogStringForClass(clazz));
+//      
+//      return clazz;
+//   }
+
+   @Override
+   public void cacheCtClass(String classname, CtClass c, boolean dynamic)
+   {
+      boolean trace = logger.isTraceEnabled();
+      if (trace) logger.trace(this + " caching " + classname);
+      // TODO remove this true when ready
+      super.cacheCtClass(classname, c, true);
+      if (dynamic)
+      {
+         if (trace) logger.trace(this + " registering dynamic class " + classname);
+         doneGeneratingClass(classname);
+         String resourcename = getResourceName(classname);
+         localResources.put(resourcename, Boolean.TRUE);
+      }
+   }
+
+   protected boolean includeInGlobalSearch()
+   {
+      return true;
+   }
+
+   protected String getResourceName(String classname)
+   {
+      return ClassLoaderUtils.getResourceName(classname);
+   }
+
+   protected final boolean isLocalResource(String resourceName, boolean trace)
+   {
+      String classResourceName = resourceName;
+      Boolean isLocal = localResources.get(classResourceName);
+      if (isLocal != null)
+      {
+         if (trace) logger.trace(this + " " + resourceName + " is local " + isLocal);
+      
+         return isLocal.booleanValue();
+      }
+      boolean localResource = isLocalClassLoaderResource(classResourceName);
+      localResources.put(classResourceName, localResource ? Boolean.TRUE : Boolean.FALSE);
+      
+      if (trace) logger.trace(this + " " + resourceName + " is local " + localResource);
+      
+      return localResource;
+   }
+
+   protected boolean isLocalClassLoaderResource(String classResourceName)
+   {
+      return getClassLoader().getResource(classResourceName) != null;
+   }
+   
+//   @Override
+//   public synchronized CtClass getLocally(String classname)
+//           throws NotFoundException
+//   {
+//      boolean trace = logger.isTraceEnabled();
+//      if (trace) logger.trace(this + " attempting local get for " + classname);
+//      softcache.remove(classname);
+//      CtClass clazz = (CtClass) classes.get(classname);
+//      if (trace && clazz != null)
+//      {
+//         logger.trace(this + " found " + classname + " in cache");
+//      }
+//      if (clazz == null)
+//      {
+//         clazz = createCtClass(classname, true);
+//         if (clazz == null) throw new NotFoundException(classname);
+//         lockInCache(clazz);//Avoid use of the softclasscache
+//      }
+//
+//      return clazz;
+//   }
+
+//   @Override
+//   protected CtClass getCachedLocally(String classname)
+//   {
+//      if (logger.isTraceEnabled()) logger.trace(this + " checking local cache for " + classname);
+//      return super.getCachedLocally(classname);
+//   }
+
+//   @Override
+//   public void lockInCache(CtClass c)
+//   {
+//      if (logger.isTraceEnabled()) logger.trace(this + " locking in cache " + c.getName());
+//      super.lockInCache(c);
+//   }
+
+//   public void setClassLoadedButNotWoven(String classname)
+//   {
+//      loadedButNotWovenClasses.put(classname, Boolean.TRUE);
+//   }
+//
+//   public boolean isClassLoadedButNotWoven(String classname)
+//   {
+//      return loadedButNotWovenClasses.get(classname) == Boolean.TRUE;
+//   }
+
+//   public static AbstractClassPool createAOPClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+//   {
+//      return (AbstractClassPool)AspectManager.getClassPoolFactory().create(cl, src, repository);
+//   }
+//
+//   public static AbstractClassPool createAOPClassPool(ClassPool src, ScopedClassPoolRepository repository)
+//   {
+//      return (AbstractClassPool)AspectManager.getClassPoolFactory().create(src, repository);
+//   }
+
+   public String toString()
+   {
+      ClassLoader cl = null;
+      try
+      {
+         cl = getClassLoader();
+      }
+      catch(IllegalStateException ignore)
+      {
+      }
+      return this.getClass().getName() + "@" + System.identityHashCode(this) + " " + super.toString() + " - dcl:" + cl;
+   }
+
+  /* public CtClass getClass(String classname) {
+      CtClass clazz;
+      if (classname.charAt(0) == '[')
+      {
+         try
+         {
+            return Descriptor.toCtClass(classname, this);
+         }
+         catch (NotFoundException nfe)
+         {
+            throw new UnreachableStatementException(nfe.getMessage());
+         }
+      }
+      if (classname == null)
+         return null;
+      else
+         clazz = get0(classname, true);
+
+      if (clazz != null)
+      {
+         //clazz.incGetCounter();
+      }
+      return clazz;
+   }*/
+
+   
+//   public CtClass internalGet0(String classname, boolean useCache) throws NotFoundException
+//   {
+//      return super.get0(classname, useCache);
+//   }
+   
+   protected String getClassPoolLogStringForClass(CtClass clazz)
+   {
+      if (clazz == null)
+      {
+         return null;
+      }
+      if (clazz.getClassPool() == null)
+      {
+         return null;
+      }
+      return clazz.getClassPool().toString();
+   }
+   
+   /**
+    * 
+    * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+    * @version $Revision: 1.1 $
+    */
+   public interface ClassPoolSearchStrategy
+   {
+      CtClass getCached(String classname);
+   }
+
+   /**
+    * Contains the original AbstractClassPool.getCached()
+    * 
+    */
+   // NOTE: identical to ScopedClassPoolRepository, with two differences:
+   // 1. This method uses the shortcuts isLocalResource and getResourceName
+   // 2. This method uses the Repository.includeInGlobalSearch method
+   private class SearchAllRegisteredLoadersSearchStrategy implements ClassPoolSearchStrategy
+   {
+      Logger logger = Logger.getLogger(this.getClass());
+      public CtClass getCached(String classname)
+      {
+         boolean trace = logger.isTraceEnabled();
+         
+         if (trace) logger.trace(this + " " + AbstractClassPool.this + " searching all pools for " + classname);
+         
+         CtClass clazz = getCachedLocally(classname);
+         if (clazz == null && getClassLoader0() != null &&
+               !isLocalResource(getResourceName(classname), trace) &&
+               !generatedClasses.containsKey(classname))
+         {
+            Map<ClassLoader, ClassPool> registeredCLs = repository.getRegisteredCLs();
+            synchronized (registeredCLs)
+            {
+               for(ClassPool pl : registeredCLs.values())
+               {
+                  AbstractClassPool pool = (AbstractClassPool) pl;
+                  if (pool.isUnloadedClassLoader())
+                  {
+                     if (trace) logger.trace(this + " pool is unloaded " + pool);
+                     repository.unregisterClassLoader(pool.getClassLoader());
+                     continue;
+                  }
+
+                  //Do not check classpools for scoped classloaders
+                  if (!pool.includeInGlobalSearch())
+                  {
+                     if (trace) logger.trace(this + " pool is scoped " + pool);
+                     continue;
+                  }
+
+                  if (trace) logger.trace(this + " " + AbstractClassPool.this + " searching for " + classname + " in " + pool);
+                  clazz = pool.getCachedLocally(classname);
+                  if (clazz != null)
+                  {
+                     break;
+                  }
+               }
+            }
+         }
+         if (trace) logger.trace(this + " " + AbstractClassPool.this + " found " + classname + " in pool" + getClassPoolLogStringForClass(clazz));
+         return clazz;
+      }
+   }
+   
+   /**
+    * Checks only the ClassPool's cache 
+    */
+   private class SearchLocalLoaderLoaderSearchStrategy implements ClassPoolSearchStrategy
+   {
+      Logger logger = Logger.getLogger(this.getClass());
+
+      public CtClass getCached(String classname)
+      {
+         boolean trace = logger.isTraceEnabled();
+         
+         if (trace) logger.trace(this + " " + AbstractClassPool.this + " searching just this pool for " + classname);
+         CtClass clazz = getCachedLocally(classname);
+         if (trace) logger.trace(this + " " + AbstractClassPool.this + " found " + classname + " in pool" + getClassPoolLogStringForClass(clazz));
+         return clazz;
+      }
+   }
+}
\ No newline at end of file

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/AbstractClassPoolFactory.java (from rev 91980, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractClassPoolFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/AbstractClassPoolFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/AbstractClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,21 @@
+package org.jboss.classpool.spi;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPoolFactory;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+// TODO: check why ScopedClassPoolRepository and not AbstractClassPoolRepository
+public class AbstractClassPoolFactory implements ScopedClassPoolFactory
+{
+
+   public AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      return new AbstractClassPool(cl, src, repository);
+   }
+
+   public AbstractClassPool create(ClassPool src, ScopedClassPoolRepository repository)
+   {
+      return new AbstractClassPool(src, repository);
+   }
+
+}
\ No newline at end of file

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/ClassPoolRepository.java (from rev 91980, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolRepository.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/ClassPoolRepository.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/ClassPoolRepository.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,185 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */ 
+package org.jboss.classpool.spi;
+
+import java.util.Map;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPool;
+import javassist.scopedpool.ScopedClassPoolFactory;
+import javassist.scopedpool.ScopedClassPoolRepository;
+import javassist.scopedpool.ScopedClassPoolRepositoryImpl;
+
+
+/**
+ * Singleton classpool repository
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 87799 $
+ */
+public class ClassPoolRepository implements ScopedClassPoolRepository
+{
+   //private static final Logger logger = Logger.getLogger(ClassPoolRepository.class);
+   
+   private final static ClassPoolRepository instance = new ClassPoolRepository();
+   
+   /** The classes per classppol */
+   //protected final HashMap<ClassLoader, HashSet<Class<?>>> ucl2classes = new HashMap<ClassLoader, HashSet<Class<?>>>();
+
+   private ScopedClassPoolRepository delegate;
+   private ClassPoolRepositoryCallback callback;
+
+   public static ClassPoolRepository getInstance()
+   {
+      return instance;
+   }
+   
+   private ClassPoolRepository()
+   {
+      this.delegate = ScopedClassPoolRepositoryImpl.getInstance();
+      //This was needed when jboss-aop.jar was deployed in the jboss/lib directory since the AspectManager bean had no chance to initialise it
+      delegate.setClassPoolFactory(new AbstractClassPoolFactory());
+      //      if (!setJBossSpecificStartupVariables())
+//      {
+//         delegate.setClassPoolFactory(new AbstractClassPoolFactory());
+//      }
+   }
+
+//   private boolean setJBossSpecificStartupVariables()
+//   {
+//      //We are running within JBoss 5, let's default to the JBossClassPoolFactory and set the ScopedClassPoolHelper
+//      //so that we get correct behaviour before the AspectManager service has been deployed
+//      try
+//      {
+//         Class jbcpf = Class.forName("org.jboss.aop.deployment.JBossClassPoolFactory");
+//         ScopedClassPoolFactory factory = (ScopedClassPoolFactory)jbcpf.newInstance();
+//         
+//         Class hlpr = Class.forName("org.jboss.aop.deployment.JBossScopedClassLoaderHelper");
+//         AOPScopedClassLoaderHelper helper = (AOPScopedClassLoaderHelper)hlpr.newInstance();
+//         delegate.setClassPoolFactory(factory);
+//         AspectManager.scopedCLHelper = helper;
+//         return true;
+//      }
+//      catch (Exception e)
+//      {
+//      }
+//      return false;//Not running in JBoss probably
+//   }
+   
+   public void setClassPoolFactory(ScopedClassPoolFactory factory)
+   {
+      delegate.setClassPoolFactory(factory);
+   }
+   
+   public ScopedClassPoolFactory getClassPoolFactory()
+   {
+      return delegate.getClassPoolFactory();
+   }
+   
+   public void setClassPoolRepositoryCallback(ClassPoolRepositoryCallback callback)
+   {
+      this.callback = callback;
+   }
+   
+   public ClassPoolRepositoryCallback getClassPoolRepositoryCallback()
+   {
+      return this.callback;
+   }
+
+   public boolean isPrune()
+   {
+      return delegate.isPrune();
+   }
+
+   public void setPrune(boolean prune)
+   {
+      delegate.setPrune(prune);
+   }
+
+   public ScopedClassPool createScopedClassPool(ClassLoader cl, ClassPool src)
+   {
+      return delegate.createScopedClassPool(cl, src);
+   }
+
+   public ClassPool findClassPool(ClassLoader cl)
+   {
+      return delegate.findClassPool(cl);
+   }
+   
+   /**
+    * Get the registered classloaders
+    * 
+    * @return the registered classloaders
+    */
+   public Map<ClassLoader, ClassPool> getRegisteredCLs()
+   {
+      return delegate.getRegisteredCLs();
+   }
+
+   /**
+    * This method will check to see if a register classloader has been undeployed (as in JBoss)
+    */
+   public void clearUnregisteredClassLoaders()
+   {
+      delegate.clearUnregisteredClassLoaders();
+   }
+   
+   public ClassPool registerClassLoader(ClassLoader classLoader)
+   {
+      if (classLoader == null)
+      {
+         classLoader = SecurityActions.getContextClassLoader();
+      }
+      ClassPool classPool = delegate.registerClassLoader(classLoader);
+      if (callback != null)
+      {
+         callback.classLoaderRegistered(classLoader);
+      }
+      return classPool;
+   }
+
+   public void unregisterClassLoader(ClassLoader classLoader)
+   {
+      delegate.unregisterClassLoader(classLoader);
+      if (callback != null)
+      {
+         callback.classLoaderUnregistered(classLoader);
+      }
+   }
+   
+   /*public void registerClass(Class<?> clazz)
+   {
+      ClassLoader classLoader = SecurityActions.getClassLoader(clazz);
+      HashSet<Class<?>> classes = ucl2classes.get(classLoader);
+      if (classes == null)
+      {
+         classes = new HashSet<Class<?>>();
+         ucl2classes.put(classLoader, classes);
+      }
+      classes.add(clazz);
+   }*/
+
+   /*public void perfomUnregisterClassLoader(ClassLoader cl)
+   {
+      ucl2classes.remove(cl);
+   }*/
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/ClassPoolRepositoryCallback.java (from rev 91980, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ClassPoolRepositoryCallback.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/ClassPoolRepositoryCallback.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/ClassPoolRepositoryCallback.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,34 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */ 
+package org.jboss.classpool.spi;
+
+
+/**
+ * Singleton classpool repository
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 87799 $
+ */
+public interface ClassPoolRepositoryCallback {
+   public void classLoaderRegistered(ClassLoader classLoader);
+   public void classLoaderUnregistered(ClassLoader classLoader);
+}
\ No newline at end of file

Added: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/SecurityActions.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/SecurityActions.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/spi/SecurityActions.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.spi;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+class SecurityActions
+{
+   public static class GetContextClassLoaderAction implements PrivilegedAction<ClassLoader>
+   {
+      public static GetContextClassLoaderAction INSTANCE = new GetContextClassLoaderAction();
+      
+      public ClassLoader run()
+      {
+         return Thread.currentThread().getContextClassLoader();
+      }
+   }
+
+   static ClassLoader getContextClassLoader()
+   {
+      if (System.getSecurityManager() == null)
+         return Thread.currentThread().getContextClassLoader();
+      else
+         return AccessController.doPrivileged(GetContextClassLoaderAction.INSTANCE);
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempClassPoolFactory.java (from rev 92349, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/AbstractJBossDelegatingClassPoolFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempClassPoolFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,58 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.temp;
+
+import org.jboss.classpool.plugins.as.AbstractJBossClassPoolFactory;
+import org.jboss.classpool.spi.AbstractClassPool;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class TempClassPoolFactory extends AbstractJBossClassPoolFactory
+{
+   // TODO: check if this is needed
+   /*protected ClassPool getCreateParentClassPools(final ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      //Make sure that we get classpools for all the parent classloaders
+      if (cl == null)
+      {
+         return ClassPool.getDefault();
+      }
+      ClassLoader parent = SecurityActions.getParent(cl);
+
+      if (parent != null)
+      {
+         return repository.registerClassLoader(parent);
+      }
+      return src;
+   }*/
+   
+   public AbstractClassPool create(ClassPool src, ScopedClassPoolRepository repository)
+   {
+      return new TempJBossDelegatingClassPool(src, repository);
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempJBossClassPool.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TempJBossClassPool.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempJBossClassPool.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempJBossClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,71 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.temp;
+
+import org.jboss.classpool.spi.AbstractClassPool;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+
+/**
+ * The temporary classpool used by the instrumentor. It's main job is to delegate to the parent classpool
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class TempJBossClassPool extends AbstractClassPool
+{
+   boolean isParentAbstractPool;
+   public TempJBossClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      super(cl, src, repository);
+      if (src instanceof AbstractClassPool)
+      {
+         isParentAbstractPool = true;
+      }
+   }
+
+   public TempJBossClassPool(ClassPool src, ScopedClassPoolRepository repository)
+   {
+      super(src, repository);
+      if (src instanceof AbstractClassPool)
+      {
+         isParentAbstractPool = true;
+      }
+   }
+
+   public CtClass getCached(String classname)
+   {
+      CtClass clazz = null;
+      if (isParentAbstractPool)
+      {
+         clazz = ((AbstractClassPool)parent).getCached(classname);
+      }
+      if (clazz == null)
+      {
+         clazz = super.getCached(classname);
+      }
+      return clazz;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempJBossDelegatingClassPool.java (from rev 91617, projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/TempJBossDelegatingClassPool.java)
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempJBossDelegatingClassPool.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/temp/TempJBossDelegatingClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -0,0 +1,72 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.classpool.temp;
+
+import org.jboss.classpool.base.BaseClassPool;
+import org.jboss.classpool.spi.AbstractClassPool;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.NotFoundException;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class TempJBossDelegatingClassPool extends AbstractClassPool
+{
+   boolean isParentPoolDelegating;
+   public TempJBossDelegatingClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      super(cl, src, repository);
+      if (src instanceof BaseClassPool)
+      {
+         isParentPoolDelegating = true;
+      }
+   }
+
+   public TempJBossDelegatingClassPool(ClassPool src, ScopedClassPoolRepository repository)
+   {
+      super(src, repository);
+      if (src instanceof BaseClassPool)
+      {
+         isParentPoolDelegating = true;
+      }
+   }
+   @Override
+   public CtClass get0(String classname, boolean useCache) throws NotFoundException
+   {
+      CtClass clazz = null;
+      if (isParentPoolDelegating)
+      {
+         clazz = ((BaseClassPool)parent).get0(classname, useCache);
+      }
+      if (clazz == null)
+      {
+         clazz = super.get0(classname, useCache);
+      }
+      return clazz;
+   }
+}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPool.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPool.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPool.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,70 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.ucl;
-
-import java.io.File;
-import java.net.URL;
-import java.security.ProtectionDomain;
-
-import javassist.CannotCompileException;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.DelegatingClassPool;
-import org.jboss.classpool.jboss4.ToClassInvoker;
-import org.jboss.classpool.jboss4.ToClassInvokerPoolReference;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBossUclDelegatingClassPool extends DelegatingClassPool implements ToClassInvokerPoolReference
-{
-   ToClassInvoker toClassInvoker = null;
-
-   public JBossUclDelegatingClassPool(ClassPoolDomain domain, ClassLoader cl, ClassPool parent, 
-         ScopedClassPoolRepository repository, File tmpDir, URL tmpURL)
-   {
-      super(domain, cl, parent, repository);
-      toClassInvoker = new ToClassInvoker(tmpDir);
-   }
-
-   public Class<?> toClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException
-   {
-      return toClassInvoker.toClass(this, cc, getResourceName(cc.getName()), loader, domain);
-   }
-
-   public Class<?> superPoolToClass(CtClass cc, ClassLoader loader, ProtectionDomain domain) throws CannotCompileException
-   {
-      return super.toClass(cc, loader, domain);
-   }
-
-   @Override
-   public void lockInCache(CtClass clazz)
-   {
-      super.lockInCache(clazz);
-      localResources.put(getResourceName(clazz.getName()), Boolean.TRUE);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPoolFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPoolFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/classpool/ucl/JBossUclDelegatingClassPoolFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -1,166 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.classpool.ucl;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.AbstractClassPoolFactory;
-import org.jboss.classpool.AbstractJBossDelegatingClassPoolFactory;
-import org.jboss.classpool.BaseClassPoolDomain;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.ClassPoolDomainRegistry;
-import org.jboss.classpool.NonDelegatingClassPool;
-import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
-import org.jboss.mx.loading.LoaderRepository;
-import org.jboss.mx.loading.RepositoryClassLoader;
-import org.jboss.mx.server.ServerConstants;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBossUclDelegatingClassPoolFactory extends AbstractJBossDelegatingClassPoolFactory implements AbstractClassPoolFactory
-{
-   private ClassPoolDomain mainDomain;
-   protected File tmpClassesDir;
-
-   public JBossUclDelegatingClassPoolFactory(File tmpClassesDir) throws IOException
-   {
-      System.out.println("TMP CLASSES DIR: " + tmpClassesDir);
-      this.tmpClassesDir = tmpClassesDir;
-   }
-   
-   public synchronized AbstractClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      ClassPool parent = getCreateParentClassPools(cl, src, repository);
-
-      if (cl instanceof RepositoryClassLoader)
-      {
-         ClassPoolDomain domain = getDomain((RepositoryClassLoader)cl);  
-         
-         File tempdir = getTempDirectory(cl);
-         URL tmpCP = createURLAndAddToLoader(cl, tempdir);
-         
-         return new JBossUclDelegatingClassPool(domain, cl, parent, repository, tempdir, tmpCP);
-      }
-      
-      return new NonDelegatingClassPool(cl, parent, repository, true);
-   }
-
-   private ClassPoolDomain getDomain(RepositoryClassLoader cl)
-   {
-      LoaderRepository loaderRepository = cl.getLoaderRepository();
-      ClassPoolDomainRegistry registry = ClassPoolDomainRegistry.getInstance();
-      ClassPoolDomain domain = registry.getDomain(loaderRepository);
-      if (domain == null)
-      {
-         if (loaderRepository instanceof HeirarchicalLoaderRepository3)
-         {
-            
-            boolean parentFirst = ((HeirarchicalLoaderRepository3)loaderRepository).getUseParentFirst();
-            domain = new BaseClassPoolDomain("Scoped" + System.identityHashCode(loaderRepository), mainDomain, parentFirst);
-         }
-         else
-         {
-            if (mainDomain == null)
-            {
-               domain = new BaseClassPoolDomain(ServerConstants.DEFAULT_LOADER_NAME, null, false);
-               mainDomain = domain;
-            }
-            else
-            {
-               domain = mainDomain;
-            }
-            registry.addClassPoolDomain(loaderRepository, domain);
-         }
-      }
-      return domain;
-   }
-   
-   protected File getTempDirectory(ClassLoader cl)
-   {
-      File tempdir = null;
-      int attempts = 0;
-      IOException ex = null;
-      while (tempdir == null && attempts < 5)
-      {
-         //Workaround for JBAOP-254, retry a few times
-         try
-         {
-            tempdir = createTempDir(cl);
-         }
-         catch (IOException e)
-         {
-            ex = e;
-         }
-      }
-      
-      if (tempdir == null)
-      {
-         throw new RuntimeException("", ex);
-      }
-      
-      return tempdir;
-   }
-
-   public File createTempDir(ClassLoader cl) throws IOException
-   {
-      File tempdir = File.createTempFile("ucl", "", tmpClassesDir);
-      tempdir.delete();
-      tempdir.mkdir();
-      tempdir.deleteOnExit();
-
-      return tempdir;
-   }
-   
-   private URL createURLAndAddToLoader(ClassLoader cl, File tempdir)
-   {
-      try
-      {
-         URL tmpURL = tempdir.toURL();
-         URL tmpCP = new URL(tmpURL, "?dynamic=true");
-
-         RepositoryClassLoader ucl = (RepositoryClassLoader) cl;
-
-         // We may be undeploying.
-         if (ucl.getLoaderRepository() != null)
-         {
-            ucl.addURL(tmpCP);
-         }
-         
-         return tmpCP;
-      }
-      catch(Exception e)
-      {
-         // AutoGenerated
-         throw new RuntimeException(e);
-      }
-   }
-
-}

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/common/ClassFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/common/ClassFactory.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/common/ClassFactory.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -26,8 +26,8 @@
 import javassist.CtClass;
 import junit.framework.Assert;
 
-import org.jboss.classpool.AbstractClassPool;
-import org.jboss.classpool.ClassPoolRepository;
+import org.jboss.classpool.spi.AbstractClassPool;
+import org.jboss.classpool.spi.ClassPoolRepository;
 
 /**
  * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -27,6 +27,7 @@
 
 import org.jboss.test.classpool.support.BundleInfoBuilder;
 import org.jboss.test.classpool.support.Result;
+import org.jboss.test.classpool.support.SupportClasses;
 
 /**
  * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
@@ -87,6 +88,7 @@
          unregisterClassLoader(clA1);
       }
       assertNoClassLoader(rA1);
+      //assertCannotLoadClass(this.getClass().getClassLoader(), SupportClasses.CLASS_A);
    }
    
    public void testUsesNoImport() throws Exception
@@ -106,6 +108,7 @@
          unregisterClassLoader(clA1);
       }
       assertNoClassLoader(rA1);
+      //assertCannotLoadClass(this.getClass().getClassLoader(), SupportClasses.CLASS_A);
    }
 
 }

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -42,7 +42,7 @@
 import junit.framework.Test;
 
 import org.jboss.classloading.spi.DomainClassLoader;
-import org.jboss.classpool.ClassPoolRepository;
+import org.jboss.classpool.spi.ClassPoolRepository;
 import org.jboss.test.AbstractTestDelegate;
 import org.jboss.util.loading.Translator;
 

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -47,10 +47,10 @@
 import org.jboss.classloader.test.support.IsolatedClassLoaderTestHelper;
 import org.jboss.classloading.spi.dependency.ClassLoading;
 import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.jboss5.RegisterModuleCallback;
-import org.jboss.classpool.jboss5.VFSClassLoaderDomainRegistry;
-import org.jboss.classpool.jbosscl.JBossClDelegatingClassPoolFactory;
+import org.jboss.classpool.plugins.as5.RegisterModuleCallback;
+import org.jboss.classpool.plugins.as5.VFSClassLoaderDomainRegistry;
+import org.jboss.classpool.plugins.as5.jbosscl.JBossClDelegatingClassPoolFactory;
+import org.jboss.classpool.spi.ClassPoolRepository;
 import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
 import org.jboss.kernel.spi.deployment.KernelDeployment;
 import org.jboss.test.AbstractTestCaseWithSetup;

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ClassPoolTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ClassPoolTest.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ClassPoolTest.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -29,11 +29,11 @@
 
 import javassist.ClassPool;
 
-import org.jboss.classpool.AbstractClassPoolDomain;
-import org.jboss.classpool.BaseClassPoolDomain;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.DelegatingClassPool;
+import org.jboss.classpool.base.BaseClassPoolDomain;
+import org.jboss.classpool.domain.AbstractClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+import org.jboss.classpool.spi.ClassPoolRepository;
 import org.jboss.test.AbstractTestCaseWithSetup;
 import org.jboss.test.AbstractTestDelegate;
 import org.jboss.test.classpool.support.SupportClasses;

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/IsLocalResourcePluginFactoryTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/IsLocalResourcePluginFactoryTestCase.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/IsLocalResourcePluginFactoryTestCase.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -30,19 +30,19 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
-import org.jboss.classpool.BaseClassPoolDomain;
-import org.jboss.classpool.ClassPoolDomain;
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.DefaultClassLoaderIsLocalResourcePlugin;
-import org.jboss.classpool.DefaultClassLoaderIsLocalResourcePluginFactory;
-import org.jboss.classpool.DelegatingClassPool;
-import org.jboss.classpool.IsLocalResourcePlugin;
-import org.jboss.classpool.IsLocalResourcePluginFactory;
-import org.jboss.classpool.IsLocalResourcePluginFactoryRegistry;
-import org.jboss.classpool.TranslatableClassLoaderIsLocalResourcePlugin;
-import org.jboss.classpool.TranslatableClassLoaderIsLocalResourcePluginFactory;
-import org.jboss.classpool.URLClassLoaderIsLocalResourcePlugin;
-import org.jboss.classpool.URLClassLoaderIsLocalResourcePluginFactory;
+import org.jboss.classpool.base.BaseClassPoolDomain;
+import org.jboss.classpool.base.DefaultClassLoaderIsLocalResourcePlugin;
+import org.jboss.classpool.base.DefaultClassLoaderIsLocalResourcePluginFactory;
+import org.jboss.classpool.base.IsLocalResourcePlugin;
+import org.jboss.classpool.base.IsLocalResourcePluginFactory;
+import org.jboss.classpool.base.IsLocalResourcePluginFactoryRegistry;
+import org.jboss.classpool.base.TranslatableClassLoaderIsLocalResourcePlugin;
+import org.jboss.classpool.base.TranslatableClassLoaderIsLocalResourcePluginFactory;
+import org.jboss.classpool.base.URLClassLoaderIsLocalResourcePlugin;
+import org.jboss.classpool.base.URLClassLoaderIsLocalResourcePluginFactory;
+import org.jboss.classpool.domain.ClassPoolDomain;
+import org.jboss.classpool.plugins.as.DelegatingClassPool;
+import org.jboss.classpool.spi.ClassPoolRepository;
 import org.jboss.util.loading.Translatable;
 
 /**

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentFirstDelegatingClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentFirstDelegatingClassPoolTestCase.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentFirstDelegatingClassPoolTestCase.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -8,7 +8,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.classpool.ClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomain;
 import org.jboss.test.classpool.common.ClassFactory;
 
 

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentLastDelegatingClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentLastDelegatingClassPoolTestCase.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentLastDelegatingClassPoolTestCase.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -7,7 +7,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.classpool.AbstractClassPoolDomain;
+import org.jboss.classpool.domain.AbstractClassPoolDomain;
 import org.jboss.test.classpool.common.ClassFactory;
 
 

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ScopedSiblingDelegatingClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ScopedSiblingDelegatingClassPoolTestCase.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ScopedSiblingDelegatingClassPoolTestCase.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -7,7 +7,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.classpool.ClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomain;
 
 
 /*

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/SimpleDelegatingClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/SimpleDelegatingClassPoolTestCase.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/SimpleDelegatingClassPoolTestCase.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -7,7 +7,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.classpool.ClassPoolDomain;
+import org.jboss.classpool.domain.ClassPoolDomain;
 
 /*
 * JBoss, Home of Professional Open Source.

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/test/UclClassPoolTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/test/UclClassPoolTest.java	2009-08-21 11:58:47 UTC (rev 92661)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/test/UclClassPoolTest.java	2009-08-21 12:57:00 UTC (rev 92662)
@@ -35,8 +35,8 @@
 import javax.management.MBeanServerFactory;
 import javax.management.ObjectName;
 
-import org.jboss.classpool.ClassPoolRepository;
-import org.jboss.classpool.ucl.JBossUclDelegatingClassPoolFactory;
+import org.jboss.classpool.plugins.as4.ucl.JBossUclDelegatingClassPoolFactory;
+import org.jboss.classpool.spi.ClassPoolRepository;
 import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
 import org.jboss.mx.loading.LoaderRepository;
 import org.jboss.mx.loading.RepositoryClassLoader;




More information about the jboss-cvs-commits mailing list