Use generic ClassLoader so we can use our own HelmaClassLoader.

This commit is contained in:
hns 2002-11-29 17:54:20 +00:00
parent 0aa65b8683
commit 148cd5de94
3 changed files with 26 additions and 10 deletions

View file

@ -53,7 +53,7 @@ public class ESBeans extends ESLoader {
*/ */
public ESBeans(String packageName, public ESBeans(String packageName,
ESBeans previousPackage, ESBeans previousPackage,
LocalClassLoader classLoader, ClassLoader classLoader,
Evaluator evaluator) { Evaluator evaluator) {
super(packageName,previousPackage,classLoader,evaluator); super(packageName,previousPackage,classLoader,evaluator);
} }
@ -94,7 +94,7 @@ public class ESBeans extends ESLoader {
throw new EcmaScriptException("Missing class directory or jar file name"); throw new EcmaScriptException("Missing class directory or jar file name");
} }
String directoryOrJar = arguments[0].toString(); String directoryOrJar = arguments[0].toString();
LocalClassLoader classLoader = ClassLoader classLoader =
LocalClassLoader.makeLocalClassLoader(directoryOrJar); LocalClassLoader.makeLocalClassLoader(directoryOrJar);
return new ESBeans(null, null, classLoader, evaluator); return new ESBeans(null, null, classLoader, evaluator);
} else { } else {
@ -146,4 +146,4 @@ public class ESBeans extends ESLoader {
} }

View file

@ -56,7 +56,7 @@ public abstract class ESLoader extends ESObject {
// Incremental package name // Incremental package name
protected String packageName = null; protected String packageName = null;
protected ESLoader previousPackage = null; protected ESLoader previousPackage = null;
protected LocalClassLoader classLoader = null; protected ClassLoader classLoader = null;
// the non compatible flag // the non compatible flag
static private CompatibilityDescriptor nonCompatible = static private CompatibilityDescriptor nonCompatible =
@ -69,7 +69,15 @@ public abstract class ESLoader extends ESObject {
public ESLoader(Evaluator evaluator) { public ESLoader(Evaluator evaluator) {
super(null, evaluator); super(null, evaluator);
} }
/**
* To contruct the Bean or Package object with a specific class loader
*/
public ESLoader(Evaluator evaluator, ClassLoader loader) {
super(null, evaluator);
this.classLoader = loader;
}
/** /**
* To construct a bean or package sub-object (with a specific * To construct a bean or package sub-object (with a specific
* partial or complete package name * partial or complete package name
@ -80,7 +88,7 @@ public abstract class ESLoader extends ESObject {
*/ */
public ESLoader(String packageName, public ESLoader(String packageName,
ESLoader previousPackage, ESLoader previousPackage,
LocalClassLoader classLoader, ClassLoader classLoader,
Evaluator evaluator) { Evaluator evaluator) {
super(null, evaluator); super(null, evaluator);
this.packageName = packageName; this.packageName = packageName;

View file

@ -34,7 +34,7 @@ import java.util.zip.*;
* Implements the object loader * Implements the object loader
*/ */
public class ESPackages extends ESLoader { public class ESPackages extends ESLoader {
/** /**
* Create the top level package loader (object Package) * Create the top level package loader (object Package)
* @param evaluator the evaluator * @param evaluator the evaluator
@ -42,6 +42,14 @@ public class ESPackages extends ESLoader {
public ESPackages(Evaluator evaluator) { public ESPackages(Evaluator evaluator) {
super(evaluator); super(evaluator);
} }
/**
* Create the top level package loader (object Package)
* @param evaluator the evaluator
*/
public ESPackages(Evaluator evaluator, ClassLoader loader) {
super(evaluator, loader);
}
/** /**
* Create a new package loader or package prefix * Create a new package loader or package prefix
@ -52,7 +60,7 @@ public class ESPackages extends ESLoader {
*/ */
public ESPackages(String packageName, public ESPackages(String packageName,
ESPackages previousPackage, ESPackages previousPackage,
LocalClassLoader classLoader, ClassLoader classLoader,
Evaluator evaluator) { Evaluator evaluator) {
super(packageName,previousPackage,classLoader,evaluator); super(packageName,previousPackage,classLoader,evaluator);
} }
@ -117,7 +125,7 @@ public class ESPackages extends ESLoader {
throw new EcmaScriptException("Missing class directory or file name"); throw new EcmaScriptException("Missing class directory or file name");
} }
String directoryOrJar = arguments[0].toString(); String directoryOrJar = arguments[0].toString();
LocalClassLoader classLoader = ClassLoader classLoader =
LocalClassLoader.makeLocalClassLoader(directoryOrJar); LocalClassLoader.makeLocalClassLoader(directoryOrJar);
return new ESPackages(null, null, classLoader, evaluator); return new ESPackages(null, null, classLoader, evaluator);
} else { } else {
@ -139,4 +147,4 @@ public class ESPackages extends ESLoader {
} }