[jboss-cvs] JBossAS SVN: r80661 - in projects/aop/trunk/asintegration-mc/src: tests/org/jboss/test/aop/classpool/jbosscl/test and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 7 09:47:04 EST 2008


Author: kabir.khan at jboss.com
Date: 2008-11-07 09:47:04 -0500 (Fri, 07 Nov 2008)
New Revision: 80661

Added:
   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/UclClassPoolTestSuite.java
Modified:
   projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java
   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/JBossClClassPoolTestDelegate.java
Log:
[JBAOP-666] Make a start on the classpool tests

Modified: projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java	2008-11-07 14:34:22 UTC (rev 80660)
+++ projects/aop/trunk/asintegration-mc/src/main/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java	2008-11-07 14:47:04 UTC (rev 80661)
@@ -115,4 +115,17 @@
       return module.getDynamicClassRoot();
    }
 
+   @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;
+   }
+
+   
 }

Added: 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	                        (rev 0)
+++ projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java	2008-11-07 14:47:04 UTC (rev 80661)
@@ -0,0 +1,131 @@
+/*
+* 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.test.aop.classpool.jbosscl.test;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassPoolWithRepositoryTestCase extends JBossClClassPoolTest
+{
+
+   public ClassPoolWithRepositoryTestCase(String name)
+   {
+      super(name);
+   }
+
+   
+   public static Test suite()
+   {
+      return suite(ClassPoolWithRepositoryTestCase.class, new Class[0]);
+   }
+   
+   public void testGlobalScope() throws Exception
+   {
+      ClassPool poolA = null;
+      ClassPool poolB = null;
+      try
+      {
+         poolA = createClassPool("A", true, PACKAGE_A);
+         poolB = createClassPool("B", true, PACKAGE_B);
+         try
+         {
+            CtClass aFromA = poolA.get(CLASS_A);
+            assertNotNull(aFromA);
+            CtClass bFromA = poolA.get(CLASS_B);
+            assertNotNull(bFromA);
+            CtClass aFromB = poolB.get(CLASS_A);
+            CtClass bFromB = poolB.get(CLASS_B);
+            assertSame(aFromA, aFromB);
+            assertSame(poolA, aFromA.getClassPool());
+            assertSame(poolB, bFromB.getClassPool());
+         }
+         finally
+         {
+            unregisterClassPool(poolB);
+         }
+         CtClass aFromA = poolA.get(CLASS_A);
+         assertNotNull(aFromA);
+
+         assertCannotLoadCtClass(poolA, CLASS_B);
+      }
+      finally
+      {
+         unregisterClassPool(poolA);
+      }
+   }
+   
+   public void testChildDomain() throws Exception
+   {
+      ClassPool poolA = null;
+      ClassPool poolB = null;
+      ClassLoaderDomain childDomain = null;
+      ClassPool poolC = null;
+      try
+      {
+         poolA = createClassPool("A", true, PACKAGE_A);
+         poolB = createClassPool("B", true, PACKAGE_B);
+         poolC = createChildDomainParentFirstClassPool("C", "CHILD", true, PACKAGE_C);
+         
+         childDomain = getChildDomainForPool(poolC);
+         assertNotNull(childDomain);
+         assertSame(helper.getDomain(), childDomain.getParent());
+
+         CtClass aFromA = poolA.get(CLASS_A);
+         assertNotNull(aFromA);
+         CtClass bFromB = poolB.get(CLASS_B);
+         assertNotNull(bFromB);
+         CtClass cFromC = poolC.get(CLASS_C);
+         assertNotNull(cFromC);
+         CtClass aFromC = poolC.get(CLASS_A);
+         assertNotNull(aFromC);
+         CtClass bFromC = poolC.get(CLASS_B);
+         assertNotNull(bFromC);
+         
+         assertSame(aFromA, aFromC);
+         assertSame(bFromB, bFromC);
+         assertSame(poolA, aFromA.getClassPool());
+         assertSame(poolB, bFromB.getClassPool());
+         assertSame(poolC, cFromC.getClassPool());
+         
+         assertCannotLoadCtClass(poolA, CLASS_C);
+         assertCannotLoadCtClass(poolB, CLASS_C);
+      }
+      finally
+      {
+         unregisterClassPool(poolA);
+         unregisterClassPool(poolB);
+         unregisterClassPool(poolC);
+         unregisterDomain(childDomain.getName());
+      }
+   }
+   
+
+ 
+}

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-11-07 14:34:22 UTC (rev 80660)
+++ projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java	2008-11-07 14:47:04 UTC (rev 80661)
@@ -190,6 +190,11 @@
       return scopedChildDomainsByLoader.get(loader);
    }
    
+   protected ClassLoaderDomain getChildDomainForPool(ClassPool pool)
+   {
+      return getChildDomainForLoader(pool.getClassLoader());
+   }
+   
    public void unregisterDomain(ClassLoaderDomain domain)
    {
       if (domain != null)
@@ -300,7 +305,35 @@
       assertEquals(domainForModule.getName(), module.getDomainName());
       assertEquals(domainForModule.getParentDomainName(), module.getParentDomainName());
    }
+
+   protected ClassPool createClassPool(String name, boolean importAll, String... packages) throws Exception
+   {
+      ClassLoader loader = createClassLoader(name, importAll, packages);
+      return AspectManager.instance().registerClassLoader(loader);
+   }
    
+   protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, String... packages) throws Exception
+   {
+      ClassLoader loader = createChildDomainParentFirstClassLoader(name, domainName, importAll, packages);
+      return AspectManager.instance().registerClassLoader(loader);
+   }
+   
+   protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, String... packages) throws Exception
+   {
+      ClassLoader loader = createChildDomainParentLastClassLoader(name, domainName, importAll, packages);
+      return AspectManager.instance().registerClassLoader(loader);
+   }
+
+   protected void unregisterClassPool(ClassPool pool) throws Exception
+   {
+      ClassLoader loader = pool.getClassLoader();
+      AspectManager.instance().unregisterClassLoader(loader);
+      if (loader != null)
+      {
+         unregisterClassLoader(loader);
+      }
+   }
+
    ////////////////////////////////////////////////////////////////////////
    // These are lifted from AOPIntegrationTest, but have some modifications
    /**

Modified: projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java	2008-11-07 14:34:22 UTC (rev 80660)
+++ projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java	2008-11-07 14:47:04 UTC (rev 80661)
@@ -21,6 +21,8 @@
 */ 
 package org.jboss.test.aop.classpool.jbosscl.test;
 
+import junit.framework.Test;
+
 import org.jboss.test.AbstractTestDelegate;
 
 /**
@@ -35,5 +37,4 @@
    {
       super(clazz);
    }
-
 }

Added: projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/UclClassPoolTestSuite.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/UclClassPoolTestSuite.java	                        (rev 0)
+++ projects/aop/trunk/asintegration-mc/src/tests/org/jboss/test/aop/classpool/jbosscl/test/UclClassPoolTestSuite.java	2008-11-07 14:47:04 UTC (rev 80661)
@@ -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.test.aop.classpool.jbosscl.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class UclClassPoolTestSuite extends TestSuite
+{
+   public static void main(String[] args)
+   {
+      TestRunner.run(suite());
+   }
+
+   public static Test suite()
+   {
+      TestSuite suite = new TestSuite("UclClassPool All Tests");
+      
+      suite.addTest(ClassLoaderWithRepositorySanityTestCase.suite());
+      suite.addTest(ClassPoolWithRepositoryTestCase.suite());
+      
+
+      return suite;
+   }
+
+}




More information about the jboss-cvs-commits mailing list