[jboss-cvs] JBossAS SVN: r69858 - in projects/microcontainer/trunk/classloader/src: tests/org/jboss/test/classloader and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Feb 15 09:06:06 EST 2008
Author: adrian at jboss.org
Date: 2008-02-15 09:06:06 -0500 (Fri, 15 Feb 2008)
New Revision: 69858
Modified:
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoaderSystemUnitTestCase.java
Log:
Add some helper methods for registering a classloader policy and constructing the domain at the same time
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java 2008-02-15 14:03:57 UTC (rev 69857)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java 2008-02-15 14:06:06 UTC (rev 69858)
@@ -305,6 +305,82 @@
{
return registerClassLoaderPolicy(getDefaultDomain(), policy);
}
+
+ /**
+ * Register a classloader policy, possibly constructing the domain with a BEFORE parent policy
+ *
+ * @param domainName the domain name
+ * @param policy the classloader policy
+ * @return the policy
+ * @throws IllegalArgumentException for a null parameter
+ */
+ public ClassLoader registerClassLoaderPolicy(String domainName, ClassLoaderPolicy policy)
+ {
+ return registerClassLoaderPolicy(domainName, ParentPolicy.BEFORE, null, policy);
+ }
+
+ /**
+ * Register a classloader policy, possibly constructing the domain
+ *
+ * @param domainName the domain name
+ * @param parentPolicy the parent policy
+ * @param policy the classloader policy
+ * @return the policy
+ * @throws IllegalArgumentException for a null parameter
+ */
+ public ClassLoader registerClassLoaderPolicy(String domainName, ParentPolicy parentPolicy, ClassLoaderPolicy policy)
+ {
+ return registerClassLoaderPolicy(domainName, parentPolicy, null, policy);
+ }
+
+ /**
+ * Register a classloader policy, possibly constructing the domain
+ *
+ * @param domainName the domain name
+ * @param parentPolicy the parent policy
+ * @param parentDomainName the parent domain (can be null)
+ * @param policy the classloader policy
+ * @return the policy
+ * @throws IllegalArgumentException for a null parameter
+ * @throws IllegalStateException if the parent domain does not exist
+ */
+ public ClassLoader registerClassLoaderPolicy(String domainName, ParentPolicy parentPolicy, String parentDomainName, ClassLoaderPolicy policy)
+ {
+ if (domainName == null)
+ throw new IllegalArgumentException("Null domain name");
+ if (parentPolicy == null)
+ throw new IllegalArgumentException("Null parent policy");
+ if (policy == null)
+ throw new IllegalArgumentException("Null classloader policy");
+
+ ClassLoaderDomain domain;
+ synchronized (this)
+ {
+ // See whether the domain already exists
+ domain = getDomain(domainName);
+ if (domain == null)
+ {
+ if (parentDomainName != null)
+ {
+ // See whether the parent domain exists
+ ClassLoaderDomain parentDomain = getDomain(parentDomainName);
+ if (parentDomain == null)
+ throw new IllegalStateException("Parent domain: " + parentDomainName + "does not exist.");
+
+ // Create the domain with a parent
+ domain = createAndRegisterDomain(domainName, parentPolicy, parentDomain);
+ }
+ else
+ {
+ // Create a domain without a parent
+ domain = createAndRegisterDomain(domainName, parentPolicy);
+ }
+ }
+ }
+
+ // Register the classloader policy in the domain
+ return registerClassLoaderPolicy(domain, policy);
+ }
/**
* Register a policy with a domain
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java 2008-02-15 14:03:57 UTC (rev 69857)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java 2008-02-15 14:06:06 UTC (rev 69858)
@@ -107,7 +107,7 @@
protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, String name)
{
- return MockClassLoaderHelper.createAndRegisterMockClassLoader(system, null, name);
+ return MockClassLoaderHelper.createAndRegisterMockClassLoader(system, (ClassLoaderDomain) null, name);
}
protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, ClassLoaderDomain domain)
@@ -115,6 +115,21 @@
return createAndRegisterMockClassLoader(system, domain, "mock");
}
+ protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, String domainName, String name)
+ {
+ return MockClassLoaderHelper.createAndRegisterMockClassLoader(system, domainName, name);
+ }
+
+ protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, String domainName, ParentPolicy parentPolicy, String name)
+ {
+ return MockClassLoaderHelper.createAndRegisterMockClassLoader(system, domainName, parentPolicy, name);
+ }
+
+ protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, String domainName, ParentPolicy parentPolicy, String parentDomainName, String name)
+ {
+ return MockClassLoaderHelper.createAndRegisterMockClassLoader(system, domainName, parentPolicy, parentDomainName, name);
+ }
+
protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, ClassLoaderDomain domain, String name)
{
return MockClassLoaderHelper.createAndRegisterMockClassLoader(system, domain, name);
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoaderSystemUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoaderSystemUnitTestCase.java 2008-02-15 14:03:57 UTC (rev 69857)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoaderSystemUnitTestCase.java 2008-02-15 14:06:06 UTC (rev 69858)
@@ -29,6 +29,7 @@
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.ParentPolicy;
import org.jboss.classloader.test.support.MockClassLoaderHelper;
import org.jboss.classloader.test.support.MockClassLoaderPolicy;
import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
@@ -340,6 +341,94 @@
assertEquals(expected, domain.added);
assertEmpty(domain.removed);
}
+
+ public void testRegisterClassLoaderConstructDomain() throws Exception
+ {
+ MockClassLoaderSystem system = createMockClassLoaderSystem();
+ ClassLoader cl1 = createAndRegisterMockClassLoader(system, "test", "mock");
+ MockClassLoaderDomain domain = (MockClassLoaderDomain) system.getDomain("test");
+ assertEquals(ParentPolicy.BEFORE, domain.getParentPolicy());
+ assertFalse(domain.getParent() instanceof ClassLoaderDomain);
+
+ List<ClassLoader> expected = new ArrayList<ClassLoader>();
+ expected.add(cl1);
+
+ assertEquals(expected, domain.added);
+ assertEmpty(domain.removed);
+ }
+
+ public void testRegisterClassLoaderConstructDomainWithoutParentDomain() throws Exception
+ {
+ MockClassLoaderSystem system = createMockClassLoaderSystem();
+ ClassLoader cl1 = createAndRegisterMockClassLoader(system, "test", ParentPolicy.AFTER, "mock");
+ MockClassLoaderDomain domain = (MockClassLoaderDomain) system.getDomain("test");
+ assertEquals(ParentPolicy.AFTER, domain.getParentPolicy());
+ assertFalse(domain.getParent() instanceof ClassLoaderDomain);
+
+ List<ClassLoader> expected = new ArrayList<ClassLoader>();
+ expected.add(cl1);
+
+ assertEquals(expected, domain.added);
+ assertEmpty(domain.removed);
+ }
+
+ public void testRegisterClassLoaderConstructDomainWithParentDomain() throws Exception
+ {
+ MockClassLoaderSystem system = createMockClassLoaderSystem();
+ ClassLoader cl1 = createAndRegisterMockClassLoader(system, "test", ParentPolicy.AFTER, ClassLoaderSystem.DEFAULT_DOMAIN_NAME, "mock");
+ MockClassLoaderDomain domain = (MockClassLoaderDomain) system.getDomain("test");
+ MockClassLoaderDomain parent = (MockClassLoaderDomain) system.getDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
+ assertEquals(ParentPolicy.AFTER, domain.getParentPolicy());
+ assertEquals(parent, domain.getParent());
+
+ List<ClassLoader> expected = new ArrayList<ClassLoader>();
+ expected.add(cl1);
+
+ assertEquals(expected, domain.added);
+ assertEmpty(domain.removed);
+ }
+
+ public void testRegisterClassLoaderConstructDomainWithParentDomainAlreadyExists() throws Exception
+ {
+ MockClassLoaderSystem system = createMockClassLoaderSystem();
+ MockClassLoaderDomain domain = new MockClassLoaderDomain("test");
+ system.registerDomain(domain);
+ ClassLoader cl1 = createAndRegisterMockClassLoader(system, "test", ParentPolicy.AFTER, ClassLoaderSystem.DEFAULT_DOMAIN_NAME, "mock");
+
+ List<ClassLoader> expected = new ArrayList<ClassLoader>();
+ expected.add(cl1);
+
+ assertEquals(expected, domain.added);
+ assertEmpty(domain.removed);
+ }
+
+ public void testRegisterClassLoaderConstructDomainWithParentPolicyAlreadyExists() throws Exception
+ {
+ MockClassLoaderSystem system = createMockClassLoaderSystem();
+ MockClassLoaderDomain domain = new MockClassLoaderDomain("test");
+ system.registerDomain(domain);
+ ClassLoader cl1 = createAndRegisterMockClassLoader(system, "test", ParentPolicy.AFTER, "mock");
+
+ List<ClassLoader> expected = new ArrayList<ClassLoader>();
+ expected.add(cl1);
+
+ assertEquals(expected, domain.added);
+ assertEmpty(domain.removed);
+ }
+
+ public void testRegisterClassLoaderConstructDomainAlreadyExists() throws Exception
+ {
+ MockClassLoaderSystem system = createMockClassLoaderSystem();
+ MockClassLoaderDomain domain = new MockClassLoaderDomain("test");
+ system.registerDomain(domain);
+ ClassLoader cl1 = createAndRegisterMockClassLoader(system, "test", "mock");
+
+ List<ClassLoader> expected = new ArrayList<ClassLoader>();
+ expected.add(cl1);
+
+ assertEquals(expected, domain.added);
+ assertEmpty(domain.removed);
+ }
public void testRegisterNullClassLoaderPolicyDefaultDomain()
{
@@ -377,7 +466,7 @@
MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
try
{
- system.registerClassLoaderPolicy(null, policy);
+ system.registerClassLoaderPolicy((ClassLoaderDomain) null, policy);
fail("Should not be here!");
}
catch (Exception e)
@@ -473,6 +562,80 @@
checkThrowable(IllegalStateException.class, e);
}
}
+
+ public void testRegisterClassLoaderPolicyAndConstructDomainNoParentDomain()
+ {
+ MockClassLoaderSystem system = createMockClassLoaderSystem();
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
+ try
+ {
+ system.registerClassLoaderPolicy("test", ParentPolicy.BEFORE, "DOESNOTEXIST", policy);
+ fail("Should not be here!");
+ }
+ catch (Exception e)
+ {
+ checkThrowable(IllegalStateException.class, e);
+ }
+ assertFalse(system.isRegistered("test"));
+ }
+
+ public void testRegisterClassLoaderPolicyAndConstructDomainNoParentPolicy()
+ {
+ MockClassLoaderSystem system = createMockClassLoaderSystem();
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
+ try
+ {
+ system.registerClassLoaderPolicy("test", null, ClassLoaderSystem.DEFAULT_DOMAIN_NAME, policy);
+ fail("Should not be here!");
+ }
+ catch (Exception e)
+ {
+ checkThrowable(IllegalArgumentException.class, e);
+ }
+ try
+ {
+ system.registerClassLoaderPolicy("test", null, policy);
+ fail("Should not be here!");
+ }
+ catch (Exception e)
+ {
+ checkThrowable(IllegalArgumentException.class, e);
+ }
+ assertFalse(system.isRegistered("test"));
+ }
+
+ public void testRegisterClassLoaderPolicyAndConstructDomainNoDomainName()
+ {
+ MockClassLoaderSystem system = createMockClassLoaderSystem();
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
+ try
+ {
+ system.registerClassLoaderPolicy(null, ParentPolicy.BEFORE, ClassLoaderSystem.DEFAULT_DOMAIN_NAME, policy);
+ fail("Should not be here!");
+ }
+ catch (Exception e)
+ {
+ checkThrowable(IllegalArgumentException.class, e);
+ }
+ try
+ {
+ system.registerClassLoaderPolicy(null, ParentPolicy.BEFORE, policy);
+ fail("Should not be here!");
+ }
+ catch (Exception e)
+ {
+ checkThrowable(IllegalArgumentException.class, e);
+ }
+ try
+ {
+ system.registerClassLoaderPolicy((String) null, policy);
+ fail("Should not be here!");
+ }
+ catch (Exception e)
+ {
+ checkThrowable(IllegalArgumentException.class, e);
+ }
+ }
public void testUnregisterClassLoaderDefaultDomain() throws Exception
{
More information about the jboss-cvs-commits
mailing list