[jboss-cvs] JBossAS SVN: r70084 - in projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader: test/support and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Feb 26 06:17:02 EST 2008
Author: adrian at jboss.org
Date: 2008-02-26 06:17:02 -0500 (Tue, 26 Feb 2008)
New Revision: 70084
Modified:
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderHelper.java
Log:
Allow a loader in the ease of use policy construction
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-26 11:03:05 UTC (rev 70083)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java 2008-02-26 11:17:02 UTC (rev 70084)
@@ -334,7 +334,7 @@
*/
public ClassLoader registerClassLoaderPolicy(String domainName, ClassLoaderPolicy policy)
{
- return registerClassLoaderPolicy(domainName, ParentPolicy.BEFORE, null, policy);
+ return registerClassLoaderPolicy(domainName, ParentPolicy.BEFORE, (Loader) null, policy);
}
/**
@@ -348,7 +348,7 @@
*/
public ClassLoader registerClassLoaderPolicy(String domainName, ParentPolicy parentPolicy, ClassLoaderPolicy policy)
{
- return registerClassLoaderPolicy(domainName, parentPolicy, null, policy);
+ return registerClassLoaderPolicy(domainName, parentPolicy, (Loader) null, policy);
}
/**
@@ -399,6 +399,42 @@
// Register the classloader policy in the domain
return registerClassLoaderPolicy(domain, policy);
}
+
+ /**
+ * Register a classloader policy, possibly constructing the domain
+ *
+ * @param domainName the domain name
+ * @param parentPolicy the parent policy
+ * @param parent the parent
+ * @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, Loader parent, 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)
+ {
+ // Create a domain without a parent
+ domain = createAndRegisterDomain(domainName, parentPolicy, parent);
+ }
+ }
+
+ // Register the classloader policy in the domain
+ return registerClassLoaderPolicy(domain, policy);
+ }
/**
* Register a policy with a domain
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderHelper.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderHelper.java 2008-02-26 11:03:05 UTC (rev 70083)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderHelper.java 2008-02-26 11:17:02 UTC (rev 70084)
@@ -27,6 +27,7 @@
import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.Loader;
import org.jboss.classloader.spi.ParentPolicy;
/**
@@ -167,6 +168,31 @@
}
/**
+ * Create and register a mock classloader policy<p>
+ *
+ * No security problem here. The user needs access to a ClassLoaderSystem
+ * to register a classloader with it.
+ *
+ * @param system the system
+ * @param domainName the domain name
+ * @param parentPolicy the parent policy
+ * @param parent the parent loader
+ * @param name the name
+ * @return the classloader
+ */
+ public static ClassLoader createAndRegisterMockClassLoader(final ClassLoaderSystem system, final String domainName, final ParentPolicy parentPolicy, final Loader parent, final String name)
+ {
+ return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+ {
+ public ClassLoader run()
+ {
+ MockClassLoaderPolicy policy = new MockClassLoaderPolicy(name);
+ return system.registerClassLoaderPolicy(domainName, parentPolicy, parent, policy);
+ }
+ });
+ }
+
+ /**
* Register a mock classloader policy<p>
*
* No security problem here. The user needs access to a ClassLoaderSystem
More information about the jboss-cvs-commits
mailing list