aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/preloader/CustomClassLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gtPlusPlus/preloader/CustomClassLoader.java')
-rw-r--r--src/main/java/gtPlusPlus/preloader/CustomClassLoader.java81
1 files changed, 37 insertions, 44 deletions
diff --git a/src/main/java/gtPlusPlus/preloader/CustomClassLoader.java b/src/main/java/gtPlusPlus/preloader/CustomClassLoader.java
index 56394c11f0..388b5fa2a6 100644
--- a/src/main/java/gtPlusPlus/preloader/CustomClassLoader.java
+++ b/src/main/java/gtPlusPlus/preloader/CustomClassLoader.java
@@ -6,52 +6,45 @@ import java.security.Permissions;
import java.security.ProtectionDomain;
import java.security.cert.Certificate;
import java.util.HashMap;
-
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.tree.ClassNode;
public class CustomClassLoader extends ClassLoader {
- private HashMap<String, ClassNode> classes = new HashMap<String, ClassNode>();
-
- @Override
-
- public Class<?> loadClass(String name) throws ClassNotFoundException {
- return findClass(name);
- }
-
- @Override
-
- protected Class<?> findClass(String name) throws ClassNotFoundException {
- ClassNode node = classes.get(name.replace('.', '/'));
- if (node != null)
- return nodeToClass(node);
- else
- return super.findClass(name);
- }
-
- public final void addNode(ClassNode node) {
- classes.put(node.name, node);
- }
-
- private final Class<?> nodeToClass(ClassNode node) {
- if (super.findLoadedClass(node.name) != null)
- return findLoadedClass(node.name);
- ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
- node.accept(cw);
- byte[] b = cw.toByteArray();
- return defineClass(node.name.replace('/', '.'), b, 0, b.length, getDomain());
- }
-
- private final ProtectionDomain getDomain() {
- CodeSource code = new CodeSource(null, (Certificate[]) null);
- return new ProtectionDomain(code, getPermissions());
- }
-
- private final Permissions getPermissions() {
- Permissions permissions = new Permissions();
- permissions.add(new AllPermission());
- return permissions;
- }
-
-} \ No newline at end of file
+ private HashMap<String, ClassNode> classes = new HashMap<String, ClassNode>();
+
+ @Override
+ public Class<?> loadClass(String name) throws ClassNotFoundException {
+ return findClass(name);
+ }
+
+ @Override
+ protected Class<?> findClass(String name) throws ClassNotFoundException {
+ ClassNode node = classes.get(name.replace('.', '/'));
+ if (node != null) return nodeToClass(node);
+ else return super.findClass(name);
+ }
+
+ public final void addNode(ClassNode node) {
+ classes.put(node.name, node);
+ }
+
+ private final Class<?> nodeToClass(ClassNode node) {
+ if (super.findLoadedClass(node.name) != null) return findLoadedClass(node.name);
+ ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
+ node.accept(cw);
+ byte[] b = cw.toByteArray();
+ return defineClass(node.name.replace('/', '.'), b, 0, b.length, getDomain());
+ }
+
+ private final ProtectionDomain getDomain() {
+ CodeSource code = new CodeSource(null, (Certificate[]) null);
+ return new ProtectionDomain(code, getPermissions());
+ }
+
+ private final Permissions getPermissions() {
+ Permissions permissions = new Permissions();
+ permissions.add(new AllPermission());
+ return permissions;
+ }
+}