org.apache.camel.util
Class IntrospectionSupport

java.lang.Object
  extended by org.apache.camel.util.IntrospectionSupport

public final class IntrospectionSupport
extends Object

Helper for introspections of beans.

Important: Its recommended to call the stop() method when CamelContext is being stopped. This allows to clear the introspection cache.

This implementation will skip methods from java.lang.Object and java.lang.reflect.Proxy.

This implementation will use a cache when the getProperties(Object, java.util.Map, String) method is being used. Also the cacheClass(Class) method gives access to the introspect cache.


Nested Class Summary
static class IntrospectionSupport.ClassInfo
          Structure of an introspected class.
static class IntrospectionSupport.MethodInfo
          Structure of an introspected method.
 
Method Summary
static IntrospectionSupport.ClassInfo cacheClass(Class<?> clazz)
          Introspects the given class.
static Map<String,Object> extractProperties(Map<String,Object> properties, String optionPrefix)
           
static Set<Method> findSetterMethods(Class<?> clazz, String name, boolean allowBuilderPattern)
           
protected static List<Method> findSetterMethodsOrderedByParameterType(Class<?> target, String propertyName, boolean allowBuilderPattern)
           
static String getGetterShorthandName(Method method)
           
static Object getOrElseProperty(Object target, String property, Object defaultValue)
           
static boolean getProperties(Object target, Map<String,Object> properties, String optionPrefix)
          Will inspect the target for properties.
static boolean getProperties(Object target, Map<String,Object> properties, String optionPrefix, boolean includeNull)
          Will inspect the target for properties.
static Object getProperty(Object target, String property)
           
static Method getPropertyGetter(Class<?> type, String propertyName)
           
static Method getPropertySetter(Class<?> type, String propertyName)
           
static String getSetterShorthandName(Method method)
           
static boolean hasProperties(Map<String,Object> properties, String optionPrefix)
           
static boolean isGetter(Method method)
           
static boolean isPropertyIsGetter(Class<?> type, String propertyName)
           
static boolean isSetter(Method method)
           
static boolean isSetter(Method method, boolean allowBuilderPattern)
           
static boolean setProperties(Object target, Map<String,Object> properties)
           
static boolean setProperties(Object target, Map<String,Object> properties, String optionPrefix)
           
static boolean setProperties(Object target, Map<String,Object> properties, String optionPrefix, boolean allowBuilderPattern)
           
static boolean setProperties(TypeConverter typeConverter, Object target, Map<String,Object> properties)
           
static boolean setProperty(CamelContext context, TypeConverter typeConverter, Object target, String name, Object value, String refName, boolean allowBuilderPattern)
          This method supports two modes to set a property: 1.
static boolean setProperty(Object target, String name, Object value)
           
static boolean setProperty(Object target, String name, Object value, boolean allowBuilderPattern)
           
static boolean setProperty(TypeConverter typeConverter, Object target, String name, Object value)
           
static void stop()
          CamelContext should call this stop method when its stopping.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

stop

public static void stop()
CamelContext should call this stop method when its stopping.

This implementation will clear its introspection cache.


isGetter

public static boolean isGetter(Method method)

getGetterShorthandName

public static String getGetterShorthandName(Method method)

getSetterShorthandName

public static String getSetterShorthandName(Method method)

isSetter

public static boolean isSetter(Method method,
                               boolean allowBuilderPattern)

isSetter

public static boolean isSetter(Method method)

getProperties

public static boolean getProperties(Object target,
                                    Map<String,Object> properties,
                                    String optionPrefix)
Will inspect the target for properties.

Notice a property must have both a getter/setter method to be included. Notice all null values will be included.

Parameters:
target - the target bean
properties - the map to fill in found properties
optionPrefix - an optional prefix to append the property key
Returns:
true if any properties was found, false otherwise.

getProperties

public static boolean getProperties(Object target,
                                    Map<String,Object> properties,
                                    String optionPrefix,
                                    boolean includeNull)
Will inspect the target for properties.

Notice a property must have both a getter/setter method to be included.

Parameters:
target - the target bean
properties - the map to fill in found properties
optionPrefix - an optional prefix to append the property key
includeNull - whether to include null values
Returns:
true if any properties was found, false otherwise.

cacheClass

public static IntrospectionSupport.ClassInfo cacheClass(Class<?> clazz)
Introspects the given class.

Parameters:
clazz - the class
Returns:
the introspection result as a IntrospectionSupport.ClassInfo structure.

hasProperties

public static boolean hasProperties(Map<String,Object> properties,
                                    String optionPrefix)

getProperty

public static Object getProperty(Object target,
                                 String property)
                          throws NoSuchMethodException,
                                 IllegalAccessException,
                                 InvocationTargetException
Throws:
NoSuchMethodException
IllegalAccessException
InvocationTargetException

getOrElseProperty

public static Object getOrElseProperty(Object target,
                                       String property,
                                       Object defaultValue)

getPropertyGetter

public static Method getPropertyGetter(Class<?> type,
                                       String propertyName)
                                throws NoSuchMethodException
Throws:
NoSuchMethodException

getPropertySetter

public static Method getPropertySetter(Class<?> type,
                                       String propertyName)
                                throws NoSuchMethodException
Throws:
NoSuchMethodException

isPropertyIsGetter

public static boolean isPropertyIsGetter(Class<?> type,
                                         String propertyName)

setProperties

public static boolean setProperties(Object target,
                                    Map<String,Object> properties,
                                    String optionPrefix,
                                    boolean allowBuilderPattern)
                             throws Exception
Throws:
Exception

setProperties

public static boolean setProperties(Object target,
                                    Map<String,Object> properties,
                                    String optionPrefix)
                             throws Exception
Throws:
Exception

extractProperties

public static Map<String,Object> extractProperties(Map<String,Object> properties,
                                                   String optionPrefix)

setProperties

public static boolean setProperties(TypeConverter typeConverter,
                                    Object target,
                                    Map<String,Object> properties)
                             throws Exception
Throws:
Exception

setProperties

public static boolean setProperties(Object target,
                                    Map<String,Object> properties)
                             throws Exception
Throws:
Exception

setProperty

public static boolean setProperty(CamelContext context,
                                  TypeConverter typeConverter,
                                  Object target,
                                  String name,
                                  Object value,
                                  String refName,
                                  boolean allowBuilderPattern)
                           throws Exception
This method supports two modes to set a property: 1. Setting a property that has already been resolved, this is the case when context and refName are NULL and value is non-NULL. 2. Setting a property that has not yet been resolved, the property will be resolved based on the suitable methods found matching the property name on the target bean. For this mode to be triggered the parameters context and refName must NOT be NULL, and value MUST be NULL.

Throws:
Exception

setProperty

public static boolean setProperty(TypeConverter typeConverter,
                                  Object target,
                                  String name,
                                  Object value)
                           throws Exception
Throws:
Exception

setProperty

public static boolean setProperty(Object target,
                                  String name,
                                  Object value,
                                  boolean allowBuilderPattern)
                           throws Exception
Throws:
Exception

setProperty

public static boolean setProperty(Object target,
                                  String name,
                                  Object value)
                           throws Exception
Throws:
Exception

findSetterMethods

public static Set<Method> findSetterMethods(Class<?> clazz,
                                            String name,
                                            boolean allowBuilderPattern)

findSetterMethodsOrderedByParameterType

protected static List<Method> findSetterMethodsOrderedByParameterType(Class<?> target,
                                                                      String propertyName,
                                                                      boolean allowBuilderPattern)


Apache Camel