[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