20080913, rgf

org.apache.bsf.util
Class ReflectionUtils

java.lang.Object
  extended byorg.apache.bsf.util.ReflectionUtils

public class ReflectionUtils
extends java.lang.Object

This file is a collection of reflection utilities. There are utilities for creating beans, getting bean infos, setting/getting properties, and binding events.

Author:
Sanjiva Weerawarana, Joseph Kesselman

Field Summary
(package private) static java.lang.ClassLoader bsfManagerDefinedCL
           
 
Constructor Summary
ReflectionUtils()
           
 
Method Summary
static void addEventListener(java.lang.Object source, java.lang.String eventSetName, EventProcessor processor)
          Add an event processor as a listener to some event coming out of an object.
static Bean createBean(java.lang.ClassLoader cld, java.lang.String className, java.lang.Class[] argTypes, java.lang.Object[] args)
          Create a bean using given class loader and using the appropriate constructor for the given args of the given arg types.
static Bean createBean(java.lang.ClassLoader cld, java.lang.String className, java.lang.Object[] args)
          Create a bean using given class loader and using the appropriate constructor for the given args.
static Bean getField(java.lang.Object target, java.lang.String fieldName)
           
static Bean getProperty(java.lang.Object target, java.lang.String propName, java.lang.Integer index)
          Get a property of a bean.
static void setField(java.lang.Object target, java.lang.String fieldName, Bean value, TypeConvertorRegistry tcr)
           
static void setProperty(java.lang.Object target, java.lang.String propName, java.lang.Integer index, java.lang.Object value, java.lang.Class valueType, TypeConvertorRegistry tcr)
          Set a property of a bean to a given value.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

bsfManagerDefinedCL

static java.lang.ClassLoader bsfManagerDefinedCL
Constructor Detail

ReflectionUtils

public ReflectionUtils()
Method Detail

addEventListener

public static void addEventListener(java.lang.Object source,
                                    java.lang.String eventSetName,
                                    EventProcessor processor)
                             throws java.beans.IntrospectionException,
                                    java.lang.IllegalArgumentException,
                                    java.lang.IllegalAccessException,
                                    java.lang.InstantiationException,
                                    java.lang.reflect.InvocationTargetException
Add an event processor as a listener to some event coming out of an object.

Parameters:
source - event source
eventSetName - name of event set from event src to bind to
processor - event processor the event should be delegated to when it occurs; either via processEvent or processExceptionableEvent.
Throws:
java.beans.IntrospectionException - if unable to introspect
java.lang.IllegalArgumentException - if event set is unknown
java.lang.IllegalAccessException - if the event adapter class or initializer is not accessible.
java.lang.InstantiationException - if event adapter instantiation fails
java.lang.reflect.InvocationTargetException - if something goes wrong while running add event listener method

createBean

public static Bean createBean(java.lang.ClassLoader cld,
                              java.lang.String className,
                              java.lang.Class[] argTypes,
                              java.lang.Object[] args)
                       throws java.lang.ClassNotFoundException,
                              java.lang.NoSuchMethodException,
                              java.lang.InstantiationException,
                              java.lang.IllegalAccessException,
                              java.lang.IllegalArgumentException,
                              java.lang.reflect.InvocationTargetException,
                              java.io.IOException
Create a bean using given class loader and using the appropriate constructor for the given args of the given arg types.

Parameters:
cld - the class loader to use. If null, Class.forName is used.
className - name of class to instantiate
argTypes - array of argument types
args - array of arguments
Returns:
the newly created bean
Throws:
java.lang.ClassNotFoundException - if class is not loaded
java.lang.NoSuchMethodException - if constructor can't be found
java.lang.InstantiationException - if class can't be instantiated
java.lang.IllegalAccessException - if class is not accessible
java.lang.IllegalArgumentException - if argument problem
java.lang.reflect.InvocationTargetException - if constructor excepted
java.io.IOException - if I/O error in beans.instantiate

createBean

public static Bean createBean(java.lang.ClassLoader cld,
                              java.lang.String className,
                              java.lang.Object[] args)
                       throws java.lang.ClassNotFoundException,
                              java.lang.NoSuchMethodException,
                              java.lang.InstantiationException,
                              java.lang.IllegalAccessException,
                              java.lang.IllegalArgumentException,
                              java.lang.reflect.InvocationTargetException,
                              java.io.IOException
Create a bean using given class loader and using the appropriate constructor for the given args. Figures out the arg types and calls above.

Parameters:
cld - the class loader to use. If null, Class.forName is used.
className - name of class to instantiate
args - array of arguments
Returns:
the newly created bean
Throws:
java.lang.ClassNotFoundException - if class is not loaded
java.lang.NoSuchMethodException - if constructor can't be found
java.lang.InstantiationException - if class can't be instantiated
java.lang.IllegalAccessException - if class is not accessible
java.lang.IllegalArgumentException - if argument problem
java.lang.reflect.InvocationTargetException - if constructor excepted
java.io.IOException - if I/O error in beans.instantiate

getField

public static Bean getField(java.lang.Object target,
                            java.lang.String fieldName)
                     throws java.lang.IllegalArgumentException,
                            java.lang.IllegalAccessException
Throws:
java.lang.IllegalArgumentException
java.lang.IllegalAccessException

getProperty

public static Bean getProperty(java.lang.Object target,
                               java.lang.String propName,
                               java.lang.Integer index)
                        throws java.beans.IntrospectionException,
                               java.lang.IllegalArgumentException,
                               java.lang.IllegalAccessException,
                               java.lang.reflect.InvocationTargetException
Get a property of a bean.

Parameters:
target - the object whose prop is to be gotten
propName - name of the property to set
index - index to get (if property is indexed)
Throws:
java.beans.IntrospectionException - if unable to introspect
java.lang.IllegalArgumentException - if problems with args: if the property is unknown, or if the property is given an index when its not, or if the property is not writeable, or if the given value cannot be assigned to the it (type mismatch).
java.lang.IllegalAccessException - if read method is not accessible
java.lang.reflect.InvocationTargetException - if read method excepts

setField

public static void setField(java.lang.Object target,
                            java.lang.String fieldName,
                            Bean value,
                            TypeConvertorRegistry tcr)
                     throws java.lang.IllegalArgumentException,
                            java.lang.IllegalAccessException
Throws:
java.lang.IllegalArgumentException
java.lang.IllegalAccessException

setProperty

public static void setProperty(java.lang.Object target,
                               java.lang.String propName,
                               java.lang.Integer index,
                               java.lang.Object value,
                               java.lang.Class valueType,
                               TypeConvertorRegistry tcr)
                        throws java.beans.IntrospectionException,
                               java.lang.IllegalArgumentException,
                               java.lang.IllegalAccessException,
                               java.lang.reflect.InvocationTargetException
Set a property of a bean to a given value.

Parameters:
target - the object whose prop is to be set
propName - name of the property to set
index - index to set (if property is indexed)
value - the property value
valueType - the type of the above (needed when its null)
tcr - type convertor registry to use to convert value type to property type if necessary
Throws:
java.beans.IntrospectionException - if unable to introspect
java.lang.IllegalArgumentException - if problems with args: if the property is unknown, or if the property is given an index when its not, or if the property is not writeable, or if the given value cannot be assigned to the it (type mismatch).
java.lang.IllegalAccessException - if write method is not accessible
java.lang.reflect.InvocationTargetException - if write method excepts

20080913, rgf