# Class IntrospectionUtils

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

public final class IntrospectionUtils extends Object
Utils for introspection and reflection

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static interface`
`IntrospectionUtils.PropertySource`

## Constructor Summary

Constructors
Constructor
Description
`IntrospectionUtils()`

## Method Summary

Modifier and Type
Method
Description
`static Object`
`callMethod1(Object target, String methodN, Object param1, String typeParam1, ClassLoader cl)`
`static Object`
`callMethodN(Object target, String methodN, Object[] params, Class<?>[] typeParams)`
`static String`
`capitalize(String name)`
Reverse of Introspector.decapitalize.
`static void`
`clear()`
`static Object`
`convert(String object, Class<?> paramType)`
`static String`
`escape(String s)`
`static Method`
`findMethod(Class<?> c, String name, Class<?>[] params)`
`static Method[]`
`findMethods(Class<?> c)`
`static Object`
`getProperty(Object o, String name)`
`static boolean`
`isInstance(Class<?> clazz, String type)`
Checks to see if the specified class is an instance of or assignable from the specified type.
`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'.
`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).
`static boolean`
`setProperty(Object o, String name, String value, boolean invokeSetProperty)`
`static boolean`
`setProperty(Object o, String name, String value, boolean invokeSetProperty, StringBuilder actualMethod)`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### IntrospectionUtils

public IntrospectionUtils()

## 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)

### setProperty

public static boolean setProperty(Object o, String name, String value, boolean invokeSetProperty, StringBuilder actualMethod)

### escape

public static String escape(String s)

Parameters:
  `s` - the input string
Returns:
  escaped string, per Java rule

### getProperty

public static Object getProperty(Object o, String name)

### 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()

### findMethods

public static Method[] findMethods(Class<?> c)

### findMethod

public static Method findMethod(Class<?> c, String name, Class<?>[] params)

### callMethod1

public static Object callMethod1(Object target, String methodN, Object param1, String typeParam1, ClassLoader cl) throws Exception

Throws:
  `Exception`

### callMethodN

public static Object callMethodN(Object target, String methodN, Object[] params, Class<?>[] typeParams) throws Exception

Throws:
  `Exception`

### convert

public static Object convert(String object, Class<?> paramType)

### 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.