Class ReflectionUtils

java.lang.Object
com.sun.faces.util.ReflectionUtils

public final class ReflectionUtils extends Object

A set of utility methods to make working with Classes and Reflection a little easier.

  • Method Details

    • setProperties

      public static void setProperties(Object object, Map<String,Object> propertiesToSet)
      Sets a collection of properties of a given object to the values associated with those properties.

      In the map that represents these properties, each key represents the name of the property, with the value associated with that key being the value that is set for the property.

      E.g. map entry key = foo, value = "bar", which "bar" an instance of String, will conceptually result in the following call: object.setFoo("string");

      NOTE: This particular method assumes that there's a write method for each property in the map with the right type. No specific checking is done whether this is indeed the case.

      Parameters:
      object - the object on which properties will be set
      propertiesToSet - the map containing properties and their values to be set on the object
    • setPropertiesWithCoercion

      public static void setPropertiesWithCoercion(Object object, Map<String,Object> propertiesToSet)
      Sets a collection of properties of a given object to the (optionally coerced) values associated with those properties.

      In the map that represents these properties, each key represents the name of the property, with the value associated with that key being the value that is set for the property.

      E.g. map entry key = foo, value = "bar", which "bar" an instance of String, will conceptually result in the following call: object.setFoo("string");

      NOTE 1: In case the value is a String, and the target type is not String, the standard property editor mechanism will be used to attempt a conversion.

      Note 2: This method operates somewhat as the reverse of Reflection#setProperties(Object, Map) Here only the available writable properties of the object are matched against the map with properties to set. Properties in the map for which there isn't a corresponding writable property on the object are ignored.

      Following the above two notes, use this method when attempting to set properties on an object in a lenient best effort basis. Use Reflection#setProperties(Object, Map) when all properties need to be set with the exact type as the value appears in the map.

      Parameters:
      object - the object on which properties will be set
      propertiesToSet - the map containing properties and their values to be set on the object
    • findMethod

      public static Method findMethod(Object base, String methodName, Object[] params)
      Finds a method based on the method name, amount of parameters and limited typing, if necessary prefixed with "get".

      Note that this supports overloading, but a limited one. Given an actual parameter of type Long, this will select a method accepting Number when the choice is between Number and a non-compatible type like String. However, it will NOT select the best match if the choice is between Number and Long.

      Parameters:
      base - the object in which the method is to be found
      methodName - name of the method to be found
      params - the method parameters
      Returns:
      a method if one is found, null otherwise
    • toClass

      public static Class<?> toClass(String className)
      Returns the Class instance associated with the class of the given string, using the context class loader and if that fails the defining class loader of the current class.
      Parameters:
      className - fully qualified class name of the class for which a Class instance needs to be created
      Returns:
      the Class object for the class with the given name.
      Throws:
      IllegalStateException - if the class cannot be found.
    • instance

      public static <T> T instance(String className)
      Creates an instance of a class with the given fully qualified class name.
      Type Parameters:
      T - The generic object type.
      Parameters:
      className - fully qualified class name of the class for which an instance needs to be created
      Returns:
      an instance of the class denoted by className
      Throws:
      IllegalStateException - if the class cannot be found
    • instance

      public static <T> T instance(Class<T> clazz)
      Creates a new instance of the class represented by the given Class object
      Type Parameters:
      T - The generic object type.
      Parameters:
      clazz - the Class object for which an instance needs to be created
      Returns:
      an instance of the class as given by the clazz parameter
      Throws:
      IllegalStateException - if the class cannot be found, or cannot be instantiated or when a security manager prevents this operation
    • clearCache

      public static void clearCache(ClassLoader loader)

      Clears the cache for the specified ClassLoader.

      This method MUST be called when ConfigureListener .contextDestroyed() is called.

      Parameters:
      loader - the ClassLoader whose associated cache should be cleared
    • initCache

      public static void initCache(ClassLoader loader)
    • lookupConstructor

      public static Constructor<?> lookupConstructor(Class<?> clazz, Class<?>... params)

      Returns the Constructor appropriate to the specified Class and parameters.

      Parameters:
      clazz - the Class of interest
      params - the parameters for the constructor of the provided Class
      Returns:
      a Constructor that can be invoked with the specified parameters
    • lookupMethod

      public static Method lookupMethod(Object object, String methodName, Class<?>... params)

      Returns the Method appropriate to the specified object instance, method name, and parameters.

      Parameters:
      object - the Object instance of interest
      methodName - the name of the method
      params - the parameters for the specified method
      Returns:
      a Method that can be invoked with the specified parameters
    • lookupMethod

      public static Method lookupMethod(Class<?> clazz, String methodName, Class<?>... params)

      Returns the Method appropriate to the specified Class, method name, and parameters.

      Parameters:
      clazz - the Class of interest
      methodName - the name of the method
      params - the parameters for the specified method
      Returns:
      a Method that can be invoked with the specified parameters
    • newInstance

      public static Object newInstance(String className) throws InstantiationException, IllegalAccessException

      Constructs a new object instance based off the provided class name.

      Parameters:
      className - the class of the object to instantiate
      Returns:
      a new instances of said class
      Throws:
      InstantiationException - if the class cannot be instantiated
      IllegalAccessException - if there is a security violation
    • lookupClass

      public static Class<?> lookupClass(String className)

      Obtain a Class instance based on the provided String name.

      Parameters:
      className - the class to look up
      Returns:
      the Class corresponding to className
    • lookupWriteMethod

      public static Method lookupWriteMethod(String className, String propertyName)
      Parameters:
      className - the fully qualified class name
      propertyName - a JavaBeans property name
      Returns:
      a method suitable for setting a JavaBeans property, or null if the property doesn't exist or is readonly.
    • lookupReadMethod

      public static Method lookupReadMethod(String className, String propertyName)
      Parameters:
      className - the fully qualified class name
      propertyName - a JavaBeans property name
      Returns:
      a method suitable for obtaining the value of a JavaBeans property, or null if the property doesn't exist or can't be read.