de.intarsys.tools.reflect
Class ObjectTools

java.lang.Object
  extended by de.intarsys.tools.reflect.ObjectTools

public class ObjectTools
extends java.lang.Object

A tool class for convenient object related tasks.

This tool contains some simple reflection implementations.


Field Summary
static java.lang.String GET_PREFIX
           
static java.lang.String IS_PREFIX
           
 
Constructor Summary
ObjectTools()
           
 
Method Summary
protected static java.lang.Object basicGet(java.lang.Object object, java.lang.String name)
           
protected static java.lang.Object basicInsert(java.lang.Object object, java.lang.String name, java.lang.Object value)
           
protected static java.lang.Object basicInvoke(java.lang.Object object, java.lang.String name, java.lang.Object... values)
           
protected static java.lang.Object basicRemove(java.lang.Object object, java.lang.String name, java.lang.Object value)
           
protected static java.lang.Object basicSet(java.lang.Object object, java.lang.String name, java.lang.Object value)
           
protected static boolean checkCandidate(java.lang.reflect.Method method, java.lang.String methodName, java.lang.Class[] pClasses)
           
protected static boolean checkCandidateClass(java.lang.Class mClass, java.lang.Class pClass)
           
protected static boolean checkCandidateClasses(java.lang.Class[] mClasses, java.lang.Class[] pClasses)
           
static
<T> T
createObject(java.lang.Class clazz, java.lang.Class<T> expectedClass)
          Create a new instance of Class "class"
static
<T> T
createObject(java.lang.Class clazz, java.lang.Class<T> expectedClass, java.lang.Class[] parameterTypes, java.lang.Object[] parameters)
          Create a new instance of Class "class"
static
<T> T
createObject(java.lang.String className, java.lang.Class<T> expectedClass, java.lang.ClassLoader classLoader)
          Create a new instance of Class "className" via "classLoader".
protected static java.lang.reflect.Method findAnyMethod(java.lang.Class clazz, java.lang.String name, java.lang.Class... classes)
           
static java.lang.reflect.Method findGetter(java.lang.Object object, java.lang.String name)
           
static java.lang.reflect.Method findInserter(java.lang.Object object, java.lang.String attribute, java.lang.Object value)
           
protected static java.lang.reflect.Method findMatchingMethod(java.lang.Class clazz, java.lang.String name, java.lang.Class[] classes)
           
static java.lang.reflect.Method findMethod(java.lang.Object object, java.lang.String methodName, java.lang.Object... parameters)
           
static java.lang.reflect.Method findRemover(java.lang.Object object, java.lang.String attribute, java.lang.Object value)
           
static java.lang.reflect.Method findSetter(java.lang.Object object, java.lang.String attribute, java.lang.Object value)
           
protected static java.lang.reflect.Method findSimpleMethod(java.lang.Class clazz, java.lang.String name, java.lang.Class... classes)
           
static java.lang.Object get(java.lang.Object object, java.lang.String name)
          Get the value for field name in object.
static java.lang.Object insert(java.lang.Object object, java.lang.String name, java.lang.Object value)
          Insert value in the relation field name in object.
static java.lang.Object invoke(java.lang.Object object, java.lang.String name, java.lang.Object... values)
          Invoke method name in object.
static java.lang.Object remove(java.lang.Object object, java.lang.String name, java.lang.Object value)
          Remove value in the relation field name in object.
static java.lang.Object set(java.lang.Object object, java.lang.String name, java.lang.Object value)
          Set field name in object to value.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

GET_PREFIX

public static final java.lang.String GET_PREFIX
See Also:
Constant Field Values

IS_PREFIX

public static final java.lang.String IS_PREFIX
See Also:
Constant Field Values
Constructor Detail

ObjectTools

public ObjectTools()
Method Detail

basicGet

protected static java.lang.Object basicGet(java.lang.Object object,
                                           java.lang.String name)
                                    throws FieldException
Throws:
FieldException

basicInsert

protected static java.lang.Object basicInsert(java.lang.Object object,
                                              java.lang.String name,
                                              java.lang.Object value)
                                       throws FieldException
Throws:
FieldException

basicInvoke

protected static java.lang.Object basicInvoke(java.lang.Object object,
                                              java.lang.String name,
                                              java.lang.Object... values)
                                       throws MethodException
Throws:
MethodException

basicRemove

protected static java.lang.Object basicRemove(java.lang.Object object,
                                              java.lang.String name,
                                              java.lang.Object value)
                                       throws FieldException
Throws:
FieldException

basicSet

protected static java.lang.Object basicSet(java.lang.Object object,
                                           java.lang.String name,
                                           java.lang.Object value)
                                    throws FieldException
Throws:
FieldException

checkCandidate

protected static boolean checkCandidate(java.lang.reflect.Method method,
                                        java.lang.String methodName,
                                        java.lang.Class[] pClasses)

checkCandidateClass

protected static boolean checkCandidateClass(java.lang.Class mClass,
                                             java.lang.Class pClass)

checkCandidateClasses

protected static boolean checkCandidateClasses(java.lang.Class[] mClasses,
                                               java.lang.Class[] pClasses)

createObject

public static <T> T createObject(java.lang.Class clazz,
                                 java.lang.Class<T> expectedClass)
                      throws ObjectCreationException
Create a new instance of Class "class"

Parameters:
clazz -
expectedClass -
Returns:
The new instance
Throws:
ObjectCreationException

createObject

public static <T> T createObject(java.lang.Class clazz,
                                 java.lang.Class<T> expectedClass,
                                 java.lang.Class[] parameterTypes,
                                 java.lang.Object[] parameters)
                      throws ObjectCreationException
Create a new instance of Class "class"

Parameters:
className -
expectedClass -
parameterTypes -
parameters -
Returns:
The new instance
Throws:
ObjectCreationException

createObject

public static <T> T createObject(java.lang.String className,
                                 java.lang.Class<T> expectedClass,
                                 java.lang.ClassLoader classLoader)
                      throws ObjectCreationException
Create a new instance of Class "className" via "classLoader".

Parameters:
className -
expectedClass -
classLoader -
Returns:
The new instance
Throws:
ObjectCreationException

findAnyMethod

protected static java.lang.reflect.Method findAnyMethod(java.lang.Class clazz,
                                                        java.lang.String name,
                                                        java.lang.Class... classes)
                                                 throws MethodException
Throws:
MethodException

findGetter

public static java.lang.reflect.Method findGetter(java.lang.Object object,
                                                  java.lang.String name)
                                           throws MethodException
Throws:
MethodException

findInserter

public static java.lang.reflect.Method findInserter(java.lang.Object object,
                                                    java.lang.String attribute,
                                                    java.lang.Object value)
                                             throws MethodException
Throws:
MethodException

findMatchingMethod

protected static java.lang.reflect.Method findMatchingMethod(java.lang.Class clazz,
                                                             java.lang.String name,
                                                             java.lang.Class[] classes)
                                                      throws MethodException
Throws:
MethodException

findMethod

public static java.lang.reflect.Method findMethod(java.lang.Object object,
                                                  java.lang.String methodName,
                                                  java.lang.Object... parameters)
                                           throws MethodException
Throws:
MethodException

findRemover

public static java.lang.reflect.Method findRemover(java.lang.Object object,
                                                   java.lang.String attribute,
                                                   java.lang.Object value)
                                            throws MethodException
Throws:
MethodException

findSetter

public static java.lang.reflect.Method findSetter(java.lang.Object object,
                                                  java.lang.String attribute,
                                                  java.lang.Object value)
                                           throws MethodException
Throws:
MethodException

findSimpleMethod

protected static java.lang.reflect.Method findSimpleMethod(java.lang.Class clazz,
                                                           java.lang.String name,
                                                           java.lang.Class... classes)
                                                    throws MethodException
Throws:
MethodException

get

public static java.lang.Object get(java.lang.Object object,
                                   java.lang.String name)
                            throws FieldException
Get the value for field name in object.

Parameters:
object -
name -
Returns:
the value for field name in object.
Throws:
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.NoSuchFieldException
FieldException

insert

public static java.lang.Object insert(java.lang.Object object,
                                      java.lang.String name,
                                      java.lang.Object value)
                               throws FieldException
Insert value in the relation field name in object. The value that was really inserted is returned (if supported by the underlying object implementation). To be exact, the result of the insert method invoked is returned.

Parameters:
object -
name -
value -
Returns:
the result of the insert method invoked is returned.
Throws:
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.NoSuchFieldException
FieldException

invoke

public static java.lang.Object invoke(java.lang.Object object,
                                      java.lang.String name,
                                      java.lang.Object... values)
                               throws MethodException
Invoke method name in object. The result of the invocation is returned.

Parameters:
object -
name -
values -
Returns:
The result of the invocation is returned.
Throws:
MethodException

remove

public static java.lang.Object remove(java.lang.Object object,
                                      java.lang.String name,
                                      java.lang.Object value)
                               throws FieldException
Remove value in the relation field name in object. The value that was removed is returned (if supported by the underlying object implementation). To be exact, the result of the remove method invoked is returned.

Parameters:
object -
name -
value -
Returns:
the result of the remove method invoked is returned.
Throws:
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.NoSuchFieldException
FieldException

set

public static java.lang.Object set(java.lang.Object object,
                                   java.lang.String name,
                                   java.lang.Object value)
                            throws FieldException
Set field name in object to value. The old value is returned (if supported by the underlying object implementation). To be exact, the result of the setter method invoked is returned.

Parameters:
object -
name -
value -
Returns:
the result of the setter method invoked is returned.
Throws:
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.NoSuchFieldException
FieldException