Class IntrospectionUtils


  • public final class IntrospectionUtils
    extends java.lang.Object
    Utils for introspection and reflection
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.Object callMethod1​(java.lang.Object target, java.lang.String methodN, java.lang.Object param1, java.lang.String typeParam1, java.lang.ClassLoader cl)
      Call a method with a single parameter on the given target object.
      static java.lang.Object callMethodN​(java.lang.Object target, java.lang.String methodN, java.lang.Object[] params, java.lang.Class<?>[] typeParams)
      Call a method with multiple parameters on the given target object.
      static java.lang.String capitalize​(java.lang.String name)
      Reverse of Introspector.decapitalize.
      static void clear()
      Clear the internal method cache.
      static java.lang.Object convert​(java.lang.String object, java.lang.Class<?> paramType)
      Convert a string value to the specified type.
      static java.lang.String escape​(java.lang.String s)
      Escapes special characters in a string for use in generated code.
      static java.lang.reflect.Method findMethod​(java.lang.Class<?> c, java.lang.String name, java.lang.Class<?>[] params)
      Find a specific method by name and parameter types.
      static java.lang.reflect.Method[] findMethods​(java.lang.Class<?> c)
      Find all public methods of the given class, using a cache for performance.
      static java.lang.Object getProperty​(java.lang.Object o, java.lang.String name)
      Get the value of a property from the given object.
      static boolean isInstance​(java.lang.Class<?> clazz, java.lang.String type)
      Checks to see if the specified class is an instance of or assignable from the specified type.
      static java.lang.String replaceProperties​(java.lang.String value, java.util.Hashtable<java.lang.Object,​java.lang.Object> staticProp, IntrospectionUtils.PropertySource[] dynamicProp, java.lang.ClassLoader classLoader)
      Replaces ${NAME} in the value with the value of the property 'NAME'.
      static boolean setProperty​(java.lang.Object o, java.lang.String name, java.lang.String value)
      Find a method with the right name If found, call the method ( if param is int or boolean we'll convert value to the right type before) - that means you can have setDebug(1).
      static boolean setProperty​(java.lang.Object o, java.lang.String name, java.lang.String value, boolean invokeSetProperty)
      Set a property on the given object.
      static boolean setProperty​(java.lang.Object o, java.lang.String name, java.lang.String value, boolean invokeSetProperty, java.lang.StringBuilder actualMethod)
      Set a property on the given object, tracking the actual method called.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • setProperty

        public static boolean setProperty​(java.lang.Object o,
                                          java.lang.String name,
                                          java.lang.String value)
        Find a method with the right name If found, call the method ( if param is int or boolean we'll convert value to the right type before) - that means you can have setDebug(1).
        Parameters:
        o - The object to set a property on
        name - The property name
        value - The property value
        Returns:
        true if operation was successful
      • setProperty

        public static boolean setProperty​(java.lang.Object o,
                                          java.lang.String name,
                                          java.lang.String value,
                                          boolean invokeSetProperty)
        Set a property on the given object.
        Parameters:
        o - the object to set the property on
        name - the property name
        value - the property value
        invokeSetProperty - whether to invoke setProperty as a fallback
        Returns:
        true if the operation was successful
      • setProperty

        public static boolean setProperty​(java.lang.Object o,
                                          java.lang.String name,
                                          java.lang.String value,
                                          boolean invokeSetProperty,
                                          java.lang.StringBuilder actualMethod)
        Set a property on the given object, tracking the actual method called.
        Parameters:
        o - the object to set the property on
        name - the property name
        value - the property value
        invokeSetProperty - whether to invoke setProperty as a fallback
        actualMethod - StringBuilder to append the actual method call to, or null
        Returns:
        true if the operation was successful
      • escape

        public static java.lang.String escape​(java.lang.String s)
        Escapes special characters in a string for use in generated code.
        Parameters:
        s - the input string
        Returns:
        the escaped string with double quotes, backslashes, newlines and carriage returns escaped
      • getProperty

        public static java.lang.Object getProperty​(java.lang.Object o,
                                                   java.lang.String name)
        Get the value of a property from the given object.
        Parameters:
        o - the object to get the property from
        name - the property name
        Returns:
        the property value, or null if not found
      • replaceProperties

        public static java.lang.String replaceProperties​(java.lang.String value,
                                                         java.util.Hashtable<java.lang.Object,​java.lang.Object> staticProp,
                                                         IntrospectionUtils.PropertySource[] dynamicProp,
                                                         java.lang.ClassLoader classLoader)
        Replaces ${NAME} in the value with the value of the property 'NAME'. Replaces ${NAME:DEFAULT} with the value of the property 'NAME:DEFAULT', if the property 'NAME:DEFAULT' is not set, the expression is replaced with the value of the property 'NAME', if the property 'NAME' is not set, the expression is replaced with 'DEFAULT'. If the property is not set and there is no default the value will be returned unmodified.
        Parameters:
        value - The value
        staticProp - Replacement properties
        dynamicProp - Replacement properties
        classLoader - Class loader associated with the code requesting the property
        Returns:
        the replacement value
      • capitalize

        public static java.lang.String capitalize​(java.lang.String name)
        Reverse of Introspector.decapitalize.
        Parameters:
        name - The name
        Returns:
        the capitalized string
      • clear

        public static void clear()
        Clear the internal method cache.
      • findMethods

        public static java.lang.reflect.Method[] findMethods​(java.lang.Class<?> c)
        Find all public methods of the given class, using a cache for performance.
        Parameters:
        c - the class
        Returns:
        the array of methods
      • findMethod

        public static java.lang.reflect.Method findMethod​(java.lang.Class<?> c,
                                                          java.lang.String name,
                                                          java.lang.Class<?>[] params)
        Find a specific method by name and parameter types.
        Parameters:
        c - the class
        name - the method name
        params - the parameter types, or null for no parameters
        Returns:
        the matching method, or null if not found
      • callMethod1

        public static java.lang.Object callMethod1​(java.lang.Object target,
                                                   java.lang.String methodN,
                                                   java.lang.Object param1,
                                                   java.lang.String typeParam1,
                                                   java.lang.ClassLoader cl)
                                            throws java.lang.Exception
        Call a method with a single parameter on the given target object.
        Parameters:
        target - the target object
        methodN - the method name
        param1 - the parameter value
        typeParam1 - the parameter type name, or null to infer from the parameter
        cl - the class loader to use for loading the parameter type
        Returns:
        the result of the method call
        Throws:
        java.lang.Exception - if the method cannot be found or invoked
      • callMethodN

        public static java.lang.Object callMethodN​(java.lang.Object target,
                                                   java.lang.String methodN,
                                                   java.lang.Object[] params,
                                                   java.lang.Class<?>[] typeParams)
                                            throws java.lang.Exception
        Call a method with multiple parameters on the given target object.
        Parameters:
        target - the target object
        methodN - the method name
        params - the parameter values
        typeParams - the parameter types
        Returns:
        the result of the method call, or null if the method cannot be found
        Throws:
        java.lang.Exception - if the method cannot be invoked
      • convert

        public static java.lang.Object convert​(java.lang.String object,
                                               java.lang.Class<?> paramType)
        Convert a string value to the specified type.
        Parameters:
        object - the string value to convert
        paramType - the target type
        Returns:
        the converted object
        Throws:
        java.lang.IllegalArgumentException - if conversion fails
      • isInstance

        public static boolean isInstance​(java.lang.Class<?> clazz,
                                         java.lang.String type)
        Checks to see if the specified class is an instance of or assignable from the specified type. The class clazz, all its superclasses, interfaces and those superinterfaces are tested for a match against the type name type. This is similar to instanceof or Class.isAssignableFrom(java.lang.Class<?>) except that the target type will not be resolved into a Class object, which provides some security and memory benefits.
        Parameters:
        clazz - The class to test for a match.
        type - The name of the type that clazz must be.
        Returns:
        true if the clazz tested is an instance of the specified type, false otherwise.