diff options
Diffstat (limited to 'src/Java/gtPlusPlus/core/util/ClassUtils.java')
-rw-r--r-- | src/Java/gtPlusPlus/core/util/ClassUtils.java | 83 |
1 files changed, 41 insertions, 42 deletions
diff --git a/src/Java/gtPlusPlus/core/util/ClassUtils.java b/src/Java/gtPlusPlus/core/util/ClassUtils.java index e58c2f2785..ba3db748f9 100644 --- a/src/Java/gtPlusPlus/core/util/ClassUtils.java +++ b/src/Java/gtPlusPlus/core/util/ClassUtils.java @@ -1,56 +1,70 @@ package gtPlusPlus.core.util; -import java.lang.reflect.*; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; public class ClassUtils { - public static Method getMethodViaReflection(final Class<?> lookupClass, final String methodName, - final boolean invoke) throws Exception { - final Class<? extends Class> lookup = lookupClass.getClass(); - final Method m = lookup.getDeclaredMethod(methodName); - m.setAccessible(true);// Abracadabra - if (invoke) { + + /*@ if (isPresent("com.optionaldependency.DependencyClass")) { + // This block will never execute when the dependency is not present + // There is therefore no more risk of code throwing NoClassDefFoundException. + executeCodeLinkingToDependency(); + }*/ + public static boolean isPresent(String className) { + try { + Class.forName(className); + return true; + } catch (Throwable ex) { + // Class or one of its dependencies is not present... + return false; + } + } + + public static Method getMethodViaReflection(Class<?> lookupClass, String methodName, boolean invoke) throws Exception{ + Class<? extends Class> lookup = lookupClass.getClass(); + Method m = lookup.getDeclaredMethod(methodName); + m.setAccessible(true);// Abracadabra + if (invoke){ m.invoke(lookup);// now its OK } return m; } - public static Class getNonPublicClass(final String className) { + public static Class getNonPublicClass(String className){ Class<?> c = null; try { c = Class.forName(className); - } - catch (final ClassNotFoundException e) { + } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } - // full package name --------^^^^^^^^^^ - // or simpler without Class.forName: - // Class<package1.A> c = package1.A.class; + //full package name --------^^^^^^^^^^ + //or simpler without Class.forName: + //Class<package1.A> c = package1.A.class; - if (null != c) { - // In our case we need to use + if (null != c){ + //In our case we need to use Constructor<?> constructor = null; try { constructor = c.getDeclaredConstructor(); - } - catch (NoSuchMethodException | SecurityException e) { + } catch (NoSuchMethodException | SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } - // note: getConstructor() can return only public constructors - // so we needed to search for any Declared constructor + //note: getConstructor() can return only public constructors + //so we needed to search for any Declared constructor - // now we need to make this constructor accessible - if (null != constructor) { - constructor.setAccessible(true);// ABRACADABRA! + //now we need to make this constructor accessible + if (null != constructor){ + constructor.setAccessible(true);//ABRACADABRA! try { - final Object o = constructor.newInstance(); + Object o = constructor.newInstance(); return (Class) o; - } - catch (InstantiationException | IllegalAccessException | IllegalArgumentException - | InvocationTargetException e) { + } catch (InstantiationException | IllegalAccessException + | IllegalArgumentException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } @@ -59,21 +73,6 @@ public class ClassUtils { return null; } - /* - * @ if (isPresent("com.optionaldependency.DependencyClass")) { // This - * block will never execute when the dependency is not present // There is - * therefore no more risk of code throwing NoClassDefFoundException. - * executeCodeLinkingToDependency(); } - */ - public static boolean isPresent(final String className) { - try { - Class.forName(className); - return true; - } - catch (final Throwable ex) { - // Class or one of its dependencies is not present... - return false; - } - } + } |