Class 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
    • Constructor Summary

      Constructors 
      Constructor Description
      ReflectionUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      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
    • 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