corda/classpath/java/lang/ClassLoader.java
2007-08-10 17:45:47 -06:00

117 lines
2.4 KiB
Java

package java.lang;
import java.io.InputStream;
import java.io.IOException;
import java.net.URL;
public abstract class ClassLoader {
private final ClassLoader parent;
protected ClassLoader(ClassLoader parent) {
if (parent == null) {
this.parent = getSystemClassLoader();
} else {
this.parent = parent;
}
}
protected ClassLoader() {
this(getSystemClassLoader());
}
public static ClassLoader getSystemClassLoader() {
return ClassLoader.class.getClassLoader();
}
private static native Class defineClass(byte[] b, int offset, int length);
protected Class defineClass(String name, byte[] b, int offset, int length) {
if (b == null) {
throw new NullPointerException();
}
if (offset < 0 || offset > length || offset + length > b.length) {
throw new IndexOutOfBoundsException();
}
return defineClass(b, offset, length);
}
protected Class findClass(String name) throws ClassNotFoundException {
throw new ClassNotFoundException();
}
protected Class findLoadedClass(String name) {
return null;
}
public Class loadClass(String name) throws ClassNotFoundException {
return loadClass(name, false);
}
protected Class loadClass(String name, boolean resolve)
throws ClassNotFoundException
{
Class c = findLoadedClass(name);
if (c == null) {
if (parent != null) {
try {
c = parent.loadClass(name);
} catch (ClassNotFoundException ok) { }
}
if (c == null) {
c = findClass(name);
}
}
if (resolve) {
resolveClass(c);
}
return c;
}
protected void resolveClass(Class c) {
// ignore
}
private ClassLoader getParent() {
return parent;
}
protected URL findResource(String path) {
return null;
}
public URL getResource(String path) {
URL url = null;
if (parent != null) {
url = parent.getResource(path);
}
if (url == null) {
url = findResource(path);
}
return url;
}
public InputStream getResourceAsStream(String path) {
URL url = getResource(path);
try {
return (url == null ? null : url.openStream());
} catch (IOException e) {
return null;
}
}
public static URL getSystemResource(String path) {
return getSystemClassLoader().getResource(path);
}
public static InputStream getSystemResourceAsStream(String path) {
return getSystemClassLoader().getResourceAsStream(path);
}
}