[jboss-cvs] JBossAS SVN: r82112 - in projects/aop/trunk: asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Dec 8 09:49:04 EST 2008


Author: kabir.khan at jboss.com
Date: 2008-12-08 09:49:03 -0500 (Mon, 08 Dec 2008)
New Revision: 82112

Added:
   projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/SecurityActions.java
Modified:
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomain.java
   projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/URLClassLoaderIsLocalResourcePlugin.java
   projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolDomain.java
   projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java
   projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java
   projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
Log:
[JBAOP-666] Better checks of parent domain and comment out tests that are probably unrealistic

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomain.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomain.java	2008-12-08 14:49:00 UTC (rev 82111)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/ClassPoolDomain.java	2008-12-08 14:49:03 UTC (rev 82112)
@@ -218,20 +218,33 @@
       CtClass getParentCached(String classname);
    }
    
-   private class RootClassPoolDomainImpl implements ClassPoolDomainStrategy
+   protected class RootClassPoolDomainImpl implements ClassPoolDomainStrategy
    {
-      ClassPool defaultPool = ClassPool.getDefault();
+      ClassPool parentPool = null;
       
+      public RootClassPoolDomainImpl()
+      {
+         initialiseParentClassLoader();
+         if (parentPool == null)
+         {
+            throw new IllegalStateException("Null parent classpool");
+         }
+      }
+      public void initialiseParentClassLoader()
+      {
+         parentPool = ClassPool.getDefault();
+      }
+      
       public URL findParentResource(String classname)
       {
-         return defaultPool.find(classname);
+         return parentPool.find(classname);
       }
       
       public CtClass createParentCtClass(String classname, boolean useCache)
       {
          try
          {
-            return defaultPool.get(classname);
+            return parentPool.get(classname);
          }
          catch(NotFoundException ignore)
          {
@@ -243,7 +256,7 @@
       {
          try
          {
-            return defaultPool.get(classname);
+            return parentPool.get(classname);
          }
          catch (NotFoundException ignore)
          {

Modified: projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/URLClassLoaderIsLocalResourcePlugin.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/URLClassLoaderIsLocalResourcePlugin.java	2008-12-08 14:49:00 UTC (rev 82111)
+++ projects/aop/trunk/asintegration-core/src/main/org/jboss/aop/classpool/URLClassLoaderIsLocalResourcePlugin.java	2008-12-08 14:49:03 UTC (rev 82112)
@@ -63,6 +63,10 @@
             return true;
          }
       }
+      else
+      {
+         return myURL != null;
+      }
       
       return false;
    }

Modified: projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolDomain.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolDomain.java	2008-12-08 14:49:00 UTC (rev 82111)
+++ projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolDomain.java	2008-12-08 14:49:03 UTC (rev 82112)
@@ -21,7 +21,16 @@
 */ 
 package org.jboss.aop.classpool.jbosscl;
 
+import java.net.URL;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.NotFoundException;
+
+import org.jboss.aop.AspectManager;
 import org.jboss.aop.classpool.ClassPoolDomain;
+import org.jboss.classloader.spi.base.BaseClassLoader;
+import org.jboss.classloader.spi.base.BaseClassLoaderDomain;
 
 /**
  * 
@@ -35,4 +44,15 @@
       // FIXME JBossClClassPool constructor
       super(domainName, parent);
    }
+   
+   protected class RootClassPoolDomainImpl extends ClassPoolDomain.RootClassPoolDomainImpl
+   {
+      @Override
+      public void initialiseParentClassLoader()
+      {
+         ClassPool pool = AspectManager.instance().registerClassLoader(BaseClassLoaderDomain.class.getClassLoader());
+         ClassPool parentPool = ClassPool.getDefault();
+      }
+   }
+
 }

Added: projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/SecurityActions.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/SecurityActions.java	                        (rev 0)
+++ projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/SecurityActions.java	2008-12-08 14:49:03 UTC (rev 82112)
@@ -0,0 +1,70 @@
+/*
+* 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 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);
+      }
+   }
+}

Modified: projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java	2008-12-08 14:49:00 UTC (rev 82111)
+++ projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java	2008-12-08 14:49:03 UTC (rev 82112)
@@ -44,15 +44,6 @@
       return suite(ClassLoaderWithRepositorySanityTestCase.class);
    }
 
-//   public void testNewCreateClassLoader() throws Exception
-//   {
-//      System.out.println("-------> 2 " + helper);
-//      System.out.println("-------> 3 " + JBossClClassPoolTest.helper);
-//      ClassLoader cl = createClassLoader("A", true, JAR_A_1);
-//      Class<?> clazz = cl.loadClass(CLASS_A);
-//      assertSame(cl, clazz.getClassLoader());
-//   }
-   
    public void testGlobalScope() throws Exception
    {
       ClassLoader clA = null;
@@ -172,8 +163,8 @@
       {
          unregisterClassLoader(clA);
          unregisterClassLoader(clB);
-         unregisterDomain(getChildDomainForLoader(clA));
-         unregisterDomain(getChildDomainForLoader(clB));
+         unregisterDomain(clA);
+         unregisterDomain(clB);
       }
    }
    
@@ -202,7 +193,7 @@
       {
          unregisterClassLoader(clGlobal);
          unregisterClassLoader(clScoped);
-         unregisterDomain(getChildDomainForLoader(clScoped));
+         unregisterDomain(clScoped);
       }
    }
    
@@ -225,7 +216,7 @@
       {
          unregisterClassLoader(clGlobal);
          unregisterClassLoader(clScoped);
-         unregisterDomain(getChildDomainForLoader(clScoped));
+         unregisterDomain(clScoped);
       }
    }
    
@@ -249,7 +240,7 @@
       {
          unregisterClassLoader(clGlobal);
          unregisterClassLoader(clScoped);
-         unregisterDomain(getChildDomainForLoader(clScoped));
+         unregisterDomain(clScoped);
       }
    }
    
@@ -361,7 +352,7 @@
       {
          unregisterClassLoader(global);
          unregisterClassLoader(parent);
-         unregisterDomain(getChildDomainForLoader(global));
+         unregisterDomain(global);
       }
    }
 
@@ -390,7 +381,7 @@
          unregisterClassLoader(globalA);
          unregisterClassLoader(globalB);
          unregisterClassLoader(parent);
-         unregisterDomain(getChildDomainForLoader(globalA));
+         unregisterDomain(globalA);
       }
    }
 

Modified: projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java	2008-12-08 14:49:00 UTC (rev 82111)
+++ projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java	2008-12-08 14:49:03 UTC (rev 82112)
@@ -25,6 +25,7 @@
 
 import javassist.ClassPool;
 import javassist.CtClass;
+import javassist.NotFoundException;
 import junit.framework.Test;
 
 /**
@@ -34,7 +35,8 @@
  */
 public class ClassPoolWithRepositoryTestCase extends JBossClClassPoolTest
 {
-
+   final static String STRING = String.class.getName();
+   
    public ClassPoolWithRepositoryTestCase(String name)
    {
       super(name);
@@ -65,6 +67,8 @@
             assertSame(aFromA, aFromB);
             assertSame(poolA, aFromA.getClassPool());
             assertSame(poolB, bFromB.getClassPool());
+
+            checkCanLoadString(poolA, poolB);
          }
          finally
          {
@@ -116,6 +120,9 @@
          
          assertCannotLoadCtClass(poolA, CLASS_C);
          assertCannotLoadCtClass(poolB, CLASS_C);
+
+         checkCanLoadString(poolA, poolB);
+         checkCanLoadString(poolB, poolC);
       }
       finally
       {
@@ -126,6 +133,264 @@
       }
    }
    
+   public void testSiblingDomains() throws Exception
+   {
+      ClassPool poolA = null;
+      ClassPool poolB = null;
+      ClassLoaderDomain domainA = null;
+      ClassLoaderDomain domainB = null;
+      try
+      {
+         poolA = createChildDomainParentFirstClassPool("A", "ChildA", true, JAR_A_1);
+         poolB = createChildDomainParentLastClassPool("B", "ChildB", true, JAR_B_1);
 
- 
+         domainA = getChildDomainForPool(poolA);
+         assertNotNull(domainA);
+         assertSame(getSystem().getDefaultDomain(), domainA.getParent());
+         domainB = getChildDomainForPool(poolB);
+         assertNotNull(domainB);
+         assertSame(getSystem().getDefaultDomain(), domainB.getParent());
+         assertNotSame(domainA, domainB);
+
+         CtClass clazzA = poolA.get(CLASS_A);
+         assertSame(poolA, clazzA.getClassPool());
+         CtClass clazzB = poolB.get(CLASS_B);
+         assertSame(poolB, clazzB.getClassPool());
+         assertCannotLoadCtClass(poolA, CLASS_B);
+         assertCannotLoadCtClass(poolB, CLASS_A);
+
+         checkCanLoadString(poolA, poolB);
+      }
+      finally
+      {
+         unregisterClassPool(poolA);
+         unregisterClassPool(poolB);
+         unregisterDomain(poolA);
+         unregisterDomain(poolB);
+      }
+   }
+   
+   public void testChildWithNewClassesInParent() throws Exception
+   {
+      ClassPool globalPool = null;
+      ClassPool scopedPool = null;
+      try
+      {
+         scopedPool = createChildDomainParentFirstClassPool("SCOPED", "SCOPED", true, JAR_B_1);
+         assertCannotLoadCtClass(scopedPool, CLASS_A);
+         
+         globalPool = createClassPool("GLOBAL", true, JAR_A_1);
+
+         CtClass aFromChild = scopedPool.get(CLASS_A);
+         assertNotNull(aFromChild);
+         CtClass aFromParent = globalPool.get(CLASS_A);
+         assertNotNull(aFromParent);
+         assertSame(aFromChild, aFromParent);
+         assertSame(globalPool, aFromParent.getClassPool());
+      }
+      finally
+      {
+         unregisterClassPool(globalPool);
+         unregisterClassPool(scopedPool);
+         unregisterDomain(scopedPool);
+      }
+   }
+   
+   public void testChildOverrideWithParentDelegation() throws Exception
+   {
+      ClassPool globalPool = null;
+      ClassPool scopedPool = null;
+      try
+      {
+         globalPool = createClassPool("GLOBAL", true, JAR_A_1);
+         scopedPool = createChildDomainParentFirstClassPool("SCOPED", "SCOPED", true, JAR_B_1);
+         CtClass aFromParent = globalPool.get(CLASS_A);
+         assertNotNull(aFromParent);
+         CtClass aFromChild = scopedPool.get(CLASS_A);
+         assertNotNull(aFromChild);
+         assertSame(aFromParent, aFromChild);
+         assertSame(globalPool, aFromParent.getClassPool());
+      }
+      finally
+      {
+         unregisterClassPool(globalPool);
+         unregisterClassPool(scopedPool);
+         unregisterDomain(scopedPool);
+      }
+   }
+   
+   public void testChildOverrideWithNoParentDelegation() throws Exception
+   {
+      ClassPool globalPool = null;
+      ClassPool scopedPool = null;
+      try
+      {
+         globalPool = createClassPool("GLOBAL", true, JAR_A_1);
+         scopedPool = createChildDomainParentLastClassPool("CHILD", "CHILD", true, JAR_A_1);
+         CtClass aFromParent = globalPool.get(CLASS_A);
+         assertNotNull(aFromParent);
+         CtClass aFromChild = scopedPool.get(CLASS_A);
+         assertNotNull(aFromChild);
+         assertNotSame(aFromParent, aFromChild);
+         assertSame(globalPool, aFromParent.getClassPool());
+         assertSame(scopedPool, aFromChild.getClassPool());
+      }
+      finally
+      {
+         unregisterClassPool(globalPool);
+         unregisterClassPool(scopedPool);
+         unregisterDomain(scopedPool);
+      }
+   }
+   
+   public void testURLChildOfGlobalUcl() throws Exception
+   {
+      ClassPool global = null;
+      ClassPool childA = null;
+      ClassPool childB = null;
+      try
+      {
+         global = createClassPool("GLOBAL", true, JAR_A_1);
+         childA = createChildURLClassPool(global, JAR_B_1);
+         
+         CtClass aFromA = childA.get(CLASS_A);
+         assertSame(global, aFromA.getClassPool());
+         CtClass bFromA = childA.get(CLASS_B);
+         assertSame(childA, bFromA.getClassPool());
+         
+         childB = createChildURLClassPool(global, JAR_A_2);
+         CtClass aFromB = childB.get(CLASS_A);
+         assertSame(global, aFromB.getClassPool());
+      }
+      finally
+      {
+         unregisterClassPool(global);
+         unregisterClassPool(childA);
+         unregisterClassPool(childB);
+      }
+   }
+   
+   public void testUndeploySibling() throws Exception
+   {
+      ClassPool poolA = null;
+      ClassPool poolB = null;
+      try
+      {
+         try
+         {
+            poolA = createClassPool("A", true, JAR_A_1);
+            assertCannotLoadCtClass(poolA, CLASS_B);
+            
+            poolB = createClassPool("B", true, JAR_B_1);
+            CtClass bFromA = poolA.get(CLASS_B);
+            assertSame(poolB, bFromA.getClassPool());
+         }
+         finally
+         {
+            unregisterClassPool(poolB);
+         }
+         assertCannotLoadCtClass(poolA, CLASS_B);
+      }
+      finally
+      {
+         unregisterClassPool(poolA);
+      }
+   }
+
+   
+   public void testUndeployParentDomainClassLoader() throws Exception
+   {
+      ClassPool globalA = null;
+      ClassPool globalB = null;
+      ClassPool child = null;
+      try
+      {
+         try
+         {
+            globalA = createClassPool("A", true, JAR_A_1);
+            assertCannotLoadCtClass(globalA, CLASS_B);
+            
+            child = createChildDomainParentLastClassPool("C", "C", true, JAR_C_1);
+            assertCannotLoadCtClass(child, CLASS_B);
+            
+            globalB = createClassPool("B", true, JAR_B_1);
+            CtClass bFromChild = child.get(CLASS_B);
+            CtClass bFromA = globalA.get(CLASS_B);
+            assertSame(globalB, bFromA.getClassPool());
+            assertSame(bFromA, bFromChild);
+         }
+         finally
+         {
+            unregisterClassPool(globalB);
+         }
+         assertCannotLoadCtClass(child, CLASS_B);
+      }
+      finally
+      {
+         unregisterClassPool(globalA);
+         unregisterClassPool(child);
+         unregisterDomain(child);
+      }
+   }
+   
+/* 
+   The folllowing two tests are probably not very realistic http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4195022#4195022
+   public void testClassLoaderlWithParentClassLoader() throws Exception
+   {
+      ClassPool parent = createChildURLClassPool(null, JAR_B_1);
+      ClassPool global = null;
+      try
+      {
+         global = createChildDomainParentFirstClassPool("A", "A", true, parent, JAR_A_1);
+         CtClass aFromGlobal = global.get(CLASS_A);
+         assertSame(global, aFromGlobal.getClassPool());
+         CtClass bFromGlobal = global.get(CLASS_B);
+         assertSame(parent, bFromGlobal.getClassPool());
+         CtClass bFromParent = parent.get(CLASS_B);
+         assertSame(bFromGlobal, bFromParent);
+      }
+      finally
+      {
+         unregisterClassPool(global);
+         unregisterClassPool(parent);
+         unregisterDomain(global);
+      }
+   }
+
+   
+   public void testClassLoaderWithParentClassLoaderAndSameClassInDomain() throws Exception
+   {
+      ClassPool parent = createChildURLClassPool(null, JAR_B_1);
+      ClassPool globalA = null;
+      ClassPool globalB = null;
+      try
+      {
+         final String domain = "CHILD";
+         globalA = createChildDomainParentFirstClassPool("A", domain, true, parent, JAR_A_1);
+         CtClass aFromGlobal = globalA.get(CLASS_A);
+         assertSame(globalA, aFromGlobal.getClassPool());
+
+         globalB = createChildDomainParentFirstClassPool("B", domain, true, parent, JAR_B_1);
+         CtClass bFromGlobalA = globalA.get(CLASS_B);
+         assertSame(globalB, bFromGlobalA.getClassPool());
+         CtClass bFromParent = parent.get(CLASS_B);
+         assertSame(parent, bFromParent.getClassPool());
+         assertNotSame(bFromGlobalA, bFromParent);
+      }
+      finally
+      {
+         unregisterClassPool(globalA);
+         unregisterClassPool(globalB);
+         unregisterClassPool(parent);
+         unregisterDomain(globalA);
+      }
+   }
+*/
+   private void checkCanLoadString(ClassPool poolA, ClassPool poolB) throws NotFoundException
+   {
+      CtClass strA = poolA.getCtClass(STRING);
+      CtClass strB = poolB.getCtClass(STRING);
+      assertSame(strA, strB);
+      assertSame(ClassPool.getDefault(), strA.getClassPool());
+   }
 }

Modified: projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java	2008-12-08 14:49:00 UTC (rev 82111)
+++ projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java	2008-12-08 14:49:03 UTC (rev 82112)
@@ -249,7 +249,7 @@
       return getChildDomainForLoader(pool.getClassLoader());
    }
    
-   public void unregisterDomain(ClassLoaderDomain domain)
+   protected void unregisterDomain(ClassLoaderDomain domain)
    {
       if (domain != null)
       {
@@ -261,7 +261,25 @@
          system.unregisterDomain(domain);
       }
    }
+   
+   protected void unregisterDomain(ClassLoader loader)
+   {
+      if (loader != null)
+      {
+         ClassLoaderDomain domain = getChildDomainForLoader(loader);
+         unregisterDomain(domain);
+      }
+   }
 
+   protected void unregisterDomain(ClassPool pool)
+   {
+      if (pool != null)
+      {
+         ClassLoaderDomain domain = getChildDomainForPool(pool);
+         unregisterDomain(domain);
+      }
+   }
+
    protected void assertCannotLoadClass(ClassLoader cl, String className)
    {
       try
@@ -313,12 +331,29 @@
       return AspectManager.instance().registerClassLoader(loader);
    }
    
+   protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
+   {
+      ClassLoader loader = createChildDomainParentFirstClassLoader(name, domainName, importAll, parent.getClassLoader(), urls);
+      return AspectManager.instance().registerClassLoader(loader);
+   }
+   
    protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentLastClassLoader(name, domainName, importAll, urls);
       return AspectManager.instance().registerClassLoader(loader);
    }
 
+   protected ClassPool createChildURLClassPool(ClassPool parent, URL url)
+   {
+      ClassLoader parentLoader = null;
+      if (parent != null)
+      {
+         parentLoader = parent.getClassLoader();
+      }
+      ClassLoader loader = createChildURLClassLoader(parentLoader, url);
+      return AspectManager.instance().registerClassLoader(loader);
+   }
+   
    protected void registerModule(ClassLoader loader, ClassLoaderPolicyModule module)
    {
       if (system != domainRegistry.getSystem())
@@ -392,7 +427,7 @@
     * 
     * @param name the domain name
     */
-   public void unregisterDomain(String name)
+   protected void unregisterDomain(String name)
    {
       if (name != null)
       {
@@ -401,4 +436,13 @@
       }
    }
    
+   /**
+    * The test classes should not be on the launcher classpath
+    */
+   public void testClassesNotOnClasspath()
+   {
+      assertCannotLoadClass(this.getClass().getClassLoader(), CLASS_A);
+      assertCannotLoadClass(this.getClass().getClassLoader(), CLASS_B);
+      assertCannotLoadClass(this.getClass().getClassLoader(), CLASS_C);
+   }
 }




More information about the jboss-cvs-commits mailing list