diff --git a/src/EDU/purdue/cs/bloat/file/ClassFileLoader.java b/src/EDU/purdue/cs/bloat/file/ClassFileLoader.java
index 29fd2ab..dadb1c2 100644
--- a/src/EDU/purdue/cs/bloat/file/ClassFileLoader.java
+++ b/src/EDU/purdue/cs/bloat/file/ClassFileLoader.java
@@ -56,12 +56,9 @@ public class ClassFileLoader implements ClassInfoLoader {
private static final int CACHE_LIMIT = 10;
- /**
- * Constructor. The classpath initially consists of the contents of the
- * java.class.path and sun.boot.class.path system
- * properties.
- */
- public ClassFileLoader() {
+ private ClassSource _classSource;
+
+ public ClassFileLoader(ClassSource classSource) {
outputDir = new File(".");
classpath = System.getProperty("java.class.path");
classpath += File.pathSeparator
@@ -73,6 +70,16 @@ public class ClassFileLoader implements ClassInfoLoader {
openZipFiles = new HashMap();
cache = new LinkedList();
verbose = false;
+ _classSource = classSource;
+ }
+
+ /**
+ * Constructor. The classpath initially consists of the contents of the
+ * java.class.path and sun.boot.class.path system
+ * properties.
+ */
+ public ClassFileLoader() {
+ this(new DefaultClassSource());
}
public void setVerbose(final boolean verbose) {
@@ -205,7 +212,7 @@ public class ClassFileLoader implements ClassInfoLoader {
private ClassInfo loadClassFromRessource(String name){
name = name.replaceAll("/",".");
try {
- Class clazz = Class.forName(name);
+ Class clazz = _classSource.loadClass(name);
int i = name.lastIndexOf('.');
if (i >= 0 && i < name.length()){
name = name.substring(i+1);
diff --git a/src/EDU/purdue/cs/bloat/file/ClassSource.java b/src/EDU/purdue/cs/bloat/file/ClassSource.java
new file mode 100644
index 0000000..b5ce03f
--- /dev/null
+++ b/src/EDU/purdue/cs/bloat/file/ClassSource.java
@@ -0,0 +1,5 @@
+package EDU.purdue.cs.bloat.file;
+
+public interface ClassSource {
+ Class loadClass(String name) throws ClassNotFoundException ;
+}
diff --git a/src/EDU/purdue/cs/bloat/file/DefaultClassSource.java b/src/EDU/purdue/cs/bloat/file/DefaultClassSource.java
new file mode 100644
index 0000000..8df2147
--- /dev/null
+++ b/src/EDU/purdue/cs/bloat/file/DefaultClassSource.java
@@ -0,0 +1,9 @@
+package EDU.purdue.cs.bloat.file;
+
+public class DefaultClassSource implements ClassSource {
+
+ public Class loadClass(String name) throws ClassNotFoundException {
+ return Class.forName(name);
+ }
+
+}