[jboss-cvs] JBossAS SVN: r71769 - in projects/jboss-deployers/trunk/deployers-impl/src: tests/org/jboss/test/deployers/classloading/test and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Apr 7 11:53:50 EDT 2008
Author: adrian at jboss.org
Date: 2008-04-07 11:53:50 -0400 (Mon, 07 Apr 2008)
New Revision: 71769
Modified:
projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/AbstractLevelClassLoaderSystemDeployer.java
projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/test/ClassLoaderDependenciesTest.java
projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/test/SubDeploymentMockClassLoaderUnitTestCase.java
Log:
[JBDEPLOY-31] - Remove domains when they become empty during undeployment of classloaders
Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/AbstractLevelClassLoaderSystemDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/AbstractLevelClassLoaderSystemDeployer.java 2008-04-07 15:25:08 UTC (rev 71768)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/AbstractLevelClassLoaderSystemDeployer.java 2008-04-07 15:53:50 UTC (rev 71769)
@@ -21,6 +21,7 @@
*/
package org.jboss.deployers.plugins.classloading;
+import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloading.spi.dependency.ClassLoading;
import org.jboss.classloading.spi.dependency.Module;
@@ -136,8 +137,22 @@
ClassLoader classLoader = unit.getClassLoader();
try
{
- // Remove the classloader
- system.unregisterClassLoader(classLoader);
+ try
+ {
+ // Remove the classloader
+ system.unregisterClassLoader(classLoader);
+ }
+ finally
+ {
+ // Try to tidy up empty domains
+ String domainName = module.getDeterminedDomainName();
+ if (ClassLoaderSystem.DEFAULT_DOMAIN_NAME.equals(domainName) == false)
+ {
+ ClassLoaderDomain domain = system.getDomain(domainName);
+ if (domain.hasClassLoaders() == false)
+ system.unregisterDomain(domain);
+ }
+ }
}
finally
{
Modified: projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/test/ClassLoaderDependenciesTest.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/test/ClassLoaderDependenciesTest.java 2008-04-07 15:25:08 UTC (rev 71768)
+++ projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/test/ClassLoaderDependenciesTest.java 2008-04-07 15:53:50 UTC (rev 71769)
@@ -26,6 +26,7 @@
import java.util.List;
import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
+import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloader.spi.ParentPolicy;
import org.jboss.classloading.spi.dependency.ClassLoading;
@@ -57,6 +58,8 @@
{
private static ClassLoadingMetaDataFactory classLoadingMetaDataFactory = ClassLoadingMetaDataFactory.getInstance();
+ private ClassLoaderSystem system;
+
public static final String NameA = "A";
public static final String NameB = "B";
@@ -201,11 +204,23 @@
MutableAttachments mutable = (MutableAttachments) attachments.getPredeterminedManagedObjects();
mutable.addAttachment(ClassLoadingMetaData.class, md);
}
+
+ protected ClassLoaderDomain assertDomain(String name) throws Exception
+ {
+ ClassLoaderDomain result = system.getDomain(name);
+ assertNotNull("Expected domain " + name, result);
+ return result;
+ }
+
+ protected void assertNoDomain(String name) throws Exception
+ {
+ assertNull("Did not expect domain " + name, system.getDomain(name));
+ }
protected DeployerClient getMainDeployer()
{
ClassLoading classLoading = new ClassLoading();
- ClassLoaderSystem system = new DefaultClassLoaderSystem();
+ system = new DefaultClassLoaderSystem();
system.getDefaultDomain().setParentPolicy(ParentPolicy.BEFORE_BUT_JAVA_ONLY);
deployer1 = new MockClassLoaderDescribeDeployer();
Modified: projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/test/SubDeploymentMockClassLoaderUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/test/SubDeploymentMockClassLoaderUnitTestCase.java 2008-04-07 15:25:08 UTC (rev 71768)
+++ projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/test/SubDeploymentMockClassLoaderUnitTestCase.java 2008-04-07 15:53:50 UTC (rev 71769)
@@ -64,6 +64,7 @@
addChild(deployment, "sub");
DeploymentUnit unit = assertDeploy(deployer, deployment);
+ assertNoDomain("top/sub");
ClassLoader cl = unit.getClassLoader();
assertLoadClass(cl, A.class);
@@ -74,6 +75,7 @@
assertLoadClass(clSub, A.class, cl);
assertUndeploy(deployer, deployment);
+ assertNoDomain("top/sub");
}
public void testSubDeploymentClassLoader() throws Exception
@@ -87,6 +89,7 @@
addClassLoadingMetaData(sub, "top/sub", null, A.class, B.class);
DeploymentUnit unit = assertDeploy(deployer, deployment);
+ assertDomain("top/sub");
assertEquals(Arrays.asList("top", "top/sub"), deployer2.deployed);
assertEquals(NONE, deployer2.undeployed);
@@ -101,6 +104,7 @@
assertLoadClass(clSub, B.class);
assertUndeploy(deployer, deployment);
+ assertNoDomain("top/sub");
assertEquals(Arrays.asList("top", "top/sub"), deployer2.deployed);
assertEquals(Arrays.asList("top/sub", "top"), deployer2.undeployed);
@@ -120,7 +124,9 @@
addClassLoadingMetaData(sub2, "top/sub2", null, B.class);
DeploymentUnit unit = assertDeploy(deployer, deployment);
-
+ assertDomain("top/sub1");
+ assertDomain("top/sub2");
+
ClassLoader cl = unit.getClassLoader();
assertLoadClass(cl, A.class);
assertLoadClassFail(cl, B.class);
@@ -139,6 +145,8 @@
assertNotSame(bFrom1, bFrom2);
assertUndeploy(deployer, deployment);
+ assertNoDomain("top/sub1");
+ assertNoDomain("top/sub2");
}
public void testSubDeploymentClassLoaderParentLast() throws Exception
@@ -153,7 +161,8 @@
clmd.setJ2seClassLoadingCompliance(false);
DeploymentUnit unit = assertDeploy(deployer, deployment);
-
+ assertDomain("top/sub");
+
ClassLoader cl = unit.getClassLoader();
assertLoadClass(cl, A.class);
assertLoadClassFail(cl, B.class);
@@ -164,6 +173,7 @@
assertLoadClass(clSub, B.class);
assertUndeploy(deployer, deployment);
+ assertNoDomain("top/sub");
assertEquals(Arrays.asList("top", "top/sub"), deployer2.deployed);
assertEquals(Arrays.asList("top/sub", "top"), deployer2.undeployed);
More information about the jboss-cvs-commits
mailing list