[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