[jboss-cvs] JBossAS SVN: r83778 - in projects/aop/trunk: asintegration-jmx and 17 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 2 09:22:39 EST 2009


Author: kabir.khan at jboss.com
Date: 2009-02-02 09:22:39 -0500 (Mon, 02 Feb 2009)
New Revision: 83778

Added:
   projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractJBossDelegatingClassPoolFactory.java
   projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/TempJBossDelegatingClassPool.java
   projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/classpool/ucl/JBossUclDelegatingClassPoolFactory.java
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/a/
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/b/
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/c/
   projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/a/
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/b/
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/c/
Removed:
   projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/classpool/ucl/JBossUclClassPoolFactory.java
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/a/
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/b/
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/c/
   projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/a/
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/b/
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/c/
Modified:
   projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractJBossClassPoolFactory.java
   projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/BaseClassPool.java
   projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/DelegatingClassPool.java
   projects/aop/trunk/asintegration-jmx/.classpath
   projects/aop/trunk/asintegration-jmx/pom.xml
   projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/asintegration/jboss4/JBoss4Integration.java
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/a/A.java
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/b/B.java
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/c/C.java
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java
   projects/aop/trunk/asintegration-mc/.classpath
   projects/aop/trunk/asintegration-mc/pom.xml
   projects/aop/trunk/asintegration-mc/src/resources/META-INF/aop.xml
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/a/A.java
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/b/B.java
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/c/C.java
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
Log:
[JBAOP-666]
Move test classes for loading into excluded package for easier exclusion in IDE
Create new version of TempClassPool for the delegating pools since that was causing errors with replacing calls to fields/constuctors to the wrapper
s in AS in the child loader when the parent loader had already loaded the classes. Update the JBoss Delegating classpools to use this temp classpool
. Add tests reproducing this scenario in the standalone environment.



Modified: projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractJBossClassPoolFactory.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractJBossClassPoolFactory.java	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractJBossClassPoolFactory.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -25,6 +25,7 @@
 
 import javassist.ClassPool;
 import javassist.scopedpool.ScopedClassPool;
+import javassist.scopedpool.ScopedClassPoolFactory;
 import javassist.scopedpool.ScopedClassPoolRepository;
 
 /**
@@ -32,7 +33,7 @@
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public abstract class AbstractJBossClassPoolFactory
+public abstract class AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
 {
    protected final Logger log = Logger.getLogger(this.getClass().getName());
    

Added: projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractJBossDelegatingClassPoolFactory.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractJBossDelegatingClassPoolFactory.java	                        (rev 0)
+++ projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractJBossDelegatingClassPoolFactory.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -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.aop.classpool;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPool;
+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
+{
+   public ScopedClassPool create(ClassPool src, ScopedClassPoolRepository repository)
+   {
+      return new TempJBossDelegatingClassPool(src, repository);
+   }
+}

Modified: projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/BaseClassPool.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/BaseClassPool.java	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/BaseClassPool.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -118,6 +118,12 @@
    }
    
    @Override
+   public CtClass get0(String classname, boolean useCache) throws NotFoundException
+   {
+      return super.get0(classname, useCache);
+   }
+   
+   @Override
    public void close()
    {
       if (logger.isTraceEnabled()) logger.trace(this + " closing");

Modified: projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/DelegatingClassPool.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/DelegatingClassPool.java	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/DelegatingClassPool.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -78,7 +78,7 @@
     * parentFirst functionality
     */
    @Override
-   protected synchronized CtClass get0(String classname, boolean useCache) throws NotFoundException
+   public synchronized CtClass get0(String classname, boolean useCache) throws NotFoundException
    {
       if (isGeneratedClass(classname))
       {

Added: projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/TempJBossDelegatingClassPool.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/TempJBossDelegatingClassPool.java	                        (rev 0)
+++ projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/TempJBossDelegatingClassPool.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -0,0 +1,68 @@
+/*
+* 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.aop.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 AOPClassPool
+{
+   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;
+   }
+}

Modified: projects/aop/trunk/asintegration-jmx/.classpath
===================================================================
--- projects/aop/trunk/asintegration-jmx/.classpath	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-jmx/.classpath	2009-02-02 14:22:39 UTC (rev 83778)
@@ -2,7 +2,7 @@
 <classpath>
 	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
-	<classpathentry excluding="org/jboss/test/aop/classpool/ucl/support/a/|org/jboss/test/aop/classpool/ucl/support/b/|org/jboss/test/aop/classpool/ucl/support/c/" kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="org/jboss/test/aop/classpool/ucl/support/excluded/" kind="src" output="target/test-classes" path="src/test/java"/>
 	<classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.0.2/activation-1.0.2.jar"/>

Modified: projects/aop/trunk/asintegration-jmx/pom.xml
===================================================================
--- projects/aop/trunk/asintegration-jmx/pom.xml	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-jmx/pom.xml	2009-02-02 14:22:39 UTC (rev 83778)
@@ -35,9 +35,7 @@
         </executions>
         <configuration>
           <excludes>
-            <exclude>org/jboss/test/aop/classpool/ucl/support/a/A.class</exclude>
-            <exclude>org/jboss/test/aop/classpool/ucl/support/b/B.class</exclude>
-            <exclude>org/jboss/test/aop/classpool/ucl/support/c/C.class</exclude>
+            <exclude>org/jboss/test/aop/classpool/ucl/support/excluded/**</exclude>
           </excludes>
         </configuration>
       </plugin>
@@ -80,25 +78,23 @@
                 <property name="test.jar.suffix" value="-test-classpool-"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}a1.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/ucl/support/a/*.class"/>
+                  includes="org/jboss/test/aop/classpool/ucl/support/excluded/a/*.class"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}a2.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/ucl/support/a/*.class"/>
+                  includes="org/jboss/test/aop/classpool/ucl/support/excluded/a/*.class"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}b1.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/ucl/support/b/*.class"/>
+                  includes="org/jboss/test/aop/classpool/ucl/support/excluded/b/*.class"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}b2.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/ucl/support/b/*.class"/>
+                  includes="org/jboss/test/aop/classpool/ucl/support/excluded/b/*.class"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}c1.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/ucl/support/c/*.class"/>
+                  includes="org/jboss/test/aop/classpool/ucl/support/excluded/c/*.class"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}c2.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/ucl/support/c/*.class"/>
-               <delete dir="${project.build.testOutputDirectory}/org/jboss/test/aop/classpool/ucl/support/a"/>
-               <delete dir="${project.build.testOutputDirectory}/org/jboss/test/aop/classpool/ucl/support/b"/>
-               <delete dir="${project.build.testOutputDirectory}/org/jboss/test/aop/classpool/ucl/support/c"/>
+                  includes="org/jboss/test/aop/classpool/ucl/support/excluded/c/*.class"/>
+               <delete dir="${project.build.testOutputDirectory}/org/jboss/test/aop/classpool/ucl/support/excluded"/>
               </tasks>
             </configuration>
           </execution>

Modified: projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/asintegration/jboss4/JBoss4Integration.java
===================================================================
--- projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/asintegration/jboss4/JBoss4Integration.java	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/asintegration/jboss4/JBoss4Integration.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -41,7 +41,7 @@
 import org.jboss.aop.AspectManager;
 import org.jboss.aop.asintegration.JBossIntegration;
 import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
-import org.jboss.aop.classpool.ucl.JBossUclClassPoolFactory;
+import org.jboss.aop.classpool.ucl.JBossUclDelegatingClassPoolFactory;
 import org.jboss.aop.domain.ScopedRepositoryClassLoaderDomain;
 import org.jboss.logging.Logger;
 import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
@@ -128,9 +128,9 @@
       {
          delegateClassPoolFactory = new JBossClassPoolFactory(tmpDir);
       }
-      else if (classname.equals(JBossUclClassPoolFactory.class.getName()))
+      else if (classname.equals(JBossUclDelegatingClassPoolFactory.class.getName()))
       {
-         delegateClassPoolFactory = new JBossUclClassPoolFactory(tmpDir);
+         delegateClassPoolFactory = new JBossUclDelegatingClassPoolFactory(tmpDir);
       }
       else
       {

Deleted: projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/classpool/ucl/JBossUclClassPoolFactory.java
===================================================================
--- projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/classpool/ucl/JBossUclClassPoolFactory.java	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/classpool/ucl/JBossUclClassPoolFactory.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -1,165 +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.aop.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.aop.classpool.AbstractJBossClassPoolFactory;
-import org.jboss.aop.classpool.BaseClassPoolDomain;
-import org.jboss.aop.classpool.ClassPoolDomain;
-import org.jboss.aop.classpool.ClassPoolDomainRegistry;
-import org.jboss.aop.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 JBossUclClassPoolFactory extends AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
-{
-   private ClassPoolDomain mainDomain;
-   protected File tmpClassesDir;
-
-   public JBossUclClassPoolFactory(File tmpClassesDir) throws IOException
-   {
-      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/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/classpool/ucl/JBossUclDelegatingClassPoolFactory.java (from rev 83556, projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/classpool/ucl/JBossUclClassPoolFactory.java)
===================================================================
--- projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/classpool/ucl/JBossUclDelegatingClassPoolFactory.java	                        (rev 0)
+++ projects/aop/trunk/asintegration-jmx/src/main/java/org/jboss/aop/classpool/ucl/JBossUclDelegatingClassPoolFactory.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -0,0 +1,166 @@
+/*
+* 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.aop.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.aop.classpool.AbstractJBossClassPoolFactory;
+import org.jboss.aop.classpool.AbstractJBossDelegatingClassPoolFactory;
+import org.jboss.aop.classpool.BaseClassPoolDomain;
+import org.jboss.aop.classpool.ClassPoolDomain;
+import org.jboss.aop.classpool.ClassPoolDomainRegistry;
+import org.jboss.aop.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
+   {
+      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/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/a (from rev 83556, projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/a)

Modified: projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/a/A.java
===================================================================
--- projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/a/A.java	2009-01-28 14:48:39 UTC (rev 83556)
+++ projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/a/A.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -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.test.aop.classpool.ucl.support.a;
+package org.jboss.test.aop.classpool.ucl.support.excluded.a;
 
 /**
  * 

Copied: projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/b (from rev 83556, projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/b)

Modified: projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/b/B.java
===================================================================
--- projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/b/B.java	2009-01-28 14:48:39 UTC (rev 83556)
+++ projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/b/B.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -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.test.aop.classpool.ucl.support.b;
+package org.jboss.test.aop.classpool.ucl.support.excluded.b;
 
 /**
  * 

Copied: projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/c (from rev 83556, projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/c)

Modified: projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/c/C.java
===================================================================
--- projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/c/C.java	2009-01-28 14:48:39 UTC (rev 83556)
+++ projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/support/excluded/c/C.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -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.test.aop.classpool.ucl.support.c;
+package org.jboss.test.aop.classpool.ucl.support.excluded.c;
 
 /**
  * 

Modified: projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java
===================================================================
--- projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -35,7 +35,7 @@
 import javax.management.ObjectName;
 
 import org.jboss.aop.AspectManager;
-import org.jboss.aop.classpool.ucl.JBossUclClassPoolFactory;
+import org.jboss.aop.classpool.ucl.JBossUclDelegatingClassPoolFactory;
 import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
 import org.jboss.mx.loading.LoaderRepository;
 import org.jboss.mx.loading.RepositoryClassLoader;
@@ -59,9 +59,9 @@
    public final static URL JAR_C_1 = getURLRelativeToProjectRoot("target/jboss-aop-asintegration-jmx-test-classpool-c1.jar");
    public final static URL JAR_C_2 = getURLRelativeToProjectRoot("target/jboss-aop-asintegration-jmx-test-classpool-c2.jar");
 
-   public final static String CLASS_A = "org.jboss.test.aop.classpool.ucl.support.a.A";
-   public final static String CLASS_B = "org.jboss.test.aop.classpool.ucl.support.b.B";
-   public final static String CLASS_C = "org.jboss.test.aop.classpool.ucl.support.c.C";
+   public final static String CLASS_A = "org.jboss.test.aop.classpool.ucl.support.excluded.a.A";
+   public final static String CLASS_B = "org.jboss.test.aop.classpool.ucl.support.excluded.b.B";
+   public final static String CLASS_C = "org.jboss.test.aop.classpool.ucl.support.excluded.c.C";
 
    private MBeanServer server; 
    private LoaderRepository globalRepository;
@@ -75,7 +75,7 @@
       try
       {
          MAIN_LOADER_REPOSITORY_OBJECT_NAME = new ObjectName("JMImplementation:name=Default,service=LoaderRepository");
-         AspectManager.setClassPoolFactory(new JBossUclClassPoolFactory(new File(".")));
+         AspectManager.setClassPoolFactory(new JBossUclDelegatingClassPoolFactory(new File(".")));
       }
       catch (Exception e)
       {

Modified: projects/aop/trunk/asintegration-mc/.classpath
===================================================================
--- projects/aop/trunk/asintegration-mc/.classpath	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-mc/.classpath	2009-02-02 14:22:39 UTC (rev 83778)
@@ -2,7 +2,7 @@
 <classpath>
 	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
-	<classpathentry excluding="org/jboss/test/aop/classpool/jbosscl/support/a/|org/jboss/test/aop/classpool/jbosscl/support/b/|org/jboss/test/aop/classpool/jbosscl/support/c/" kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="org/jboss/test/aop/classpool/jbosscl/support/excluded/" kind="src" output="target/test-classes" path="src/test/java"/>
 	<classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.0.2/activation-1.0.2.jar"/>

Modified: projects/aop/trunk/asintegration-mc/pom.xml
===================================================================
--- projects/aop/trunk/asintegration-mc/pom.xml	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-mc/pom.xml	2009-02-02 14:22:39 UTC (rev 83778)
@@ -36,9 +36,7 @@
         <configuration>
           <excludes>
             <exclude>org/jboss/aop/junit/**</exclude>
-            <exclude>org/jboss/test/aop/classpool/jbosscl/support/a/A.class</exclude>
-            <exclude>org/jboss/test/aop/classpool/jbosscl/support/b/B.class</exclude>
-            <exclude>org/jboss/test/aop/classpool/jbosscl/support/c/C.class</exclude>
+            <exclude>org/jboss/test/aop/classpool/jbosscl/support/excluded/**</exclude>
           </excludes>
         </configuration>
       </plugin>
@@ -96,25 +94,35 @@
                 <property name="test.jar.suffix" value="-test-classpool-"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}a1.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/jbosscl/support/a/*.class"/>
+                  includes="org/jboss/test/aop/classpool/jbosscl/support/excluded/a/*.class"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}a2.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/jbosscl/support/a/*.class"/>
+                  includes="org/jboss/test/aop/classpool/jbosscl/support/excluded/a/*.class"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}b1.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/jbosscl/support/b/*.class"/>
+                  includes="org/jboss/test/aop/classpool/jbosscl/support/excluded/b/*.class"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}b2.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/jbosscl/support/b/*.class"/>
+                  includes="org/jboss/test/aop/classpool/jbosscl/support/excluded/b/*.class"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}c1.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/jbosscl/support/c/*.class"/>
+                  includes="org/jboss/test/aop/classpool/jbosscl/support/excluded/c/*.class"/>
                 <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}c2.jar"
                   basedir="${project.build.testOutputDirectory}" 
-                  includes="org/jboss/test/aop/classpool/jbosscl/support/c/*.class"/>
-               <delete dir="${project.build.testOutputDirectory}/org/jboss/test/aop/classpool/jbosscl/support/a"/>
-               <delete dir="${project.build.testOutputDirectory}/org/jboss/test/aop/classpool/jbosscl/support/b"/>
-               <delete dir="${project.build.testOutputDirectory}/org/jboss/test/aop/classpool/jbosscl/support/c"/>
+                  includes="org/jboss/test/aop/classpool/jbosscl/support/excluded/c/*.class"/>
+                <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}replacereferences-parent.jar">
+                  <fileset dir="${project.build.testOutputDirectory}">
+                     <include name="org/jboss/test/aop/classpool/jbosscl/support/excluded/replacereferences/**"/>
+                     <exclude name="org/jboss/test/aop/classpool/jbosscl/support/excluded/replacereferences/child/*.class"/>
+                  </fileset>
+                </jar>
+                <jar destfile="${project.build.directory}/${artifactId}${test.jar.suffix}replacereferences-child.jar">
+                  <fileset dir="${project.build.testOutputDirectory}">
+                     <include name="org/jboss/test/aop/classpool/jbosscl/support/excluded/replacereferences/**"/>
+                     <exclude name="org/jboss/test/aop/classpool/jbosscl/support/excluded/replacereferences/parent/ParentCaller.class"/>
+                  </fileset>
+                </jar>
+                <delete dir="${project.build.testOutputDirectory}/org/jboss/test/aop/classpool/jbosscl/support/excluded"/>
               </tasks>
             </configuration>
           </execution>

Deleted: projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -1,125 +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.aop.classpool.jbosscl;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPool;
-import javassist.scopedpool.ScopedClassPoolFactory;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.aop.AspectManager;
-import org.jboss.aop.asintegration.jboss5.DomainRegistry;
-import org.jboss.aop.classpool.AbstractJBossClassPoolFactory;
-import org.jboss.aop.classpool.ClassPoolDomain;
-import org.jboss.aop.classpool.ClassPoolDomainRegistry;
-import org.jboss.aop.classpool.ClassPoolToClassPoolDomainAdapter;
-import org.jboss.aop.classpool.NonDelegatingClassPool;
-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;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class JBossClClassPoolFactory extends AbstractJBossClassPoolFactory implements ScopedClassPoolFactory
-{
-   private DomainRegistry registry;
-   
-   public JBossClClassPoolFactory(DomainRegistry registry)
-   {
-      this.registry = registry;
-   }
-   
-   public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
-   {
-      ClassPool parent = getCreateParentClassPools(cl, src, repository);
-
-      if (cl instanceof RealClassLoader)
-      {
-         Module module = registry.getModule(cl);
-         ClassPoolDomain domain = getDomain(module, cl);  
-         return new JBossClDelegatingClassPool(domain, cl, parent, repository, module);
-      }
-      
-      return new NonDelegatingClassPool(cl, parent, repository, true);
-   }
-
-   private 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 = sys.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 = AspectManager.getTopLevelAspectManager().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;
-   }
-}

Copied: projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java (from rev 83695, projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java)
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java	                        (rev 0)
+++ projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -0,0 +1,126 @@
+/*
+* 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.aop.classpool.jbosscl;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPool;
+import javassist.scopedpool.ScopedClassPoolFactory;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.aop.AspectManager;
+import org.jboss.aop.asintegration.jboss5.DomainRegistry;
+import org.jboss.aop.classpool.AbstractJBossClassPoolFactory;
+import org.jboss.aop.classpool.AbstractJBossDelegatingClassPoolFactory;
+import org.jboss.aop.classpool.ClassPoolDomain;
+import org.jboss.aop.classpool.ClassPoolDomainRegistry;
+import org.jboss.aop.classpool.ClassPoolToClassPoolDomainAdapter;
+import org.jboss.aop.classpool.NonDelegatingClassPool;
+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;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class JBossClDelegatingClassPoolFactory extends AbstractJBossDelegatingClassPoolFactory implements ScopedClassPoolFactory
+{
+   private DomainRegistry registry;
+   
+   public JBossClDelegatingClassPoolFactory(DomainRegistry registry)
+   {
+      this.registry = registry;
+   }
+   
+   public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
+   {
+      ClassPool parent = getCreateParentClassPools(cl, src, repository);
+
+      if (cl instanceof RealClassLoader)
+      {
+         Module module = registry.getModule(cl);
+         ClassPoolDomain domain = getDomain(module, cl);  
+         return new JBossClDelegatingClassPool(domain, cl, parent, repository, module);
+      }
+      
+      return new NonDelegatingClassPool(cl, parent, repository, true);
+   }
+
+   private 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 = sys.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 = AspectManager.getTopLevelAspectManager().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;
+   }
+}

Modified: projects/aop/trunk/asintegration-mc/src/resources/META-INF/aop.xml
===================================================================
--- projects/aop/trunk/asintegration-mc/src/resources/META-INF/aop.xml	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-mc/src/resources/META-INF/aop.xml	2009-02-02 14:22:39 UTC (rev 83778)
@@ -17,7 +17,7 @@
    <!-- Integration -->
    <bean name="AOPClassLoaderScopingPolicy" class="org.jboss.aop.asintegration.jboss5.VFSClassLoaderScopingPolicy"/>
    
-   <bean name="AOPClassPoolFactory" class="org.jboss.aop.classpool.jbosscl.JBossClClassPoolFactory">
+   <bean name="AOPClassPoolFactory" class="org.jboss.aop.classpool.jbosscl.JBossClDelegatingClassPoolFactory">
       <constructor><parameter><inject bean="AOPClassLoaderScopingPolicy" property="registry"/></parameter></constructor>
    </bean>
 

Copied: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/a (from rev 83556, projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/a)

Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/a/A.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/a/A.java	2009-01-28 14:48:39 UTC (rev 83556)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/a/A.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -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.test.aop.classpool.jbosscl.support.a;
+package org.jboss.test.aop.classpool.jbosscl.support.excluded.a;
 
 /**
  * 

Copied: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/b (from rev 83556, projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/b)

Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/b/B.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/b/B.java	2009-01-28 14:48:39 UTC (rev 83556)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/b/B.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -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.test.aop.classpool.jbosscl.support.b;
+package org.jboss.test.aop.classpool.jbosscl.support.excluded.b;
 
 /**
  * 

Copied: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/c (from rev 83556, projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/c)

Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/c/C.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/c/C.java	2009-01-28 14:48:39 UTC (rev 83556)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/excluded/c/C.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -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.test.aop.classpool.jbosscl.support.c;
+package org.jboss.test.aop.classpool.jbosscl.support.excluded.c;
 
 /**
  * 

Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -49,6 +49,7 @@
       suite.addTest(ClassPoolWithUsesPackageTestCase.suite());
       suite.addTest(ClassPoolWithHierarchicalDomainTestCase.suite());
       suite.addTest(ClassPoolWithHierarchicalParentLoaderTestCase.suite());
+      suite.addTest(ClassPoolWithReplaceReferencesTestCase.suite());
       return suite;
    }
 

Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-02-02 13:25:09 UTC (rev 83777)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-02-02 14:22:39 UTC (rev 83778)
@@ -37,7 +37,7 @@
 
 import org.jboss.aop.AspectManager;
 import org.jboss.aop.asintegration.jboss5.VFSClassLoaderDomainRegistry;
-import org.jboss.aop.classpool.jbosscl.JBossClClassPoolFactory;
+import org.jboss.aop.classpool.jbosscl.JBossClDelegatingClassPoolFactory;
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
 import org.jboss.classloader.plugins.filter.PatternClassFilter;
 import org.jboss.classloader.spi.ClassLoaderDomain;
@@ -73,7 +73,7 @@
    public final static URL JAR_C_1 = getURLRelativeToProjectRoot("target/jboss-aop-asintegration-mc-test-classpool-c1.jar");
    public final static URL JAR_C_2 = getURLRelativeToProjectRoot("target/jboss-aop-asintegration-mc-test-classpool-c2.jar");
 
-   public static final String PACKAGE_ROOT = "org.jboss.test.aop.classpool.jbosscl.support";
+   public static final String PACKAGE_ROOT = "org.jboss.test.aop.classpool.jbosscl.support.excluded";
    public static final String PACKAGE_A = PACKAGE_ROOT + ".a";
    public static final String PACKAGE_B = PACKAGE_ROOT + ".b";
    public static final String PACKAGE_C = PACKAGE_ROOT + ".c";
@@ -100,7 +100,7 @@
    {
       domainRegistry = new VFSClassLoaderDomainRegistry();
       
-      AspectManager.setClassPoolFactory(new JBossClClassPoolFactory(domainRegistry));
+      AspectManager.setClassPoolFactory(new JBossClDelegatingClassPoolFactory(domainRegistry));
       VFS.init();
    }
 
@@ -187,8 +187,8 @@
    protected void setUp() throws Exception
    {
       super.setUp();
-      enableTrace("org.jboss.aop.classpool");
-      enableTrace("org.jboss.aop.classpool.jbosscl");
+//      enableTrace("org.jboss.aop.classpool");
+//      enableTrace("org.jboss.aop.classpool.jbosscl");
       deploy("/org/jboss/test/aop/classpool/jbosscl/Common.xml");
    }
 




More information about the jboss-cvs-commits mailing list