Author: kohsuke
Date: Fri Aug 12 21:45:47 2005
New Revision: 232416
URL: http://svn.apache.org/viewcvs?rev=232416&view=rev
Log:
moved the original ContinuationClassLoader as a TestClassLoader into the test
module.
Added:
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/TestClassLoader.java
- copied, changed from r232414,
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/ContinuationClassLoader.java
Removed:
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/ContinuationClassLoader.java
Modified:
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/ContinuationURLClassLoader.java
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/AbstractClassLoaderTestCase.java
Modified:
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/ContinuationURLClassLoader.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/ContinuationURLClassLoader.java?rev=232416&r1=232415&r2=232416&view=diff
==============================================================================
---
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/ContinuationURLClassLoader.java
(original)
+++
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/ContinuationURLClassLoader.java
Fri Aug 12 21:45:47 2005
@@ -21,8 +21,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
-import java.net.URL;
import java.net.URLClassLoader;
+import java.net.URL;
import java.security.ProtectionDomain;
import java.util.ArrayList;
import java.util.Collection;
@@ -34,6 +34,7 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.commons.javaflow.bytecode.transformation.ClassTransformer;
+import
org.apache.commons.javaflow.bytecode.transformation.bcel.BcelClassTransformer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -42,7 +43,7 @@
*
* <p>
* This <tt>ClassLoader</tt> works like an <tt>URLClassLoader</tt>
- * in the sense that it locates class files from specified [EMAIL PROTECTED]
URL}s.
+ * in the sense that it locates class files from specified [EMAIL PROTECTED]
File}s.
* But instead of simply loading classes into the VM, this class loader
* performs the bytecode instrumentation necessary for javaflow.
*
@@ -159,7 +160,7 @@
/**
* The components of the classpath that the classloader searches
- * for classes.
+ * for classes. [EMAIL PROTECTED] List} of [EMAIL PROTECTED] File}s.
*/
private List pathComponents = new ArrayList();
@@ -203,7 +204,24 @@
/**
- * Creates a classloader for the given project using the classpath given.
+ * Creates a classloader using the classpath given.
+ *
+ * @param parent The parent classloader to which unsatisfied loading
+ * attempts are delegated. May be <code>null</code>,
+ * in which case the classloader which loaded this
+ * class is used as the parent.
+ * @param classpath
+ * a [EMAIL PROTECTED] Collection} of [EMAIL PROTECTED] File}s.
+ * the classpath to use to load the classes.
+ * May be <code>null</code>, in which case no path
+ * elements are set up to start with.
+ */
+ public ContinuationURLClassLoader(ClassLoader parent, Collection
classpath) {
+ this(parent,new BcelClassTransformer(),classpath);
+ }
+
+ /**
+ * Creates a classloader using the classpath given.
*
* @param parent The parent classloader to which unsatisfied loading
* attempts are delegated. May be <code>null</code>,
@@ -257,7 +275,7 @@
/**
* Add a file to the path
*
- * @param pathComponent the file which is to be added to the path for
+ * @param pathComponent the URL which is to be added to the path for
* this class loader
*/
protected synchronized void addPathFile(File pathComponent) {
@@ -265,27 +283,6 @@
}
/**
- * Returns the classpath this classloader will consult.
- *
- * @return the classpath used for this classloader, with elements
- * separated by the path separator for the system.
- */
- public synchronized String getClasspath() {
- StringBuffer sb = new StringBuffer();
- boolean firstPass = true;
- for (Iterator itr = pathComponents.iterator(); itr.hasNext();) {
- File file = (File) itr.next();
- if (!firstPass) {
- sb.append(System.getProperty("path.separator"));
- } else {
- firstPass = false;
- }
- sb.append(file.getAbsolutePath());
- }
- return sb.toString();
- }
-
- /**
* Sets whether this classloader should run in isolated mode. In
* isolated mode, classes not found on the given classpath will
* not be referred to the parent class loader but will cause a
@@ -817,11 +814,11 @@
}
/**
- * Indicate if the given file is in this loader's path
+ * Indicate if the given URL is in this loader's path
*
- * @param component the file which is to be checked
+ * @param component the URL which is to be checked
*
- * @return true if the file is in the class path
+ * @return true if the URL is in the class path
*/
protected synchronized boolean isInPath(File component) {
for (Iterator itr = pathComponents.iterator(); itr.hasNext();) {
Modified:
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/AbstractClassLoaderTestCase.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/AbstractClassLoaderTestCase.java?rev=232416&r1=232415&r2=232416&view=diff
==============================================================================
---
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/AbstractClassLoaderTestCase.java
(original)
+++
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/AbstractClassLoaderTestCase.java
Fri Aug 12 21:45:47 2005
@@ -17,6 +17,7 @@
import java.lang.reflect.Method;
import java.util.Map;
+import java.net.URL;
import junit.framework.TestCase;
@@ -35,7 +36,7 @@
}
protected void call(final String methodName) throws Exception {
- final ClassLoader cl = new
ContinuationClassLoader(getClass().getClassLoader());
+ final TestClassLoader cl = new
TestClassLoader(getClass().getClassLoader());
final Class clazz = cl.loadClass(clazzName);
final Object instance = clazz.newInstance();
assertNotNull(clazz);
@@ -44,10 +45,10 @@
final Map methods = ReflectionUtils.discoverMethods(clazz);
assertNotNull(methods);
assertTrue(methods.size() > 0);
-
+
Thread.currentThread().setContextClassLoader(cl);
-
- final Method method = (Method) methods.get(methodName);
+
+ final Method method = (Method) methods.get(methodName);
method.invoke(instance, new Object[] { });
}
Copied:
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/TestClassLoader.java
(from r232414,
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/ContinuationClassLoader.java)
URL:
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/TestClassLoader.java?p2=jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/TestClassLoader.java&p1=jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/ContinuationClassLoader.java&r1=232414&r2=232416&rev=232416&view=diff
==============================================================================
---
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/ContinuationClassLoader.java
(original)
+++
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/TestClassLoader.java
Fri Aug 12 21:45:47 2005
@@ -40,11 +40,10 @@
* confusing runtime errors.
*
* @author tcurdt
- * @see ContinuationURLClassLoader
*/
-public final class ContinuationClassLoader extends ClassLoader {
+public final class TestClassLoader extends ClassLoader {
- private final static Log log =
LogFactory.getLog(ContinuationClassLoader.class);
+ private final static Log log = LogFactory.getLog(TestClassLoader.class);
private ClassTransformer transformer = new BcelClassTransformer();
@@ -60,8 +59,15 @@
private String[] includeInRewriting = {
"org.apache.commons.javaflow.testcode"
};
-
- public ContinuationClassLoader(ClassLoader parent) {
+
+ /**
+ * Creates a class loader.
+ *
+ * @param parent
+ * The parent class loader. Can be null, in which case the
+ * bootstrap class loader is used as the parent class loader.
+ */
+ public TestClassLoader(ClassLoader parent) {
super(parent);
//Repository.setRepository(new ClassLoaderRepository(parent));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]