[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