From 99d5d22eacc3fb0bcbfe5fe55dcc52438ad18b80 Mon Sep 17 00:00:00 2001
From: zaxar163 <zahar.vcherachny@yandex.ru>
Date: Fri, 21 Sep 2018 20:15:08 +0300
Subject: [PATCH] Rewrite bad methods.

---
 .../launchserver/asm/ClassMetadataReader.java | 63 +++----------------
 1 file changed, 8 insertions(+), 55 deletions(-)

diff --git a/LaunchServer/src/main/java/ru/gravit/launchserver/asm/ClassMetadataReader.java b/LaunchServer/src/main/java/ru/gravit/launchserver/asm/ClassMetadataReader.java
index 36feb2c2..7de14bf4 100644
--- a/LaunchServer/src/main/java/ru/gravit/launchserver/asm/ClassMetadataReader.java
+++ b/LaunchServer/src/main/java/ru/gravit/launchserver/asm/ClassMetadataReader.java
@@ -5,29 +5,16 @@
 import ru.gravit.utils.helper.IOHelper;
 
 import java.io.IOException;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.jar.JarFile;
 
 /**
- * Позволяет при помощи велосипеда из костылей искать методы внутри незагруженных классов
- * и общие суперклассы для чего угодно. Работает через поиск class-файлов в classpath, и, в случае провала -
- * ищет через рефлексию.
+ * Позволяет искать методы внутри незагруженных классов
+ * и общие суперклассы для чего угодно. Работает через поиск class-файлов в classpath.
  */
 public class ClassMetadataReader {
-    private static final Method m;
-
-    static {
-        try {
-            m = ClassLoader.class.getDeclaredMethod("findLoadedClass", String.class);
-            m.setAccessible(true);
-        } catch (NoSuchMethodException e) {
-            throw new InternalError(e);
-        }
-    }
-
 	private final List<JarFile> list;
 
     public ClassMetadataReader() {
@@ -75,7 +62,7 @@ private MethodReference getMethodReference(String type, String methodName, Strin
         try {
             return getMethodReferenceASM(type, methodName, desc);
         } catch (Exception e) {
-            return getMethodReferenceReflect(type, methodName, desc);
+            return null;
         }
     }
 
@@ -88,18 +75,6 @@ protected MethodReference getMethodReferenceASM(String type, String methodName,
         return null;
     }
 
-    protected MethodReference getMethodReferenceReflect(String type, String methodName, String desc) {
-        Class<?> loadedClass = getLoadedClass(type);
-        if (loadedClass != null) {
-            for (Method m : loadedClass.getDeclaredMethods()) {
-                if (checkSameMethod(methodName, desc, m.getName(), Type.getMethodDescriptor(m))) {
-                    return new MethodReference(type, m.getName(), Type.getMethodDescriptor(m));
-                }
-            }
-        }
-        return null;
-    }
-
     protected boolean checkSameMethod(String sourceName, String sourceDesc, String targetName, String targetDesc) {
         return sourceName.equals(targetName) && sourceDesc.equals(targetDesc);
     }
@@ -117,42 +92,20 @@ public ArrayList<String> getSuperClasses(String type) {
         Collections.reverse(superclasses);
         return superclasses;
     }
-
-    private Class<?> getLoadedClass(String type) {
-        if (m != null) {
-            try {
-                ClassLoader classLoader = ClassMetadataReader.class.getClassLoader();
-                return (Class<?>) m.invoke(classLoader, type.replace('/', '.'));
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-        return null;
-    }
-
     public String getSuperClass(String type) {
         try {
-            return getSuperClassASM(type);
-        } catch (Exception e) {
-            return getSuperClassReflect(type);
-        }
+			return getSuperClassASM(type);
+		} catch (Exception e) {
+			return null;
+		}
     }
-
+    
     protected String getSuperClassASM(String type) throws IOException {
         CheckSuperClassVisitor cv = new CheckSuperClassVisitor();
         acceptVisitor(type, cv);
         return cv.superClassName;
     }
 
-    protected String getSuperClassReflect(String type) {
-        Class<?> loadedClass = getLoadedClass(type);
-        if (loadedClass != null) {
-            if (loadedClass.getSuperclass() == null) return null;
-            return loadedClass.getSuperclass().getName().replace('.', '/');
-        }
-        return "java/lang/Object";
-    }
-
     private class CheckSuperClassVisitor extends ClassVisitor {
 
         String superClassName;