[jboss-cvs] JBossAS SVN: r62700 - in projects/microcontainer/trunk/classloader/src: main/org/jboss/classloader/spi and 10 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue May 1 10:43:42 EDT 2007


Author: adrian at jboss.org
Date: 2007-05-01 10:43:42 -0400 (Tue, 01 May 2007)
New Revision: 62700

Added:
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderHelper.java
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderPolicy.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTestWithSecurity.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemNoSecurityUnitTestCase.java
Removed:
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/support/
Modified:
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderPolicy.java
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderSystem.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/ClassLoaderAllTestSuite.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/bootstrap/test/ModifiedBootstrapUnitTestCase.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/delegate/test/DelegateUnitTestCase.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/support/Base.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/support/UserOfBase.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/CircularLoadUnitTestCase.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/CircularityErrorUnitTestCase.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/ConcurrentLoaderUnitTestCase.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/LoaderUnitTestCase.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/ClassLoadingSystemTestSuite.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemUnitTestCase.java
Log:
[JBOSGI-16] - The classloader now runs with the AccessControlContext
of whoever created the ClassLoaderPolicy.

Additional checks that require RuntimeException("createClassLoader"):
Create a ClassLoaderPolicy
Register a ClassLoaderPolicy
Get the ClassLoaderSystem singleton

Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderPolicy.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderPolicy.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderPolicy.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -221,7 +221,7 @@
       if (sm == null)
          return ClassLoader.getSystemClassLoader();
       
-      return AccessController.doPrivileged(GetSystemClassLoader.INSTANCE);
+      return AccessController.doPrivileged(GetSystemClassLoader.INSTANCE, getAccessControlContext());
    }
    
    /**

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	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -34,7 +34,6 @@
 /**
  * ClassLoaderSystem.
  * 
- * TODO Permissions
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
@@ -62,9 +61,13 @@
     * Get the classloading system instance
     * 
     * @return the instance
+    * @throws SecurityException if the caller does not have authority to create a classloader
     */
    public static final ClassLoaderSystem getInstance()
    {
+      SecurityManager sm = System.getSecurityManager();
+      if (sm != null)
+         sm.checkCreateClassLoader();
       return builder.get();
    }
 

Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -24,6 +24,10 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import java.security.ProtectionDomain;
 import java.security.SecureClassLoader;
 import java.util.Enumeration;
@@ -198,7 +202,7 @@
     * @param trace whether trace is enabled
     * @return the class if found
     */
-   synchronized Class<?> loadClassLocally(String name, boolean trace)
+   synchronized Class<?> loadClassLocally(final String name, final boolean trace)
    {
       if (trace)
          log.trace(this + " load class locally " + name);
@@ -213,34 +217,42 @@
       }
 
       // Look for the resource
-      String resourceName = ClassLoaderUtils.classNameToPath(name);
-      InputStream is = policy.getResourceAsStream(resourceName);
-      if (is == null)
+      final String resourceName = ClassLoaderUtils.classNameToPath(name);
+      
+      return AccessController.doPrivileged(new PrivilegedAction<Class>()
       {
-         if (trace)
-            log.trace(this + " resource not found locally " + resourceName + " for " + name);
-         return null;
-      }
+         public Class<?> run()
+         {
+            InputStream is = policy.getResourceAsStream(resourceName);
+            if (is == null)
+            {
+               if (trace)
+                  log.trace(this + " resource not found locally " + resourceName + " for " + name);
+               return null;
+            }
 
-      // Load the bytecode
-      byte[] byteCode = ClassLoaderUtils.loadByteCode(name, is);
-      
-      // Let the policy do things before we define the class
-      BaseClassLoaderPolicy basePolicy = policy;
-      ProtectionDomain protectionDomain = basePolicy.getProtectionDomain(name, resourceName);
-      byteCode = policy.transform(name, byteCode, protectionDomain);
-      
-      // Create the package if necessary
-      definePackage(name);
-      
-      // Finally we can define the class
-      if (protectionDomain != null)
-         result = defineClass(name, byteCode, 0, byteCode.length, protectionDomain);
-      else
-         result = defineClass(name, byteCode, 0, byteCode.length);
-      if (trace)
-         log.trace(this + " loaded class locally " + ClassLoaderUtils.classToString(result));
-      return result;
+            // Load the bytecode
+            byte[] byteCode = ClassLoaderUtils.loadByteCode(name, is);
+            
+            // Let the policy do things before we define the class
+            BaseClassLoaderPolicy basePolicy = policy;
+            ProtectionDomain protectionDomain = basePolicy.getProtectionDomain(name, resourceName);
+            byteCode = policy.transform(name, byteCode, protectionDomain);
+            
+            // Create the package if necessary
+            definePackage(name);
+            
+            // Finally we can define the class
+            Class<?> result;
+            if (protectionDomain != null)
+               result = defineClass(name, byteCode, 0, byteCode.length, protectionDomain);
+            else
+               result = defineClass(name, byteCode, 0, byteCode.length);
+            if (trace)
+               log.trace(this + " loaded class locally " + ClassLoaderUtils.classToString(result));
+            return result;
+         }
+      }, policy.getAccessControlContext());
    }
 
    /**
@@ -263,22 +275,28 @@
     * @param trace whether trace is enabled
     * @return the URL if found
     */
-   URL getResourceLocally(String name, String resourceName, boolean trace)
+   URL getResourceLocally(final String name, final String resourceName, final boolean trace)
    {
       if (trace)
          log.trace(this + " get resource locally " + name);
-
-      // Look for the resource
-      URL result = policy.getResource(name);
-      if (result == null)
+      
+      return AccessController.doPrivileged(new PrivilegedAction<URL>()
       {
-         if (trace)
-            log.trace(this + " resource not found locally " + name);
-         return null;
-      }
-      if (trace)
-         log.trace(this + " got resource locally " + name);
-      return result;
+         public URL run()
+         {
+            // Look for the resource
+            URL result = policy.getResource(name);
+            if (result == null)
+            {
+               if (trace)
+                  log.trace(this + " resource not found locally " + name);
+               return null;
+            }
+            if (trace)
+               log.trace(this + " got resource locally " + name);
+            return result;
+         }
+      }, policy.getAccessControlContext());
    }
 
    /**
@@ -303,13 +321,35 @@
     * @param trace whether trace is enabled
     * @throws IOException for any error
     */
-   void getResourcesLocally(String name, String resourceName, Set<URL> urls, boolean trace) throws IOException
+   void getResourcesLocally(final String name, final String resourceName, final Set<URL> urls, boolean trace) throws IOException
    {
       if (trace)
          log.trace(this + " get resources locally " + name);
 
       // Look for the resources
-      policy.getResources(name, urls);
+      
+      try
+      {
+         AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+         {
+            public Object run() throws Exception
+            {
+               policy.getResources(name, urls);
+               return null;
+            }
+         }, policy.getAccessControlContext());
+      }
+      catch (PrivilegedActionException e)
+      {
+         Exception e1 = e.getException();
+         if (e1 instanceof RuntimeException)
+            throw (RuntimeException) e1;
+         if (e1 instanceof IOException)
+            throw (IOException) e1;
+         IOException e2 = new IOException("Unexpected error");
+         e2.initCause(e1);
+         throw e2;
+      }
    }
    
    /**

Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -21,6 +21,8 @@
  */
 package org.jboss.classloader.spi.base;
 
+import java.security.AccessControlContext;
+import java.security.AccessController;
 import java.security.ProtectionDomain;
 import java.util.List;
 
@@ -47,7 +49,34 @@
    /** The domain for this policy */
    private volatile BaseClassLoaderDomain domain;
 
+   /** The access control context for this policy */
+   private AccessControlContext access;
+   
    /**
+    * Create a new BaseClassLoaderPolicy.
+    * 
+    * @throws SecurityException if the caller does not have permission to create a classloader
+    */
+   public BaseClassLoaderPolicy()
+   {
+      SecurityManager sm = System.getSecurityManager();
+      if (sm != null)
+         sm.checkCreateClassLoader();
+      
+      access = AccessController.getContext();
+   }
+
+   /**
+    * Get the access control context for this policy
+    * 
+    * @return the access control context
+    */
+   protected AccessControlContext getAccessControlContext()
+   {
+      return access;
+   }
+   
+   /**
     * Get the delegate loader for exported stuff<p>
     *
     * NOTE: Protected access for security reasons

Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderSystem.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderSystem.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderSystem.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -21,6 +21,8 @@
  */
 package org.jboss.classloader.spi.base;
 
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.security.ProtectionDomain;
 
 import org.jboss.classloader.spi.ClassLoaderPolicy;
@@ -28,7 +30,6 @@
 /**
  * Base ClassLoaderSystem.
  * 
- * TODO Permissions
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
@@ -103,14 +104,20 @@
     * @throws IllegalArgumentException if a parameter is null
     * @throws IllegalStateException if the policy is already registered with a domain  
     */
-   protected ClassLoader registerClassLoaderPolicy(BaseClassLoaderDomain domain, ClassLoaderPolicy policy)
+   protected ClassLoader registerClassLoaderPolicy(final BaseClassLoaderDomain domain, final ClassLoaderPolicy policy)
    {
       if (domain == null)
          throw new IllegalArgumentException("Null domain");
 
-      BaseClassLoader classLoader = createClassLoader(policy);
-      domain.registerClassLoader(classLoader);
-      return classLoader;
+      return AccessController.doPrivileged(new PrivilegedAction<BaseClassLoader>()
+      {
+         public BaseClassLoader run()
+         {
+            BaseClassLoader classLoader = createClassLoader(policy);
+            domain.registerClassLoader(classLoader);
+            return classLoader;
+         }
+      }, policy.getAccessControlContext());
    }
    
    /**

Added: 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	                        (rev 0)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderHelper.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -0,0 +1,116 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.classloader.test.support;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+
+/**
+ * MockClassLoaderHelper<p>
+ * 
+ * WARNING. This class/package should be excluded from the release
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class MockClassLoaderHelper
+{
+   /**
+    * Create a mock classloading system<p>
+    * 
+    * No security problem. A user can create their own classloader system, so what?
+    * 
+    * @return the new classloading system
+    */
+   public static ClassLoaderSystem createMockClassLoaderSystem()
+   {
+      return new DefaultClassLoaderSystem();
+   }
+   
+   /**
+    * Create a mock classloader policy with the given name
+    * 
+    * @param name the name
+    * @return the policy
+    */
+   public static MockClassLoaderPolicy createMockClassLoaderPolicy(final String name)
+   {
+      return AccessController.doPrivileged(new PrivilegedAction<MockClassLoaderPolicy>()
+      {
+         public MockClassLoaderPolicy run()
+         {
+            return new MockClassLoaderPolicy(name);
+         }
+      });
+   }
+   
+   /**
+    * 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 domain the domain
+    * @param name the name
+    * @return the classloader
+    */
+   public static ClassLoader createAndRegisterMockClassLoader(final ClassLoaderSystem system, final ClassLoaderDomain domain, final String name)
+   {
+      return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+      {
+         public ClassLoader run()
+         {
+            MockClassLoaderPolicy policy = new MockClassLoaderPolicy(name);
+            if (domain == null)
+               return system.registerClassLoaderPolicy(policy);
+            else
+               return system.registerClassLoaderPolicy(domain, policy);
+         }
+      });
+   }
+
+   /**
+    * Check whether a class has the expected classloader
+    * 
+    * @param clazz the class
+    * @param expected the expected classloader
+    * @return true when it has the expected classloader
+    */
+   public static boolean isExpectedClassLoader(final Class<?> clazz, final ClassLoader expected)
+   {
+      ClassLoader classLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+      {
+         public ClassLoader run()
+         {
+            return clazz.getClassLoader();
+         }
+      });
+      if (classLoader == null)
+         return expected == null;
+      return classLoader.equals(expected);
+   }
+}

Copied: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderPolicy.java (from rev 62673, projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/support/MockClassLoaderPolicy.java)
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderPolicy.java	                        (rev 0)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderPolicy.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -0,0 +1,398 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.classloader.test.support;
+
+import java.io.IOException;
+import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Set;
+
+import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloader.plugins.filter.PatternClassFilter;
+import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloader.spi.DelegateLoader;
+import org.jboss.classloader.spi.filter.ClassFilter;
+
+/**
+ * MockClassLoaderPolicy.<p>
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class MockClassLoaderPolicy extends ClassLoaderPolicy
+{
+   /** The logical name of the policy */
+   private String name;
+   
+   /** The delegates */
+   private List<? extends DelegateLoader> delegates;
+   
+   /** The paths */
+   private String[] paths;
+   
+   /** The included resources */
+   private String[] included;
+   
+   /** The excluded resources */
+   private String[] excluded;
+
+   /** The exported package names */
+   private String[] packageNames;
+   
+   /** Whether to import all */
+   private boolean importAll;
+
+   /** The non JDK classes filter */
+   private ClassFilter nonJDKFilter;
+   
+   /**
+    * Create a new MockClassLoaderPolicy filtering org.jboss.* classes
+    * with logical name "mock"
+    */
+   public MockClassLoaderPolicy()
+   {
+      this(null);
+   }
+
+   /**
+    * Create a new MockClassLoaderPolicy filtering org.jboss.* classes
+    * 
+    * @param name the logical name of the policy
+    */
+   public MockClassLoaderPolicy(String name)
+   {
+      this(name, "org\\.jboss\\..*");
+   }
+
+   /**
+    * Create a new MockClassLoaderPolicy filtering the given patterns
+    * 
+    * @param name the logical name of the policy
+    * @param nonJDKPatterns the patterns to filter
+    * @throws IllegalArgumentException for null patterns
+    */
+   public MockClassLoaderPolicy(String name, String... nonJDKPatterns)
+   {
+      this(name, new PatternClassFilter(nonJDKPatterns));
+   }
+
+   /**
+    * Create a new MockClassLoaderPolicy filtering the given patterns
+    * 
+    * @param name the logical name of the policy
+    * @param nonJDKFilter the filter for nonJDK classes
+    * @throws IllegalArgumentException for a null filter
+    */
+   public MockClassLoaderPolicy(String name, ClassFilter nonJDKFilter)
+   {
+      if (name == null)
+         name = "mock";
+      this.name = name;
+      if (nonJDKFilter == null)
+         throw new IllegalArgumentException("Null filter");
+      this.nonJDKFilter = nonJDKFilter;
+   }
+   
+   @Override
+   public List<? extends DelegateLoader> getDelegates()
+   {
+      return delegates;
+   }
+   
+   /**
+    * Set the delegates
+    * 
+    * @param delegates the delegate imports
+    */
+   public void setDelegates(List<? extends DelegateLoader> delegates)
+   {
+      this.delegates = delegates;
+   }
+   
+   /**
+    * Get the paths to expose
+    * 
+    * @return the paths
+    */
+   public String[] getPaths()
+   {
+      return paths;
+   }
+   
+   /**
+    * Set the path to expose
+    * 
+    * @param path the path
+    */
+   public void setPath(String path)
+   {
+      setPaths(new String[] { path });
+   }
+   
+   /**
+    * Set the paths to expose
+    * 
+    * @param paths the paths to expose
+    */
+   public void setPaths(String[] paths)
+   {
+      this.paths = paths;
+   }
+   
+   /**
+    * Set the paths to expose
+    * 
+    * @param classes the classes to reference to determine the package paths
+    */
+   public void setPaths(Class... classes)
+   {
+      if (classes == null)
+         paths = null;
+      paths = new String[classes.length];
+      for (int i = 0; i < classes.length; ++i)
+         paths[i] = ClassLoaderUtils.packageNameToPath(classes[i].getName());
+   }
+
+   @Override
+   public String[] getPackageNames()
+   {
+      return packageNames;
+   }
+   
+   /**
+    * Set the exported package names
+    * 
+    * @param packageNames the exported packages
+    */
+   public void setPackageNames(String[] packageNames)
+   {
+      this.packageNames = packageNames;
+   }
+   
+   /**
+    * Set the exported package names
+    * 
+    * @param classes the classes to reference to determine the package names
+    */
+   public void setPackageNames(Class... classes)
+   {
+      if (classes == null)
+         packageNames = null;
+      packageNames = new String[classes.length];
+      for (int i = 0; i < classes.length; ++i)
+         packageNames[i] = ClassLoaderUtils.getClassPackageName(classes[i].getName());
+   }
+   
+   /**
+    * Set the included classes
+    * 
+    * @param classes the classes to include from the paths
+    */
+   public void setIncluded(Class... classes)
+   {
+      if (classes == null)
+         included = null;
+      included = new String[classes.length];
+      for (int i = 0; i < classes.length; ++i)
+         included[i] = ClassLoaderUtils.classNameToPath(classes[i].getName());
+   }
+   
+   /**
+    * Set the excluded classes
+    * 
+    * @param classes the classes to exclude from the paths
+    */
+   public void setExcluded(Class... classes)
+   {
+      if (classes == null)
+         excluded = null;
+      excluded = new String[classes.length];
+      for (int i = 0; i < classes.length; ++i)
+         excluded[i] = ClassLoaderUtils.classNameToPath(classes[i].getName());
+   }
+
+   /**
+    * Set the paths and the exported package names
+    * 
+    * @param classes the classes to reference
+    */
+   public void setPathsAndPackageNames(Class... classes)
+   {
+      setPaths(classes);
+      setPackageNames(classes);
+   }
+   
+   @Override
+   public boolean isImportAll()
+   {
+      return importAll;
+   }
+
+   /**
+    * Set the importAll.
+    * 
+    * @param importAll the importAll.
+    */
+   public void setImportAll(boolean importAll)
+   {
+      this.importAll = importAll;
+   }
+
+   @Override
+   public URL getResource(String path)
+   {
+      if (paths == null)
+         return null;
+
+      if (excluded != null)
+      {
+         for (String excludedPath : excluded)
+         {
+            if (excludedPath.equals(path))
+               return null;
+         }
+      }
+
+      if (included != null)
+      {
+         boolean include = false;
+         for (String includedPath : included)
+         {
+            if (includedPath.equals(path))
+            {
+               include = true;
+               break;
+            }
+         }
+         if (include == false)
+            return null;
+      }
+      
+      for (int i = 0; i < paths.length; ++i)
+      {
+         if (path.startsWith(paths[i]))
+            return getClass().getClassLoader().getResource(path);
+      }
+      return null;
+   }
+
+   @Override
+   public void getResources(String path, Set<URL> urls) throws IOException
+   {
+      if (paths == null)
+         return;
+
+      if (excluded != null)
+      {
+         for (String excludedPath : excluded)
+         {
+            if (excludedPath.equals(path))
+               return;
+         }
+      }
+
+      if (included != null)
+      {
+         boolean include = false;
+         for (String includedPath : included)
+         {
+            if (includedPath.equals(path))
+            {
+               include = true;
+               break;
+            }
+         }
+         if (include == false)
+            return;
+      }
+      
+      ClassLoader parent = getClass().getClassLoader();
+      for (int i = 0; i < paths.length; ++i)
+      {
+         if (path.startsWith(paths[i]))
+         {
+            Enumeration<URL> enumeration = parent.getResources(path);
+            while (enumeration.hasMoreElements())
+               urls.add(enumeration.nextElement());
+         }
+      }
+   }
+   
+   @Override
+   protected ProtectionDomain getProtectionDomain(String className, String path)
+   {
+      final Class clazz;
+      try
+      {
+         clazz = getClass().getClassLoader().loadClass(className);
+      }
+      catch (ClassNotFoundException e)
+      {
+         throw new Error("Could not load class: " + className, e);
+      }
+      return AccessController.doPrivileged(new PrivilegedAction<ProtectionDomain>()
+      {
+         public ProtectionDomain run()
+         {
+            return clazz.getProtectionDomain();
+         }
+      }, getAccessControlContext());
+   }
+
+   /*
+    * Overridden to not expose classes in the nonJDKFilter
+    * this is so we don't expose classes from the classpath
+    * that we haven't explicitly declared in the policy
+    */
+   @Override
+   protected ClassLoader isJDKRequest(String name)
+   {
+      if (nonJDKFilter.matches(name))
+         return null;
+      return super.isJDKRequest(name);
+   }
+
+   @Override 
+   public void toLongString(StringBuilder builder)
+   {
+      builder.append(" name=").append(name);
+      if (paths != null)
+         builder.append(" paths=").append(Arrays.asList(paths));
+      if (included != null)
+         builder.append(" included=").append(Arrays.asList(included));
+      if (excluded != null)
+         builder.append(" excluded=").append(Arrays.asList(excluded));
+      super.toLongString(builder);
+   }
+   
+   
+   @Override
+   public String toString()
+   {
+      return name;
+   }
+}

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	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -22,14 +22,14 @@
 package org.jboss.test.classloader;
 
 import org.jboss.classloader.plugins.ClassLoaderUtils;
-import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
 import org.jboss.classloader.spi.ClassLoaderDomain;
 import org.jboss.classloader.spi.ClassLoaderPolicy;
 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.AbstractTestCaseWithSetup;
 import org.jboss.test.AbstractTestDelegate;
-import org.jboss.test.classloader.support.MockClassLoaderPolicy;
 
 /**
  * AbstractClassLoaderTest.
@@ -41,9 +41,7 @@
 {
    public static AbstractTestDelegate getDelegate(Class<?> clazz)
    {
-      AbstractTestDelegate delegate = new AbstractTestDelegate(clazz);
-      delegate.enableSecurity = true;
-      return delegate;
+      return new AbstractTestDelegate(clazz);
    }
 
    @Override
@@ -57,11 +55,11 @@
    {
       super(name);
    }
-   
+
    protected ClassLoaderSystem createClassLoaderSystem()
    {
       // We always create a new one to avoid things in the default domain leaking across tests
-      return new DefaultClassLoaderSystem();
+      return MockClassLoaderHelper.createMockClassLoaderSystem();
    }
    
    protected ClassLoaderSystem createClassLoaderSystemWithModifiedBootstrap()
@@ -82,6 +80,16 @@
       return system.registerClassLoaderPolicy(policy);
    }
    
+   protected MockClassLoaderPolicy createMockClassLoaderPolicy()
+   {
+      return createMockClassLoaderPolicy(null);
+   }
+   
+   protected MockClassLoaderPolicy createMockClassLoaderPolicy(String name)
+   {
+      return MockClassLoaderHelper.createMockClassLoaderPolicy(name);
+   }
+   
    protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system)
    {
       return createAndRegisterMockClassLoader(system, "mock");
@@ -89,8 +97,7 @@
    
    protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, String name)
    {
-      MockClassLoaderPolicy policy = new MockClassLoaderPolicy(name);
-      return system.registerClassLoaderPolicy(policy);
+      return MockClassLoaderHelper.createAndRegisterMockClassLoader(system, null, name);
    }
    
    protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, ClassLoaderDomain domain)
@@ -100,8 +107,7 @@
    
    protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, ClassLoaderDomain domain, String name)
    {
-      MockClassLoaderPolicy policy = new MockClassLoaderPolicy(name);
-      return system.registerClassLoaderPolicy(domain, policy);
+      return MockClassLoaderHelper.createAndRegisterMockClassLoader(system, domain, name);
    }
    
    protected void assertClassEquality(Class<?> expected, Class<?> actual)
@@ -116,18 +122,8 @@
    
    protected void assertClassLoader(Class<?> clazz, ClassLoader expected)
    {
-      ClassLoader classLoader = null;
-      SecurityManager sm = suspendSecurity();
-      try
-      {
-         classLoader = clazz.getClassLoader();
-      }
-      finally
-      {
-         resumeSecurity(sm);
-      }
-      getLog().debug("Should be the expected classloader expected=" + expected + " actual=" + classLoader);
-      assertEquals("Should be the expected classloader", expected, classLoader);
+      boolean result = MockClassLoaderHelper.isExpectedClassLoader(clazz, expected);
+      assertTrue(ClassLoaderUtils.classToString(clazz) + " should have expected classloader=" + expected, result);
    }
    
    protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start)

Copied: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTestWithSecurity.java (from rev 62673, projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java)
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTestWithSecurity.java	                        (rev 0)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTestWithSecurity.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classloader;
+
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.test.security.NothingPolicyPlugin;
+
+/**
+ * AbstractClassLoaderTest.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractClassLoaderTestWithSecurity extends AbstractClassLoaderTest
+{
+   public static AbstractTestDelegate getDelegate(Class<?> clazz)
+   {
+      AbstractTestDelegate delegate = new AbstractTestDelegate(clazz);
+      delegate.enableSecurity = true;
+      delegate.securityPolicyName = NothingPolicyPlugin.class.getName();
+      return delegate;
+   }
+
+   public AbstractClassLoaderTestWithSecurity(String name)
+   {
+      super(name);
+   }
+}

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/ClassLoaderAllTestSuite.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/ClassLoaderAllTestSuite.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/ClassLoaderAllTestSuite.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -26,7 +26,7 @@
 import junit.textui.TestRunner;
 
 import org.jboss.test.classloader.bootstrap.BootstrapTestSuite;
-import org.jboss.test.classloader.delegate.test.DelegateUnitTestCase;
+import org.jboss.test.classloader.delegate.DelegateTestSuite;
 import org.jboss.test.classloader.old.OldTestSuite;
 import org.jboss.test.classloader.system.ClassLoadingSystemTestSuite;
 
@@ -59,7 +59,7 @@
 
       suite.addTest(ClassLoadingSystemTestSuite.suite());
       suite.addTest(BootstrapTestSuite.suite());
-      suite.addTest(DelegateUnitTestCase.suite());
+      suite.addTest(DelegateTestSuite.suite());
       suite.addTest(OldTestSuite.suite());
       
       return suite;

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/bootstrap/test/ModifiedBootstrapUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/bootstrap/test/ModifiedBootstrapUnitTestCase.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/bootstrap/test/ModifiedBootstrapUnitTestCase.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -28,7 +28,7 @@
 import junit.framework.Test;
 
 import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.test.classloader.AbstractClassLoaderTest;
+import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
 
 /**
  * ModifiedBootstrapUnitTestCase.
@@ -36,7 +36,7 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
-public class ModifiedBootstrapUnitTestCase extends AbstractClassLoaderTest
+public class ModifiedBootstrapUnitTestCase extends AbstractClassLoaderTestWithSecurity
 {
    public static Test suite()
    {

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/delegate/test/DelegateUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/delegate/test/DelegateUnitTestCase.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/delegate/test/DelegateUnitTestCase.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -34,14 +34,14 @@
 import org.jboss.classloader.spi.ClassLoaderSystem;
 import org.jboss.classloader.spi.DelegateLoader;
 import org.jboss.classloader.spi.filter.FilteredDelegateLoader;
-import org.jboss.test.classloader.AbstractClassLoaderTest;
+import org.jboss.classloader.test.support.MockClassLoaderPolicy;
+import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
 import org.jboss.test.classloader.delegate.support.a.TestA1;
 import org.jboss.test.classloader.delegate.support.a.TestADelegateClassLoaderDomain;
 import org.jboss.test.classloader.delegate.support.a.TestAbstractFactory;
 import org.jboss.test.classloader.delegate.support.a.TestSleep;
 import org.jboss.test.classloader.delegate.support.b.TestB1;
 import org.jboss.test.classloader.delegate.support.b.TestFactoryImplementation;
-import org.jboss.test.classloader.support.MockClassLoaderPolicy;
 import org.jboss.test.thread.TestThread;
 
 /**
@@ -50,7 +50,7 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
-public class DelegateUnitTestCase extends AbstractClassLoaderTest
+public class DelegateUnitTestCase extends AbstractClassLoaderTestWithSecurity
 {
    public static Test suite()
    {
@@ -66,11 +66,11 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
+      MockClassLoaderPolicy pb = createMockClassLoaderPolicy("B");
       pb.setPaths(TestB1.class);
       ClassLoader b = system.registerClassLoaderPolicy(pb);
 
-      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
+      MockClassLoaderPolicy pa = createMockClassLoaderPolicy("A");
       pa.setPaths(TestA1.class);
       ClassLoader a = system.registerClassLoaderPolicy(pa);
       
@@ -82,11 +82,11 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
+      MockClassLoaderPolicy pb = createMockClassLoaderPolicy("B");
       pb.setPaths(TestB1.class);
       ClassLoader b = system.registerClassLoaderPolicy(pb);
 
-      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
+      MockClassLoaderPolicy pa = createMockClassLoaderPolicy("A");
       pa.setPaths(TestA1.class);
       pa.setDelegates(Collections.singletonList(new FilteredDelegateLoader(pb)));
       ClassLoader a = system.registerClassLoaderPolicy(pa);
@@ -101,10 +101,10 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
       
-      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
+      MockClassLoaderPolicy pb = createMockClassLoaderPolicy("B");
       pb.setPaths(TestB1.class);
 
-      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
+      MockClassLoaderPolicy pa = createMockClassLoaderPolicy("A");
       pa.setPaths(TestA1.class);
 
       List<DelegateLoader> delegates = new ArrayList<DelegateLoader>();
@@ -127,30 +127,22 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
+      MockClassLoaderPolicy pb = createMockClassLoaderPolicy("B");
       pb.setPaths(ClassLoaderDomain.class);
       ClassLoader b = system.registerClassLoaderPolicy(pb);
 
-      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
+      MockClassLoaderPolicy pa = createMockClassLoaderPolicy("A");
       pa.setPaths(TestADelegateClassLoaderDomain.class);
       pa.setDelegates(Collections.singletonList(new FilteredDelegateLoader(pb)));
       ClassLoader a = system.registerClassLoaderPolicy(pa);
       
       Class<?> fromB = assertLoadClass(ClassLoaderDomain.class, b, false);
+      Class<?> fromA = assertLoadClass(ClassLoaderDomain.class, a, b, false);
+      
       Class<?> delegate = assertLoadClass(TestADelegateClassLoaderDomain.class, a, false);
       
-      SecurityManager sm = suspendSecurity();
-      try
-      {
-         System.out.println(delegate.getProtectionDomain());
-      }
-      finally
-      {
-         resumeSecurity(sm);
-      }
-      
       Method method = delegate.getMethod("getSomething", null);
-      Class<?> fromA = method.getReturnType();
+      fromA = method.getReturnType();
       assertNotNull(fromA);
       assertClassLoader(fromA, b);
       
@@ -161,10 +153,10 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
       
-      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
+      MockClassLoaderPolicy pb = createMockClassLoaderPolicy("B");
       pb.setPaths(TestB1.class);
 
-      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
+      MockClassLoaderPolicy pa = createMockClassLoaderPolicy("A");
       pa.setPaths(TestA1.class);
 
       List<DelegateLoader> delegates = new ArrayList<DelegateLoader>();
@@ -190,10 +182,10 @@
          getLog().debug("Attempt: " + i);
          ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
          
-         MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
+         MockClassLoaderPolicy pb = createMockClassLoaderPolicy("B");
          pb.setPaths(TestB1.class);
 
-         MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
+         MockClassLoaderPolicy pa = createMockClassLoaderPolicy("A");
          pa.setPaths(TestA1.class);
 
          List<DelegateLoader> delegates = new ArrayList<DelegateLoader>();

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/support/Base.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/support/Base.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/support/Base.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -32,10 +32,5 @@
 {
    public static void run() throws Exception
    {
-      System.out.println("Base.CS: "+Base.class.getProtectionDomain().getCodeSource());
-      Class2 o2 = new Class2();
-      System.out.println("o2.CS: "+o2.getClass().getProtectionDomain().getCodeSource());
-      Class0 o0 = o2.get0();
-      System.out.println("o0.CS: "+o0.getClass().getProtectionDomain().getCodeSource());
    }
 }

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/support/UserOfBase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/support/UserOfBase.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/support/UserOfBase.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -32,13 +32,5 @@
 {
    public void testBase(Support s)
    {
-      // System.out.println("testBase.Base.class.CS: "
-      //  + Base.class.getProtectionDomain().getCodeSource());
-      // Base^L0 = Base^L1
-      Base b = s.getBase();
-      System.out.println("testBase.Base.CS: "
-         + b.getClass().getProtectionDomain().getCodeSource());
-      System.out.println("testBase.Support.CS: "
-         + s.getClass().getProtectionDomain().getCodeSource());
    }
 }

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/CircularLoadUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/CircularLoadUnitTestCase.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/CircularLoadUnitTestCase.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -27,7 +27,8 @@
 import junit.framework.Test;
 
 import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.test.classloader.AbstractClassLoaderTest;
+import org.jboss.classloader.test.support.MockClassLoaderPolicy;
+import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
 import org.jboss.test.classloader.old.support.Base;
 import org.jboss.test.classloader.old.support.Class0;
 import org.jboss.test.classloader.old.support.Class1;
@@ -39,7 +40,6 @@
 import org.jboss.test.classloader.old.support.UserOfLoginInfo;
 import org.jboss.test.classloader.old.support.UserOfUsrMgr;
 import org.jboss.test.classloader.old.support.UsrMgr;
-import org.jboss.test.classloader.support.MockClassLoaderPolicy;
 
 /**
  * CircularLoadUnitTestCase.
@@ -49,7 +49,7 @@
  * @author Scott.Stark at jboss.org
  * @version $Revision: 1.1 $
  */
-public class CircularLoadUnitTestCase extends AbstractClassLoaderTest
+public class CircularLoadUnitTestCase extends AbstractClassLoaderTestWithSecurity
 {
    public CircularLoadUnitTestCase(String name)
    {
@@ -65,19 +65,19 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy le0 = new MockClassLoaderPolicy("le0");
+      MockClassLoaderPolicy le0 = createMockClassLoaderPolicy("le0");
       le0.setPathsAndPackageNames(Base.class);
       le0.setImportAll(true);
       le0.setIncluded(Base.class, UserOfBase.class);
       ClassLoader cl0 = system.registerClassLoaderPolicy(le0);
 
-      MockClassLoaderPolicy le1 = new MockClassLoaderPolicy("le1");
+      MockClassLoaderPolicy le1 = createMockClassLoaderPolicy("le1");
       le1.setPathsAndPackageNames(Base.class);
       le1.setImportAll(true);
       le1.setIncluded(Base.class, Support.class);
       ClassLoader cl1 = system.registerClassLoaderPolicy(le1);
 
-      MockClassLoaderPolicy all = new MockClassLoaderPolicy("all");
+      MockClassLoaderPolicy all = createMockClassLoaderPolicy("all");
       all.setPackageNames(Base.class);
       all.setImportAll(true);
       ClassLoader cl2 = system.registerClassLoaderPolicy(all);
@@ -113,7 +113,7 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy mock = new MockClassLoaderPolicy();
+      MockClassLoaderPolicy mock = createMockClassLoaderPolicy();
       mock.setPathsAndPackageNames(Base.class);
       mock.setIncluded(LoginInfo.class, UsrMgr.class, UserOfUsrMgr.class, UserOfLoginInfo.class);
       ClassLoader cl = system.registerClassLoaderPolicy(mock);
@@ -135,7 +135,6 @@
          Constructor ctor1 = c1.getConstructor(ctorsig1);
          Object[] args1 = {"jduke", "theduke"};
          Object o1 = ctor1.newInstance(args1);
-         getLog().info("UserOfUsrMgr.CS: "+o1.getClass().getProtectionDomain().getCodeSource());
 
          // Now invoke UserOfUsrMgr.changePassword(char[] password)
          char[] password = "theduke2".toCharArray();
@@ -155,13 +154,13 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy any0 = new MockClassLoaderPolicy("any0");
+      MockClassLoaderPolicy any0 = createMockClassLoaderPolicy("any0");
       any0.setPathsAndPackageNames(Support.class);
       any0.setImportAll(true);
       any0.setIncluded(Base.class, Class0.class, Class2.class);
       ClassLoader cl0 = system.registerClassLoaderPolicy(any0);
       
-      MockClassLoaderPolicy any1 = new MockClassLoaderPolicy("any1");
+      MockClassLoaderPolicy any1 = createMockClassLoaderPolicy("any1");
       any1.setPathsAndPackageNames(Support.class);
       any1.setImportAll(true);
       any1.setIncluded(Class0.class, Class2.class);
@@ -178,13 +177,13 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy j0 = new MockClassLoaderPolicy("j0");
+      MockClassLoaderPolicy j0 = createMockClassLoaderPolicy("j0");
       j0.setPathsAndPackageNames(Support.class);
       j0.setImportAll(true);
       j0.setIncluded(Class0.class);
       ClassLoader cl0 = system.registerClassLoaderPolicy(j0);
 
-      MockClassLoaderPolicy j1 = new MockClassLoaderPolicy("j1");
+      MockClassLoaderPolicy j1 = createMockClassLoaderPolicy("j1");
       j1.setPathsAndPackageNames(Support.class);
       j1.setImportAll(true);
       j1.setIncluded(Class2.class);
@@ -212,13 +211,13 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy j0 = new MockClassLoaderPolicy("j0");
+      MockClassLoaderPolicy j0 = createMockClassLoaderPolicy("j0");
       j0.setPathsAndPackageNames(Support.class);
       j0.setImportAll(true);
       j0.setIncluded(Class0.class);
       ClassLoader cl0 = system.registerClassLoaderPolicy(j0);
 
-      MockClassLoaderPolicy j3 = new MockClassLoaderPolicy("j3");
+      MockClassLoaderPolicy j3 = createMockClassLoaderPolicy("j3");
       j3.setPathsAndPackageNames(Support.class);
       j3.setImportAll(true);
       j3.setIncluded(Derived.class);
@@ -236,19 +235,19 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy j0 = new MockClassLoaderPolicy("j0");
+      MockClassLoaderPolicy j0 = createMockClassLoaderPolicy("j0");
       j0.setPathsAndPackageNames(Support.class);
       j0.setImportAll(true);
       j0.setIncluded(Class0.class);
       ClassLoader cl0 = system.registerClassLoaderPolicy(j0);
 
-      MockClassLoaderPolicy j1 = new MockClassLoaderPolicy("j1");
+      MockClassLoaderPolicy j1 = createMockClassLoaderPolicy("j1");
       j1.setPathsAndPackageNames(Support.class);
       j1.setImportAll(true);
       j1.setIncluded(Class1.class);
       ClassLoader cl1 = system.registerClassLoaderPolicy(j1);
 
-      MockClassLoaderPolicy j2 = new MockClassLoaderPolicy("j2");
+      MockClassLoaderPolicy j2 = createMockClassLoaderPolicy("j2");
       j2.setPathsAndPackageNames(Support.class);
       j2.setImportAll(true);
       j2.setIncluded(Class2.class);

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/CircularityErrorUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/CircularityErrorUnitTestCase.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/CircularityErrorUnitTestCase.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -28,10 +28,10 @@
 
 import org.jboss.classloader.plugins.ClassLoaderUtils;
 import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.test.support.MockClassLoaderPolicy;
 import org.jboss.test.classloader.AbstractClassLoaderTest;
 import org.jboss.test.classloader.old.support.Derived;
 import org.jboss.test.classloader.old.support.Support;
-import org.jboss.test.classloader.support.MockClassLoaderPolicy;
 
 /**
  * CircularityErrorUnitTestCase.

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/ConcurrentLoaderUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/ConcurrentLoaderUnitTestCase.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/ConcurrentLoaderUnitTestCase.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -29,9 +29,9 @@
 import junit.framework.Test;
 
 import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.test.classloader.AbstractClassLoaderTest;
+import org.jboss.classloader.test.support.MockClassLoaderPolicy;
+import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
 import org.jboss.test.classloader.old.support.Support;
-import org.jboss.test.classloader.support.MockClassLoaderPolicy;
 
 /**
  * ConcurrentLoaderUnitTestCase.
@@ -40,7 +40,7 @@
  * @author Scott.Stark at jboss.org
  * @version $Revision: 1.1 $
  */
-public class ConcurrentLoaderUnitTestCase extends AbstractClassLoaderTest
+public class ConcurrentLoaderUnitTestCase extends AbstractClassLoaderTestWithSecurity
 {
    public Object lock = new Object ();
 
@@ -67,7 +67,7 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
       
-      MockClassLoaderPolicy policy = new MockClassLoaderPolicy();
+      MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
       policy.setPaths(Support.class);
       cl = system.registerClassLoaderPolicy(policy);
       

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/LoaderUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/LoaderUnitTestCase.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/LoaderUnitTestCase.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -24,9 +24,9 @@
 import junit.framework.Test;
 
 import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.test.classloader.AbstractClassLoaderTest;
+import org.jboss.classloader.test.support.MockClassLoaderPolicy;
+import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
 import org.jboss.test.classloader.old.support.Support;
-import org.jboss.test.classloader.support.MockClassLoaderPolicy;
 
 /**
  * LoaderUnitTestCase.
@@ -35,7 +35,7 @@
  * @author Scott.Stark at jboss.org
  * @version $Revision: 1.1 $
  */
-public class LoaderUnitTestCase extends AbstractClassLoaderTest
+public class LoaderUnitTestCase extends AbstractClassLoaderTestWithSecurity
 {
    public static Test suite()
    {
@@ -51,7 +51,7 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy policy = new MockClassLoaderPolicy();
+      MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
       policy.setPaths(Support.class);
       final ClassLoader cl = system.registerClassLoaderPolicy(policy);
 
@@ -72,7 +72,7 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy policy = new MockClassLoaderPolicy();
+      MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
       policy.setPaths(Support.class);
       ClassLoader cl = system.registerClassLoaderPolicy(policy);
 

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/ClassLoadingSystemTestSuite.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/ClassLoadingSystemTestSuite.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/ClassLoadingSystemTestSuite.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -21,6 +21,7 @@
  */
 package org.jboss.test.classloader.system;
 
+import org.jboss.test.classloader.system.test.ClassLoadingSystemNoSecurityUnitTestCase;
 import org.jboss.test.classloader.system.test.ClassLoadingSystemUnitTestCase;
 
 import junit.framework.Test;
@@ -54,6 +55,7 @@
    {
       TestSuite suite = new TestSuite("ClassLoading System Tests");
 
+      suite.addTest(ClassLoadingSystemNoSecurityUnitTestCase.suite());
       suite.addTest(ClassLoadingSystemUnitTestCase.suite());
       
       return suite;

Added: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemNoSecurityUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemNoSecurityUnitTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemNoSecurityUnitTestCase.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classloader.system.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.test.classloader.AbstractClassLoaderTest;
+
+/**
+ * ClassLoadingSystemUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassLoadingSystemNoSecurityUnitTestCase extends AbstractClassLoaderTest
+{
+   public static Test suite()
+   {
+      return suite(ClassLoadingSystemNoSecurityUnitTestCase.class);
+   }
+
+   public ClassLoadingSystemNoSecurityUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public void testGetInstance() throws Exception
+   {
+      ClassLoaderSystem instance = ClassLoaderSystem.getInstance();
+      assertNotNull(instance);
+   }
+}

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemUnitTestCase.java	2007-05-01 13:53:32 UTC (rev 62699)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemUnitTestCase.java	2007-05-01 14:43:42 UTC (rev 62700)
@@ -28,7 +28,7 @@
 
 import org.jboss.classloader.spi.ClassLoaderDomain;
 import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.test.classloader.AbstractClassLoaderTest;
+import org.jboss.test.classloader.AbstractClassLoaderTestWithSecurity;
 import org.jboss.test.classloader.system.support.MockClassLoaderDomain;
 import org.jboss.test.classloader.system.support.MockClassLoaderSystem;
 
@@ -38,7 +38,7 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
-public class ClassLoadingSystemUnitTestCase extends AbstractClassLoaderTest
+public class ClassLoadingSystemUnitTestCase extends AbstractClassLoaderTestWithSecurity
 {
    public static Test suite()
    {
@@ -50,12 +50,6 @@
       super(name);
    }
    
-   public void testGetInstance() throws Exception
-   {
-      ClassLoaderSystem instance = ClassLoaderSystem.getInstance();
-      assertNotNull(instance);
-   }
-   
    public void testDefaultDomain() throws Exception
    {
       ClassLoaderDomain domain = createClassLoaderSystem().getDefaultDomain();




More information about the jboss-cvs-commits mailing list