[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