[jboss-cvs] JBossAS SVN: r62673 - in projects/microcontainer/trunk/classloader/src: tests/org/jboss/test/classloader and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Apr 30 18:39:25 EDT 2007


Author: adrian at jboss.org
Date: 2007-04-30 18:39:24 -0400 (Mon, 30 Apr 2007)
New Revision: 62673

Modified:
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoadingTask.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.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/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/support/MockClassLoaderPolicy.java
Log:
Fix the suspension of the security manager from the MockClassLoaderPolicy
which does not work properly with multiple threads doing it.

Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoadingTask.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoadingTask.java	2007-04-30 22:34:51 UTC (rev 62672)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoadingTask.java	2007-04-30 22:39:24 UTC (rev 62673)
@@ -457,7 +457,7 @@
    }
    
    /**
-    * Get the protected domain for a class
+    * Get the protection domain for a class
     * 
     * @param clazz the class
     * @return the protected domain or null if it doesn't have one

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-04-30 22:34:51 UTC (rev 62672)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java	2007-04-30 22:39:24 UTC (rev 62673)
@@ -21,8 +21,6 @@
  */
 package org.jboss.test.classloader;
 
-import java.security.ProtectionDomain;
-
 import org.jboss.classloader.plugins.ClassLoaderUtils;
 import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
 import org.jboss.classloader.spi.ClassLoaderDomain;
@@ -60,29 +58,6 @@
       super(name);
    }
    
-   // TODO the suspension of the security manager
-   // does not play well with multi-threaded tests.
-   // We really need to give this class access to getClassLoader()
-   // and getProtectionDomain() which means figuring how Scott's
-   // properties file works in the Security policy plugin
-   public ProtectionDomain getProtectionDomain(String name)
-   {
-      SecurityManager sm = suspendSecurity();
-      try
-      {
-         Class<?> clazz = getClass().getClassLoader().loadClass(name);
-         return clazz.getProtectionDomain();
-      }
-      catch (ClassNotFoundException e)
-      {
-         throw new Error("Class not found " + name, e);
-      }
-      finally
-      {
-         resumeSecurity(sm);
-      }
-   }
-   
    protected ClassLoaderSystem createClassLoaderSystem()
    {
       // We always create a new one to avoid things in the default domain leaking across tests
@@ -114,7 +89,7 @@
    
    protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, String name)
    {
-      MockClassLoaderPolicy policy = new MockClassLoaderPolicy(name, this);
+      MockClassLoaderPolicy policy = new MockClassLoaderPolicy(name);
       return system.registerClassLoaderPolicy(policy);
    }
    
@@ -125,7 +100,7 @@
    
    protected ClassLoader createAndRegisterMockClassLoader(ClassLoaderSystem system, ClassLoaderDomain domain, String name)
    {
-      MockClassLoaderPolicy policy = new MockClassLoaderPolicy(name, this);
+      MockClassLoaderPolicy policy = new MockClassLoaderPolicy(name);
       return system.registerClassLoaderPolicy(domain, policy);
    }
    

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-04-30 22:34:51 UTC (rev 62672)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/delegate/test/DelegateUnitTestCase.java	2007-04-30 22:39:24 UTC (rev 62673)
@@ -66,11 +66,11 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B", this);
+      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
       pb.setPaths(TestB1.class);
       ClassLoader b = system.registerClassLoaderPolicy(pb);
 
-      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A", this);
+      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
       pa.setPaths(TestA1.class);
       ClassLoader a = system.registerClassLoaderPolicy(pa);
       
@@ -82,11 +82,11 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B", this);
+      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
       pb.setPaths(TestB1.class);
       ClassLoader b = system.registerClassLoaderPolicy(pb);
 
-      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A", this);
+      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("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", this);
+      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
       pb.setPaths(TestB1.class);
 
-      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A", this);
+      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
       pa.setPaths(TestA1.class);
 
       List<DelegateLoader> delegates = new ArrayList<DelegateLoader>();
@@ -127,11 +127,11 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B", this);
+      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
       pb.setPaths(ClassLoaderDomain.class);
       ClassLoader b = system.registerClassLoaderPolicy(pb);
 
-      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A", this);
+      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
       pa.setPaths(TestADelegateClassLoaderDomain.class);
       pa.setDelegates(Collections.singletonList(new FilteredDelegateLoader(pb)));
       ClassLoader a = system.registerClassLoaderPolicy(pa);
@@ -161,10 +161,10 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
       
-      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B", this);
+      MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
       pb.setPaths(TestB1.class);
 
-      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A", this);
+      MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
       pa.setPaths(TestA1.class);
 
       List<DelegateLoader> delegates = new ArrayList<DelegateLoader>();
@@ -190,10 +190,10 @@
          getLog().debug("Attempt: " + i);
          ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
          
-         MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B", this);
+         MockClassLoaderPolicy pb = new MockClassLoaderPolicy("B");
          pb.setPaths(TestB1.class);
 
-         MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A", this);
+         MockClassLoaderPolicy pa = new MockClassLoaderPolicy("A");
          pa.setPaths(TestA1.class);
 
          List<DelegateLoader> delegates = new ArrayList<DelegateLoader>();

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-04-30 22:34:51 UTC (rev 62672)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/CircularLoadUnitTestCase.java	2007-04-30 22:39:24 UTC (rev 62673)
@@ -65,19 +65,19 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy le0 = new MockClassLoaderPolicy("le0", this);
+      MockClassLoaderPolicy le0 = new MockClassLoaderPolicy("le0");
       le0.setPathsAndPackageNames(Base.class);
       le0.setImportAll(true);
       le0.setIncluded(Base.class, UserOfBase.class);
       ClassLoader cl0 = system.registerClassLoaderPolicy(le0);
 
-      MockClassLoaderPolicy le1 = new MockClassLoaderPolicy("le1", this);
+      MockClassLoaderPolicy le1 = new MockClassLoaderPolicy("le1");
       le1.setPathsAndPackageNames(Base.class);
       le1.setImportAll(true);
       le1.setIncluded(Base.class, Support.class);
       ClassLoader cl1 = system.registerClassLoaderPolicy(le1);
 
-      MockClassLoaderPolicy all = new MockClassLoaderPolicy("all", this);
+      MockClassLoaderPolicy all = new MockClassLoaderPolicy("all");
       all.setPackageNames(Base.class);
       all.setImportAll(true);
       ClassLoader cl2 = system.registerClassLoaderPolicy(all);
@@ -113,7 +113,7 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy mock = new MockClassLoaderPolicy(this);
+      MockClassLoaderPolicy mock = new MockClassLoaderPolicy();
       mock.setPathsAndPackageNames(Base.class);
       mock.setIncluded(LoginInfo.class, UsrMgr.class, UserOfUsrMgr.class, UserOfLoginInfo.class);
       ClassLoader cl = system.registerClassLoaderPolicy(mock);
@@ -155,13 +155,13 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy any0 = new MockClassLoaderPolicy("any0", this);
+      MockClassLoaderPolicy any0 = new MockClassLoaderPolicy("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", this);
+      MockClassLoaderPolicy any1 = new MockClassLoaderPolicy("any1");
       any1.setPathsAndPackageNames(Support.class);
       any1.setImportAll(true);
       any1.setIncluded(Class0.class, Class2.class);
@@ -178,13 +178,13 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy j0 = new MockClassLoaderPolicy("j0", this);
+      MockClassLoaderPolicy j0 = new MockClassLoaderPolicy("j0");
       j0.setPathsAndPackageNames(Support.class);
       j0.setImportAll(true);
       j0.setIncluded(Class0.class);
       ClassLoader cl0 = system.registerClassLoaderPolicy(j0);
 
-      MockClassLoaderPolicy j1 = new MockClassLoaderPolicy("j1", this);
+      MockClassLoaderPolicy j1 = new MockClassLoaderPolicy("j1");
       j1.setPathsAndPackageNames(Support.class);
       j1.setImportAll(true);
       j1.setIncluded(Class2.class);
@@ -212,13 +212,13 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy j0 = new MockClassLoaderPolicy("j0", this);
+      MockClassLoaderPolicy j0 = new MockClassLoaderPolicy("j0");
       j0.setPathsAndPackageNames(Support.class);
       j0.setImportAll(true);
       j0.setIncluded(Class0.class);
       ClassLoader cl0 = system.registerClassLoaderPolicy(j0);
 
-      MockClassLoaderPolicy j3 = new MockClassLoaderPolicy("j3", this);
+      MockClassLoaderPolicy j3 = new MockClassLoaderPolicy("j3");
       j3.setPathsAndPackageNames(Support.class);
       j3.setImportAll(true);
       j3.setIncluded(Derived.class);
@@ -236,19 +236,19 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy j0 = new MockClassLoaderPolicy("j0", this);
+      MockClassLoaderPolicy j0 = new MockClassLoaderPolicy("j0");
       j0.setPathsAndPackageNames(Support.class);
       j0.setImportAll(true);
       j0.setIncluded(Class0.class);
       ClassLoader cl0 = system.registerClassLoaderPolicy(j0);
 
-      MockClassLoaderPolicy j1 = new MockClassLoaderPolicy("j1", this);
+      MockClassLoaderPolicy j1 = new MockClassLoaderPolicy("j1");
       j1.setPathsAndPackageNames(Support.class);
       j1.setImportAll(true);
       j1.setIncluded(Class1.class);
       ClassLoader cl1 = system.registerClassLoaderPolicy(j1);
 
-      MockClassLoaderPolicy j2 = new MockClassLoaderPolicy("j2", this);
+      MockClassLoaderPolicy j2 = new MockClassLoaderPolicy("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-04-30 22:34:51 UTC (rev 62672)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/CircularityErrorUnitTestCase.java	2007-04-30 22:39:24 UTC (rev 62673)
@@ -66,7 +66,7 @@
       // Thread1 throws ClassCircularityError
 
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
-      final ClassLoader cl = system.registerClassLoaderPolicy(new TestClassLoaderPolicy(this));
+      final ClassLoader cl = system.registerClassLoaderPolicy(new TestClassLoaderPolicy());
 
       Class cls = assertLoadClass(Support.class, cl);
 
@@ -115,9 +115,8 @@
 
    public class TestClassLoaderPolicy extends MockClassLoaderPolicy
    {
-      public TestClassLoaderPolicy(AbstractClassLoaderTest test)
+      public TestClassLoaderPolicy()
       {
-         super(test);
          setPaths(Support.class);
       }
 

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-04-30 22:34:51 UTC (rev 62672)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/ConcurrentLoaderUnitTestCase.java	2007-04-30 22:39:24 UTC (rev 62673)
@@ -67,7 +67,7 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
       
-      MockClassLoaderPolicy policy = new MockClassLoaderPolicy(this);
+      MockClassLoaderPolicy policy = new MockClassLoaderPolicy();
       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-04-30 22:34:51 UTC (rev 62672)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/old/test/LoaderUnitTestCase.java	2007-04-30 22:39:24 UTC (rev 62673)
@@ -51,7 +51,7 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy policy = new MockClassLoaderPolicy(this);
+      MockClassLoaderPolicy policy = new MockClassLoaderPolicy();
       policy.setPaths(Support.class);
       final ClassLoader cl = system.registerClassLoaderPolicy(policy);
 
@@ -72,7 +72,7 @@
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
 
-      MockClassLoaderPolicy policy = new MockClassLoaderPolicy(this);
+      MockClassLoaderPolicy policy = new MockClassLoaderPolicy();
       policy.setPaths(Support.class);
       ClassLoader cl = system.registerClassLoaderPolicy(policy);
 

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/support/MockClassLoaderPolicy.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/support/MockClassLoaderPolicy.java	2007-04-30 22:34:51 UTC (rev 62672)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/support/MockClassLoaderPolicy.java	2007-04-30 22:39:24 UTC (rev 62673)
@@ -23,6 +23,8 @@
 
 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;
@@ -32,7 +34,6 @@
 import org.jboss.classloader.plugins.ClassLoaderUtils;
 import org.jboss.classloader.spi.ClassLoaderPolicy;
 import org.jboss.classloader.spi.DelegateLoader;
-import org.jboss.test.classloader.AbstractClassLoaderTest;
 
 /**
  * MockClassLoaderPolicy.
@@ -56,19 +57,16 @@
    
    private boolean importAll;
    
-   private AbstractClassLoaderTest test;
-   
-   public MockClassLoaderPolicy(AbstractClassLoaderTest test)
+   public MockClassLoaderPolicy()
    {
-      this(null, test);
+      this(null);
    }
 
-   public MockClassLoaderPolicy(String name, AbstractClassLoaderTest test)
+   public MockClassLoaderPolicy(String name)
    {
       if (name == null)
          name = "mock";
       this.name = name;
-      this.test = test;
    }
    
    @Override
@@ -253,7 +251,22 @@
    @Override
    protected ProtectionDomain getProtectionDomain(String className, String path)
    {
-      return test.getProtectionDomain(className);
+      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();
+         }
+      });
    }
 
    /*




More information about the jboss-cvs-commits mailing list