aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/util/ClassUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core/util/ClassUtils.java')
-rw-r--r--src/Java/gtPlusPlus/core/util/ClassUtils.java83
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;
- }
- }
+
}