// Copyright (c) Corporation for National Research Initiatives
package org.python.core;
import java.io.IOException;
import java.security.SecureClassLoader;
import java.util.Vector;
import org.python.debug.FixMe;
/**
* A java2 classloader for loading compiled python modules.
*/
class BytecodeLoader2 extends SecureClassLoader implements Loader {
private Vector parents;
public BytecodeLoader2() {
this.parents = BytecodeLoader.init();
}
public void addParent(ClassLoader referent) {
if (!this.parents.contains(referent)) {
this.parents.add(0, referent);
}
}
// override from abstract base class
protected Class loadClass(String name, boolean resolve)
throws ClassNotFoundException {
Class c = findLoadedClass(name);
if (c != null) {
return c;
}
return BytecodeLoader.findParentClass(this.parents, name);
}
public Class loadClassFromBytes(String name, byte[] data) {
//TODO bug fix number 4 Start Needed
//Class c = defineClass(name, data, 0, data.length, this.getClass()
// .getProtectionDomain());
//resolveClass(c);
Class c=null;
try {
c = FixMe.getDexClass(name, data);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//TODO bug fix number 4 End Needed
BytecodeLoader.compileClass(c);
return c;
}
}