Class IntrospectionUtils

java.lang.Object
org.apache.tomcat.util.IntrospectionUtils

public final class IntrospectionUtils extends Object
Utils for introspection and reflection
  • Method Details

    • setProperty

      public static boolean setProperty(Object o, String name, 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(Object o, String name, 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(Object o, String name, String value, boolean invokeSetProperty, 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 String escape(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 Object getProperty(Object o, 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 String replaceProperties(String value, Hashtable<Object,Object> staticProp, IntrospectionUtils.PropertySource[] dynamicProp, 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 String capitalize(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 Method[] findMethods(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 Method findMethod(Class<?> c, String name, 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 Object callMethod1(Object target, String methodN, Object param1, String typeParam1, ClassLoader cl) throws 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:
      Exception - if the method cannot be found or invoked
    • callMethodN

      public static Object callMethodN(Object target, String methodN, Object[] params, Class<?>[] typeParams) throws 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:
      Exception - if the method cannot be invoked
    • convert

      public static Object convert(String object, 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:
      IllegalArgumentException - if conversion fails
    • isInstance

      public static boolean isInstance(Class<?> clazz, 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(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.