[jboss-cvs] JBossAS SVN: r83695 - in projects/aop/trunk: asintegration-core/src/main/java/org/jboss/aop/classpool and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jan 30 11:44:57 EST 2009
Author: kabir.khan at jboss.com
Date: 2009-01-30 11:44:56 -0500 (Fri, 30 Jan 2009)
New Revision: 83695
Modified:
projects/aop/trunk/asintegration-core/src/etc/jboss.properties
projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/ClassPoolToClassPoolDomainAdapter.java
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/test/ClassLoaderWithRepositorySanityTestCase.java
projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java
projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
Log:
[JBAOP-666] Take into account web deployments. They will be deployed in a sub-domain with the parent domain adapter pointing to the parent deployment's classloader
Modified: projects/aop/trunk/asintegration-core/src/etc/jboss.properties
===================================================================
--- projects/aop/trunk/asintegration-core/src/etc/jboss.properties 2009-01-30 15:59:00 UTC (rev 83694)
+++ projects/aop/trunk/asintegration-core/src/etc/jboss.properties 2009-01-30 16:44:56 UTC (rev 83695)
@@ -1,5 +1,5 @@
# Properties file for the ant install scripts
# Set the root of your jboss installation here
-jboss.home=/Users/kabir/sourcecontrol/jboss-head/build/output/jboss-5.0.0.GA/
+jboss.home=/Users/kabir/sourcecontrol/jbossas/Branch_5_x/build/output/jboss-5.1.0.Beta1
#Set the server configuration you want to patch here (e.g, all or default)
jboss.config=all
Modified: projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/ClassPoolToClassPoolDomainAdapter.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/ClassPoolToClassPoolDomainAdapter.java 2009-01-30 15:59:00 UTC (rev 83694)
+++ projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/ClassPoolToClassPoolDomainAdapter.java 2009-01-30 16:44:56 UTC (rev 83695)
@@ -36,11 +36,23 @@
public ClassPoolToClassPoolDomainAdapter()
{
this.pool = initialiseParentClassLoader();
+ if (logger.isTraceEnabled()) logger.trace("Created " + this);
+ validate();
+ }
+
+ public ClassPoolToClassPoolDomainAdapter(ClassPool pool)
+ {
+ this.pool = pool;
+ if (logger.isTraceEnabled()) logger.trace("Created " + this);
+ validate();
+ }
+
+ private void validate()
+ {
if (pool == null)
{
throw new IllegalStateException("Null parent classpool");
}
- if (logger.isTraceEnabled()) logger.trace("Created " + this);
}
public ClassPool initialiseParentClassLoader()
Modified: 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-01-30 15:59:00 UTC (rev 83694)
+++ projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java 2009-01-30 16:44:56 UTC (rev 83695)
@@ -26,10 +26,12 @@
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;
@@ -93,6 +95,15 @@
}
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);
Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java 2009-01-30 15:59:00 UTC (rev 83694)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java 2009-01-30 16:44:56 UTC (rev 83695)
@@ -362,29 +362,35 @@
ClassLoader parent = createChildURLClassLoader(null, JAR_B_1);
ClassLoader globalA = null;
ClassLoader globalB = null;
+ ClassLoader globalC = null;
try
{
final String domain = "CHILD";
globalA = createChildDomainParentFirstClassLoader("A", domain, true, parent, JAR_A_1);
Class<?> aFromGlobal = globalA.loadClass(CLASS_A);
assertSame(globalA, aFromGlobal.getClassLoader());
+ Class<?> bFromGlobalA = globalA.loadClass(CLASS_B);
+ assertSame(parent, bFromGlobalA.getClassLoader());
globalB = createChildDomainParentFirstClassLoader("B", domain, true, parent, JAR_B_2);
- Class<?> bFromGlobalA = globalA.loadClass(CLASS_B);
- assertSame(parent, bFromGlobalA.getClassLoader());
Class<?> bFromParent = parent.loadClass(CLASS_B);
assertSame(parent, bFromParent.getClassLoader());
assertSame(bFromGlobalA, bFromParent);
Class<?> bFromGlobalB = globalB.loadClass(CLASS_B);
assertSame(bFromGlobalB, bFromParent);
+
+ globalC = createChildDomainParentLastClassLoader("C", domain + "2", true, parent, JAR_B_2);
+ assertLoadClass(CLASS_B, globalC);
}
finally
{
unregisterClassLoader(globalA);
unregisterClassLoader(globalB);
+ unregisterClassLoader(globalC);
unregisterClassLoader(parent);
unregisterDomain(globalA);
+ unregisterDomain(globalC);
}
}
Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java 2009-01-30 15:59:00 UTC (rev 83694)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java 2009-01-30 16:44:56 UTC (rev 83695)
@@ -21,14 +21,13 @@
*/
package org.jboss.test.aop.classpool.jbosscl.test;
-import org.jboss.aop.classpool.ClassPoolDomain;
-import org.jboss.classloader.spi.ClassLoaderDomain;
-
import javassist.ClassPool;
import javassist.CtClass;
import javassist.NotFoundException;
import junit.framework.Test;
+import org.jboss.classloader.spi.ClassLoaderDomain;
+
/**
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
@@ -723,8 +722,6 @@
assertSame(b.getClassPool(), bArray.getClassPool());
}
-/*
- 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);
@@ -747,35 +744,43 @@
}
}
- If we ever need to implement this, this test needs to have the latest additions to ClassLoaderWithRepositorySanityTestCase
public void testClassLoaderWithParentClassLoaderAndSameClassInDomain() throws Exception
{
ClassPool parent = createChildURLClassPool(null, JAR_B_1);
ClassPool globalA = null;
ClassPool globalB = null;
+ ClassPool globalC = 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());
+ CtClass bFromGlobalA = globalA.get(CLASS_B);
+ assertSame(parent, bFromGlobalA.getClassPool());
- globalB = createChildDomainParentFirstClassPool("B", domain, true, parent, JAR_B_1);
- CtClass bFromGlobalA = globalA.get(CLASS_B);
- assertSame(globalB, bFromGlobalA.getClassPool());
+ globalB = createChildDomainParentFirstClassPool("B", domain, true, parent, JAR_B_2);
CtClass bFromParent = parent.get(CLASS_B);
assertSame(parent, bFromParent.getClassPool());
- assertNotSame(bFromGlobalA, bFromParent);
+ assertSame(bFromGlobalA, bFromParent);
+
+ CtClass bFromGlobalB = globalB.get(CLASS_B);
+ assertSame(bFromGlobalB, bFromParent);
+
+ globalC = createChildDomainParentLastClassPool("C", domain + "2", true, parent, JAR_B_2);
+ assertLoadCtClass(CLASS_B, globalC);
}
finally
{
unregisterClassPool(globalA);
unregisterClassPool(globalB);
+ unregisterClassPool(globalC);
unregisterClassPool(parent);
unregisterDomain(globalA);
+ unregisterDomain(globalC);
}
}
-*/
+
private void checkCanLoadString(ClassPool poolA, ClassPool poolB) throws NotFoundException
{
CtClass strA = poolA.getCtClass(STRING);
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-01-30 15:59:00 UTC (rev 83694)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java 2009-01-30 16:44:56 UTC (rev 83695)
@@ -388,7 +388,7 @@
{
result.setFactory(factory);
}
- ClassLoader loader = assertClassLoader(factory);
+ ClassLoader loader = assertClassLoader(factory, parent);
return loader;
}
@@ -522,8 +522,8 @@
protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
{
return createChildDomainParentFirstClassPool(null, name, domainName, importAll, parent, urls);
+ }
- }
protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
{
ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, parent.getClassLoader(), urls);
@@ -552,6 +552,17 @@
return AspectManager.instance().registerClassLoader(loader);
}
+ protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
+ {
+ return createChildDomainParentLastClassPool(null, name, domainName, importAll, parent, urls);
+ }
+
+ protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
+ {
+ ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, parent.getClassLoader(), urls);
+ return AspectManager.instance().registerClassLoader(loader);
+ }
+
protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
{
return createChildDomainParentLastClassPool(null, name, domainName, parentDomainName, importAll, urls);
@@ -609,14 +620,19 @@
protected void registerModule(ClassLoader loader, Module module)
{
+ registerModule(loader, module, null);
+ }
+
+ protected void registerModule(ClassLoader loader, Module module, ClassLoader parent)
+ {
if (getSystem() != domainRegistry.getSystem())
{
domainRegistry.setSystem(getSystem());
}
- //TODO I have just hacked the domain and the parentUnitLoader here so this might cause problems
+ //TODO I have just hacked the domain here so this might cause problems
//with the tests if we try to do weaving. However, it should be fine while just testing pools
//and loaders
- domainRegistry.initMapsForLoader(loader, module, null, null);
+ domainRegistry.initMapsForLoader(loader, module, null, parent);
}
protected void unregisterModule(ClassLoader loader)
@@ -750,13 +766,18 @@
protected ClassLoader assertClassLoader(TestVFSClassLoaderFactory factory) throws Exception
{
+ return assertClassLoader(factory, null);
+ }
+
+ protected ClassLoader assertClassLoader(TestVFSClassLoaderFactory factory, ClassLoader parent) throws Exception
+ {
try
{
Object obj = getBean(getContextName(factory));
ClassLoader loader = assertInstanceOf(obj, ClassLoader.class);
Module module = assertModule(getContextName(factory));
- registerModule(loader, module);
+ registerModule(loader, module, parent);
loaderNameDeploymentRegistry.registerLoaderName(factory.getName(), loader);
return loader;
More information about the jboss-cvs-commits
mailing list