Package net.sf.freecol.common.util
Class Introspector
- java.lang.Object
-
- net.sf.freecol.common.util.Introspector
-
public class Introspector extends java.lang.ObjectA class to allow access to the methods "fooType getFoo()" and "void setFoo(fooType)" conventionally seen in objects. Useful when Foo arrives as a run-time String, such as is the case in serialization to/from XML representations.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classIntrospector.IntrospectorException
-
Constructor Summary
Constructors Constructor Description Introspector(java.lang.Class<?> theClass, java.lang.String field)Build a new Introspector for the specified class and field name.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <T> Tconstruct(java.lang.reflect.Constructor<T> constructor, java.lang.Object[] params)Construct a new instance.static java.lang.Class<?>getClassByName(java.lang.String name)Get a class by name.static <T> java.lang.reflect.Constructor<T>getConstructor(java.lang.Class<T> cl, java.lang.Class[] types)Get a constructor for a given class and arguments.private java.lang.reflect.MethodgetFromStringConverter(java.lang.Class<?> argType)Get a function that converts from String to a given class.private java.lang.reflect.MethodgetGetMethod()Get a get-method for this Introspector.private java.lang.Class<?>getMethodReturnType(java.lang.reflect.Method method)Get the return type from aMethod.private java.lang.reflect.MethodgetSetMethod(java.lang.Class<?> argType)Get a set-method for this Introspector.java.lang.Stringgetter(java.lang.Object obj)Invoke the get-method for this Introspector.private java.lang.reflect.MethodgetToStringConverter(java.lang.Class<?> argType)Get a function that converts to String from a given class.static <T> Tinstantiate(java.lang.Class<T> messageClass, java.lang.Class[] types, java.lang.Object[] params)Constructs a new instance of an object of a class specified by name, with supplied parameters.static java.lang.Objectinstantiate(java.lang.String tag, java.lang.Class[] types, java.lang.Object[] params)Constructs a new instance of an object of a class specified by name, with supplied parameters.static <T> TinvokeMethod(java.lang.Object object, java.lang.String methodName, java.lang.Class<T> returnClass)Invoke an object method by name.static voidinvokeVoidMethod(java.lang.Object object, java.lang.String methodName)Invoke an object void method by name.voidsetter(java.lang.Object obj, java.lang.String value)Invoke the set-method provided by this Introspector.
-
-
-
Method Detail
-
getGetMethod
private java.lang.reflect.Method getGetMethod() throws Introspector.IntrospectorExceptionGet a get-method for this Introspector.- Returns:
- A
Methodrepresenting getField(). - Throws:
Introspector.IntrospectorException- if the get-method is not available.
-
getSetMethod
private java.lang.reflect.Method getSetMethod(java.lang.Class<?> argType) throws Introspector.IntrospectorExceptionGet a set-method for this Introspector.- Parameters:
argType- AClassthat is the argument to the set-method- Returns:
- A
Methodrepresenting setField(). - Throws:
Introspector.IntrospectorException- if the set-method is not available.
-
getMethodReturnType
private java.lang.Class<?> getMethodReturnType(java.lang.reflect.Method method) throws Introspector.IntrospectorExceptionGet the return type from aMethod.- Parameters:
method- TheMethodto examine.- Returns:
- The method return type, or null on error.
- Throws:
Introspector.IntrospectorException- if the return type is not available.
-
getToStringConverter
private java.lang.reflect.Method getToStringConverter(java.lang.Class<?> argType) throws java.lang.NoSuchMethodExceptionGet a function that converts to String from a given class. We use Enum.name() for enums, and String.valueOf(argType) for the rest.- Parameters:
argType- AClassto find a converter for.- Returns:
- A conversion function, or null on error.
- Throws:
java.lang.NoSuchMethodException- if no converter is found.
-
getFromStringConverter
private java.lang.reflect.Method getFromStringConverter(java.lang.Class<?> argType)
Get a function that converts from String to a given class. We use Enum.valueOf(Class, String) for enums, and argType.valueOf(String) for the rest, having first dodged the primitive types.- Parameters:
argType- AClassto find a converter for.- Returns:
- A conversion function, or null on error.
-
getter
public java.lang.String getter(java.lang.Object obj) throws Introspector.IntrospectorExceptionInvoke the get-method for this Introspector.- Parameters:
obj- AnObject(really of type theClass) whose get-method is to be invoked.- Returns:
- A
Stringcontaining the result of invoking the get-method. - Throws:
Introspector.IntrospectorException- encompasses many failures.
-
setter
public void setter(java.lang.Object obj, java.lang.String value) throws Introspector.IntrospectorExceptionInvoke the set-method provided by this Introspector.- Parameters:
obj- AnObject(really of type theClass) whose set-method is to be invoked.value- AStringcontaining the value to be set.- Throws:
Introspector.IntrospectorException- encompasses many failures.
-
getClassByName
public static java.lang.Class<?> getClassByName(java.lang.String name)
Get a class by name.- Parameters:
name- The class name to look for.- Returns:
- The class found, or null if none available.
-
getConstructor
public static <T> java.lang.reflect.Constructor<T> getConstructor(java.lang.Class<T> cl, java.lang.Class[] types)Get a constructor for a given class and arguments.- Type Parameters:
T- The type to construct.- Parameters:
cl- The base class.types- The types of the constructor arguments.- Returns:
- The constructor found, or null on error.
-
construct
public static <T> T construct(java.lang.reflect.Constructor<T> constructor, java.lang.Object[] params) throws Introspector.IntrospectorExceptionConstruct a new instance.- Type Parameters:
T- The type to construct.- Parameters:
constructor- TheConstructorto use.params- The constructor parameters.- Returns:
- The instance created, or null on error.
- Throws:
Introspector.IntrospectorException- if there is a FreeCol failure.
-
instantiate
public static java.lang.Object instantiate(java.lang.String tag, java.lang.Class[] types, java.lang.Object[] params) throws Introspector.IntrospectorExceptionConstructs a new instance of an object of a class specified by name, with supplied parameters.- Parameters:
tag- The name of the class to instantiate.types- The argument types of the constructor to call.params- The parameters to call the constructor with.- Returns:
- The new object instance.
- Throws:
Introspector.IntrospectorException- wraps all exceptional conditions.
-
instantiate
public static <T> T instantiate(java.lang.Class<T> messageClass, java.lang.Class[] types, java.lang.Object[] params) throws Introspector.IntrospectorExceptionConstructs a new instance of an object of a class specified by name, with supplied parameters.- Type Parameters:
T- The actual return type.- Parameters:
messageClass- The class to instantiate.types- The argument types of the constructor to call.params- The parameters to call the constructor with.- Returns:
- The new instance.
- Throws:
Introspector.IntrospectorException- wraps all exceptional conditions.
-
invokeMethod
public static <T> T invokeMethod(java.lang.Object object, java.lang.String methodName, java.lang.Class<T> returnClass) throws java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.NoSuchMethodExceptionInvoke an object method by name.- Type Parameters:
T- The actual return type.- Parameters:
object- The base object.methodName- The name of the method to invoke.returnClass- The expected class to return.- Returns:
- The result of invoking the method.
- Throws:
java.lang.IllegalAccessException- if the method exists but is hidden.java.lang.reflect.InvocationTargetException- if the target can not be invoked.java.lang.NoSuchMethodException- if the invocation fails.
-
invokeVoidMethod
public static void invokeVoidMethod(java.lang.Object object, java.lang.String methodName) throws java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.NoSuchMethodExceptionInvoke an object void method by name.- Parameters:
object- The base object.methodName- The name of the method to invoke.- Throws:
java.lang.IllegalAccessException- if the method exists but is hidden.java.lang.reflect.InvocationTargetException- if the target can not be invoked.java.lang.NoSuchMethodException- if the invocation fails.
-
-