mirror of
https://github.com/corda/corda.git
synced 2025-01-06 05:04:20 +00:00
117 lines
2.4 KiB
Java
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);
|
|
}
|
|
}
|