diff --git a/parabotv2/src/org/parabot/core/reflect/RefClass.java b/parabotv2/src/org/parabot/core/reflect/RefClass.java index 1723d3f..edbe92f 100644 --- a/parabotv2/src/org/parabot/core/reflect/RefClass.java +++ b/parabotv2/src/org/parabot/core/reflect/RefClass.java @@ -8,9 +8,9 @@ import java.util.ArrayList; /** * - * A RefClass represents a class or an instance of that class, if no instance is - * provided this class can only get values from static fields and only invoke - * static methods + * A RefClass represents a class or an instance of that class, if + * no instance is provided this class can only get values from static fields and + * only invoke static methods * * @author Everel * @@ -26,7 +26,7 @@ public class RefClass extends RefModifiers { public RefClass(Object instance) { this(instance.getClass(), instance); } - + public RefClass(Class clazz, Object instance) { super(clazz.getModifiers()); this.clazz = clazz; @@ -34,11 +34,14 @@ public class RefClass extends RefModifiers { } /** - * Sets the instance of this class so now non static fields values can be retrieved and non static methods can be invoked - * @param instance instance of this class. + * Sets the instance of this class so now non static fields values can be + * retrieved and non static methods can be invoked + * + * @param instance + * instance of this class. */ public void setInstance(Object instance) { - if(instance == null) { + if (instance == null) { this.instance = null; return; } @@ -50,16 +53,17 @@ public class RefClass extends RefModifiers { } this.instance = instance; } - + /** * Gets the instance of this class * - * @return if an instance of this class is known it will return that instance, otherwise it will return null. + * @return if an instance of this class is known it will return that + * instance, otherwise it will return null. */ public Object getInstance() { return this.instance; } - + /** * Gets the class which this RefClass is representing * @@ -68,133 +72,152 @@ public class RefClass extends RefModifiers { public Class getRepresentingClass() { return this.clazz; } - + public String getClassName() { return this.clazz.getName(); } - + public String getSimpleName() { return this.clazz.getSimpleName(); } - + public String getCanonicalName() { return this.clazz.getCanonicalName(); } - + /** * Gets the type of this class + * * @return type of this class */ public org.objectweb.asm.Type getASMType() { return org.objectweb.asm.Type.getType(this.clazz); } - + /** * Gets the class' fields - * @return all fields if an instance is provided, otherwise only static fields + * + * @return all fields if an instance is provided, otherwise only static + * fields */ public RefField[] getFields() { ArrayList fields = new ArrayList(); // add all static fields - for(Field f : clazz.getDeclaredFields()) { - if(Modifier.isStatic(f.getModifiers())) { + for (Field f : clazz.getDeclaredFields()) { + if (Modifier.isStatic(f.getModifiers())) { fields.add(new RefField(f, instance)); } } - if(this.instance != null) { + if (this.instance != null) { // add all non static fields - for(Field f : clazz.getDeclaredFields()) { - if(!Modifier.isStatic(f.getModifiers())) { + for (Field f : clazz.getDeclaredFields()) { + if (!Modifier.isStatic(f.getModifiers())) { fields.add(new RefField(f, instance)); } } } return fields.toArray(new RefField[fields.size()]); } - + /** * Gets field by field name - * @param name name of the field + * + * @param name + * name of the field * @return the field if found */ public RefField getField(String name) { return getField(name, null); } - + /** * Gets field by field name and desc - * @param name name of the field - * @param desc desc type of the field + * + * @param name + * name of the field + * @param desc + * desc type of the field * @return the field if found */ public RefField getField(String name, String desc) { RefField[] fields = getFields(); - for(RefField f : fields) { - if(f.getName().equals(name)) { - if(desc == null) { + for (RefField f : fields) { + if (f.getName().equals(name)) { + if (desc == null) { return f; } - if(desc.equals(f.getTypeDesc())) { + if (desc.equals(f.getTypeDesc())) { return f; } } } return null; } - + /** * Determines if this class has a super class - * @return true if this class has a super class and which is not the java/lang/Object class, otherwise false. + * + * @return true if this class has a super class and which is + * not the java/lang/Object class, otherwise false. */ public boolean hasSuperclass() { return hasSuperclass(true); } - + /** * Determines if this class has a super class - * @param ignoreObjectClass if you want this method to return false when the superclass is the java/lang/Object class - * @return true if this class has a superclass, otherwise false + * + * @param ignoreObjectClass + * if you want this method to return false when the superclass is + * the java/lang/Object class + * @return true if this class has a superclass, otherwise + * false */ public boolean hasSuperclass(boolean ignoreObjectClass) { - if(!ignoreObjectClass) { + if (!ignoreObjectClass) { return !clazz.equals(Object.class); } Class superClass = clazz.getSuperclass(); return !superClass.equals(Object.class); } - + /** * Returns a new RefClass representing the superclass of this RefClass + * * @return superclass of this RefClass */ public RefClass getSuperclass() { return new RefClass(clazz.getSuperclass(), instance); } - + /** * Creates a new instance of this class + * * @return a RefClass representing a fresh created instance of that class */ public RefClass newInstance() { try { return new RefClass(clazz.newInstance()); - } catch(Throwable t) { + } catch (Throwable t) { t.printStackTrace(); } return null; } - + /** * Gets the empty (without parameters) constructor of this class if any + * * @return empty constructor if there, otherwise null */ public RefConstructor getConstructor() { - return getConstructor(new Class[] { }); + return getConstructor(new Class[] {}); } /** * Gets a RefConstructor from this class - * @param parameters the constructor it's parameters + * + * @param parameters + * the constructor it's parameters * @return the retrieved constructor */ public RefConstructor getConstructor(Class[] parameters) { @@ -205,66 +228,74 @@ public class RefClass extends RefModifiers { } return null; } - + /** * Gets all constructors of this class + * * @return an array with all the constructors in this class */ public RefConstructor[] getConstructors() { Constructor[] constructors = clazz.getDeclaredConstructors(); RefConstructor[] refConstructors = new RefConstructor[constructors.length]; - for(int i = 0; i < constructors.length; i++) { + for (int i = 0; i < constructors.length; i++) { refConstructors[i] = new RefConstructor(constructors[i]); } return refConstructors; } - + /** * Gets the class' methods - * @return all methods if an instance is provided, otherwise only static methods + * + * @return all methods if an instance is provided, otherwise only static + * methods */ public RefMethod[] getMethods() { ArrayList methods = new ArrayList(); // add all static methods - for(Method m : clazz.getDeclaredMethods()) { - if(Modifier.isStatic(m.getModifiers())) { + for (Method m : clazz.getDeclaredMethods()) { + if (Modifier.isStatic(m.getModifiers())) { methods.add(new RefMethod(m, instance)); } } - if(this.instance != null) { + if (this.instance != null) { // add all non static methods - for(Method m : clazz.getDeclaredMethods()) { - if(!Modifier.isStatic(m.getModifiers())) { + for (Method m : clazz.getDeclaredMethods()) { + if (!Modifier.isStatic(m.getModifiers())) { methods.add(new RefMethod(m, instance)); } } } return methods.toArray(new RefMethod[methods.size()]); } - + /** * Finds and returns the first RefMethod match with given method name - * @param name method its name + * + * @param name + * method its name * @return the first match, or if not found null */ public RefMethod getMethod(String name) { return getMethod(name, null); } - + /** * Finds a RefMethod in this RefClass - * @param name the method its name - * @param parameters the method its parameters + * + * @param name + * the method its name + * @param parameters + * the method its parameters * @return the matched method or if not found null null */ public RefMethod getMethod(String name, Class[] parameters) { try { - for(RefMethod method : getMethods()) { - if(method.getName().equals(name)) { - if(parameters == null) { + for (RefMethod method : getMethods()) { + if (method.getName().equals(name)) { + if (parameters == null) { return method; } - if(method.getParameterTypes().equals(parameters)) { + if (method.getParameterTypes().equals(parameters)) { return method; } } @@ -274,10 +305,11 @@ public class RefClass extends RefModifiers { } return null; } - + public String toString() { - if(this.instance != null) { - return new StringBuilder().append(this.instance.toString()).append(" : ").append(this.clazz.toString()).toString(); + if (this.instance != null) { + return new StringBuilder().append(this.instance.toString()) + .append(" : ").append(this.clazz.toString()).toString(); } return this.clazz.toString(); } diff --git a/parabotv2/src/org/parabot/core/reflect/RefConstructor.java b/parabotv2/src/org/parabot/core/reflect/RefConstructor.java index 0473788..2c07433 100644 --- a/parabotv2/src/org/parabot/core/reflect/RefConstructor.java +++ b/parabotv2/src/org/parabot/core/reflect/RefConstructor.java @@ -4,45 +4,49 @@ import java.lang.reflect.Constructor; /** * - * A RefConstructor class represent a constructor method of a RefClass. + * A RefConstructor class represent a constructor method of a + * RefClass. * * @author Everel - * + * */ public class RefConstructor extends RefModifiers { private Constructor constructor; - + public RefConstructor(Constructor constructor) { super(constructor.getModifiers()); this.constructor = constructor; } - + /** * Creates a new instance of this class by invoking this constructor + * * @return the instance of the class */ public RefClass newInstance() { - return newInstance(new Object[] { }); + return newInstance(new Object[] {}); } - + /** * Creates a new instance of this class by invoking this constructor - * @param args the arguments for the constructor + * + * @param args + * the arguments for the constructor * @return the instance of the class */ public RefClass newInstance(Object... args) { - if(!constructor.isAccessible()) { + if (!constructor.isAccessible()) { constructor.setAccessible(true); } try { Object instance = constructor.newInstance(args); return new RefClass(instance); - } catch(Throwable t) { + } catch (Throwable t) { t.printStackTrace(); } return null; } - + /** * Get the value of the accessible flag for this object. * @@ -53,11 +57,11 @@ public class RefConstructor extends RefModifiers { } /** - * Returns true if this constructor is a synthetic constructor; returns - * false otherwise. + * Returns true if this constructor is a synthetic constructor; + * returns false otherwise. * - * @return true if this constructor is a synthetic constructor; returns - * false otherwise + * @return true if this constructor is a synthetic constructor; + * returns false otherwise */ public boolean isSynthetic() { return constructor.isSynthetic(); @@ -71,9 +75,10 @@ public class RefConstructor extends RefModifiers { public String getName() { return constructor.getName(); } - + /** * Returns an array of the parameter types of this constructor + * * @return an array of the parameter types of this constructor */ public Class[] getParameterTypes() { @@ -88,11 +93,11 @@ public class RefConstructor extends RefModifiers { public Constructor getConstructor() { return this.constructor; } - + public String toGenericString() { return constructor.toGenericString(); } - + public String toString() { return constructor.toString(); } diff --git a/parabotv2/src/org/parabot/core/reflect/RefField.java b/parabotv2/src/org/parabot/core/reflect/RefField.java index b3edaf8..b09b7c8 100644 --- a/parabotv2/src/org/parabot/core/reflect/RefField.java +++ b/parabotv2/src/org/parabot/core/reflect/RefField.java @@ -5,7 +5,7 @@ import java.lang.reflect.Type; /** * - * A RefField represents a field in a class + * A RefField represents a field in a RefClass * * @author Everel * diff --git a/parabotv2/src/org/parabot/core/reflect/RefMethod.java b/parabotv2/src/org/parabot/core/reflect/RefMethod.java index c15b572..c833aa1 100644 --- a/parabotv2/src/org/parabot/core/reflect/RefMethod.java +++ b/parabotv2/src/org/parabot/core/reflect/RefMethod.java @@ -7,7 +7,7 @@ import java.lang.reflect.Method; * A RefMethod class represent a method of a RefClass. * * @author Everel - * + * */ public class RefMethod extends RefModifiers { private Method method; @@ -16,13 +16,13 @@ public class RefMethod extends RefModifiers { public RefMethod(Method method) { this(method, null); } - + public RefMethod(Method method, Object instance) { super(method.getModifiers()); this.method = method; this.instance = instance; } - + /** * Get the value of the accessible flag for this object. * @@ -31,19 +31,22 @@ public class RefMethod extends RefModifiers { public boolean isAccessible() { return method.isAccessible(); } - + /** * Determines if this method is a bridge method. * - * @return true if this method is a bridge method, otherwise false + * @return true if this method is a bridge method, otherwise + * false */ public boolean isBridge() { return method.isBridge(); } - + /** * Determines if this method can take a variable amount of arguments - * @return true if this method can take a variable amount of arguments + * + * @return true if this method can take a variable amount of + * arguments */ public boolean isVarArgs() { return method.isVarArgs(); @@ -68,25 +71,28 @@ public class RefMethod extends RefModifiers { public String getName() { return method.getName(); } - + /** * Returns an array of the parameter types of this method + * * @return an array of the parameter types of this method */ public Class[] getParameterTypes() { return method.getParameterTypes(); } - + /** * Gets the return type of this class + * * @return return type of this class */ public Class getReturnType() { return method.getReturnType(); } - + /** * Gets the return type of this class + * * @return return type of this class */ public org.objectweb.asm.Type getASMReturnType() { @@ -101,26 +107,28 @@ public class RefMethod extends RefModifiers { public Method getMethod() { return this.method; } - + /** * Invokes the method and returns it returned object * * @return object returned by the method */ public Object invoke() { - return invoke(new Object[] { }); + return invoke(new Object[] {}); } - + /** * * Invokes the method and returns it returned object * - * @param args arguments for the invokable method + * @param args + * arguments for the invokable method * @return object returned by the method */ public Object invoke(Object... args) { - if(!isStatic() && instance == null) { - throw new IllegalStateException("Can not invoke non static method without an instance."); + if (!isStatic() && instance == null) { + throw new IllegalStateException( + "Can not invoke non static method without an instance."); } try { Object retObject = method.invoke(instance, args); @@ -130,11 +138,11 @@ public class RefMethod extends RefModifiers { } return null; } - + public String toGenericString() { return method.toGenericString(); } - + public String toString() { return method.toString(); } diff --git a/parabotv2/src/org/parabot/core/reflect/RefModifiers.java b/parabotv2/src/org/parabot/core/reflect/RefModifiers.java index ed077cd..06d41c5 100644 --- a/parabotv2/src/org/parabot/core/reflect/RefModifiers.java +++ b/parabotv2/src/org/parabot/core/reflect/RefModifiers.java @@ -5,71 +5,71 @@ import java.lang.reflect.Modifier; /** * * @author Everel - * + * */ public class RefModifiers { private int modifiers; - + public RefModifiers() { - + } - + public RefModifiers(int modifiers) { setModifiers(modifiers); } - + public void setModifiers(int modifiers) { this.modifiers = modifiers; } - + public int getModifiers() { return this.modifiers; } - + public boolean isStatic() { return Modifier.isStatic(modifiers); } - + public boolean isAbstract() { return Modifier.isAbstract(modifiers); } - + public boolean isFinal() { return Modifier.isFinal(modifiers); } - + public boolean isInterface() { return Modifier.isInterface(modifiers); } - + public boolean isNative() { return Modifier.isNative(modifiers); } - + public boolean isPrivate() { return Modifier.isPrivate(modifiers); } - + public boolean isProtected() { return Modifier.isProtected(modifiers); } - + public boolean isPublic() { return Modifier.isPublic(modifiers); } - + public boolean isStrict() { return Modifier.isStrict(modifiers); } - + public boolean isSynchronized() { return Modifier.isSynchronized(modifiers); } - + public boolean isTransient() { return Modifier.isTransient(modifiers); } - + public boolean isVolatile() { return Modifier.isVolatile(modifiers); } diff --git a/parabotv2/src/org/parabot/core/reflect/RefUtils.java b/parabotv2/src/org/parabot/core/reflect/RefUtils.java index fc38485..dafb128 100644 --- a/parabotv2/src/org/parabot/core/reflect/RefUtils.java +++ b/parabotv2/src/org/parabot/core/reflect/RefUtils.java @@ -7,7 +7,7 @@ import java.util.Set; /** * * @author Everel - * + * */ public class RefUtils {