Modifier and Type | Class and Description |
---|---|
static class |
Reflection.PropertyPath
This class represents a property path.
|
Modifier and Type | Method and Description |
---|---|
static <T> T |
accessField(Object instance,
String fieldName)
Returns the value of the field of the given instance on the given field name.
|
static <T> Constructor<T> |
findConstructor(Class<T> clazz,
Class<?>... parameterTypes)
Finds a constructor based on the given parameter types and returns
null is none is found. |
static Method |
findMethod(Object base,
String methodName,
Object... params)
Finds a method based on the method name, amount of parameters and limited typing and returns
null
is none is found. |
static <A extends Annotation> |
findMethods(Object base,
Class<A> annotation)
Finds methods having the given annotation.
|
static Map<Object,Reflection.PropertyPath> |
getBaseBeanPropertyPaths(Object bean)
Recursively collect all base bean property paths from the given bean which resolve to non-null bases.
|
static Object |
getBeanProperty(Object bean,
String property)
Obtain given property from given bean.
|
static <T> T |
instance(Class<T> clazz)
Returns a new instance of the given class object using the default constructor.
|
static <T> T |
instance(String className)
Returns a new instance of the given class name using the default constructor.
|
static <T> T |
invokeMethod(Object instance,
Method method,
Object... parameters)
Invoke given method of the given instance with the given parameters and return the result.
|
static <T> T |
invokeMethod(Object instance,
String methodName,
Object... parameters)
Invoke a method of the given instance on the given method name with the given parameters and return the result.
|
static <A extends Annotation> |
invokeMethods(Object instance,
Class<A> annotation)
Invoke methods of the given instance having the given annotation.
|
static boolean |
isAssignable(Object source,
Class<?> targetType)
Returns true if given source is assignable to target type, taking into account autoboxing.
|
static <T> T |
modifyField(Object instance,
Field field,
T value)
Modifies the value of the given field of the given instance with the given value.
|
static <T> T |
modifyField(Object instance,
String fieldName,
T value)
Modifies the value of the field of the given instance on the given field name with the given value.
|
static void |
setBeanProperties(Object bean,
Map<Reflection.PropertyPath,Object> properties)
Recursively set given properties on given bean.
|
static void |
setProperties(Object bean,
Map<String,Object> propertiesToSet)
Sets a collection of properties of a given bean to the values associated with those properties.
|
static void |
setPropertiesWithCoercion(Object bean,
Map<String,Object> propertiesToSet)
Sets a collection of properties of a given bean to the (optionally coerced) values associated with those properties.
|
static <T> Class<T> |
toClass(String className)
Returns the class object associated with the given class name, using the context class loader and if
that fails the defining class loader of the current class.
|
static <T> Class<T> |
toClassOrNull(String className)
Returns the class object associated with the given class name, using the context class loader and if
that fails the defining class loader of the current class.
|
public static void setProperties(Object bean, Map<String,Object> propertiesToSet)
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: bean.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.
If you need to set nested properties recursively as well, use setBeanProperties(Object, Map)
instead.
bean
- the bean on which properties will be setpropertiesToSet
- the map containing properties and their values to be set on the beanpublic static void setPropertiesWithCoercion(Object bean, Map<String,Object> propertiesToSet)
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: bean.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 setProperties(Object, Map)
. Here only
the available writable properties of the bean are matched against the map with properties to set. Properties
in the map for which there isn't a corresponding writable property on the bean are ignored.
Following the above two notes, use this method when attempting to set properties on an bean in a lenient best effort
basis. Use setProperties(Object, Map)
when all properties need to be set with the exact type as the value
appears in the map.
bean
- the bean on which properties will be setpropertiesToSet
- the map containing properties and their values to be set on the objectpublic static void setBeanProperties(Object bean, Map<Reflection.PropertyPath,Object> properties)
bean
- Bean to recursively set properties on.properties
- Properties to recursively set on bean. The map key represents the property path and the map value represents the property value.public static Object getBeanProperty(Object bean, String property)
bean
- Bean to obtain property from.property
- Property name.public static Map<Object,Reflection.PropertyPath> getBaseBeanPropertyPaths(Object bean)
bean
- The given bean.public static Method findMethod(Object base, String methodName, Object... params)
null
is none is found.
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.
base
- the object in which the method is to be foundmethodName
- name of the method to be foundparams
- the method parameterspublic static <A extends Annotation> List<Method> findMethods(Object base, Class<A> annotation)
base
- The object in which the methods are to be found.annotation
- Annotation of the method to be found.public static boolean isAssignable(Object source, Class<?> targetType)
source
- The source to be checked.targetType
- The target type to be checked.public static <T> Class<T> toClass(String className)
T
- The expected class type.className
- Fully qualified class name of the class for which a class object needs to be created.IllegalStateException
- If the class cannot be loaded.ClassCastException
- When T
is of wrong type.public static <T> Class<T> toClassOrNull(String className)
T
- The expected class type.className
- Fully qualified class name of the class for which a class object needs to be created.ClassCastException
- When T
is of wrong type.public static <T> Constructor<T> findConstructor(Class<T> clazz, Class<?>... parameterTypes)
null
is none is found.clazz
- The class object for which the constructor is to be found.parameterTypes
- The desired method parameter types.public static <T> T instance(String className)
T
- The expected return type.className
- Fully qualified class name of the class for which an instance needs to be created.IllegalStateException
- If the class cannot be loaded.ClassCastException
- When T
is of wrong type.public static <T> T instance(Class<T> clazz)
T
- The generic object type.clazz
- The class object for which an instance needs to be created.IllegalStateException
- If the class cannot be found, or cannot be instantiated, or when a security manager
prevents this operation.public static <T> T accessField(Object instance, String fieldName)
T
- The expected return type.instance
- The instance to access the given field on.fieldName
- The name of the field to be accessed on the given instance.ClassCastException
- When T
is of wrong type.IllegalStateException
- If the field cannot be accessed.public static <T> T modifyField(Object instance, String fieldName, T value)
T
- The field type.instance
- The instance to access the given field on.fieldName
- The name of the field to be accessed on the given instance.value
- The new value of the field of the given instance on the given field name.ClassCastException
- When T
is of wrong type.IllegalStateException
- If the field cannot be modified.public static <T> T modifyField(Object instance, Field field, T value)
T
- The field type.instance
- The instance to access the given field on.field
- The field to be accessed on the given instance.value
- The new value of the given field of the given instance.ClassCastException
- When T
is of wrong type.IllegalStateException
- If the field cannot be modified.public static <T> T invokeMethod(Object instance, String methodName, Object... parameters)
Note: the current implementation assumes for simplicity that no one of the given parameters is null. If one of them is still null, a NullPointerException will be thrown.
T
- The expected return type.instance
- The instance to invoke the given method on.methodName
- The name of the method to be invoked on the given instance.parameters
- The method parameters, if any.NullPointerException
- When one of the given parameters is null.IllegalStateException
- If the method cannot be invoked.ClassCastException
- When T
is of wrong type.public static <T> T invokeMethod(Object instance, Method method, Object... parameters)
T
- The expected return type.instance
- The instance to invoke the given method on.method
- The method to be invoked on the given instance.parameters
- The method parameters, if any.IllegalStateException
- If the method cannot be invoked.ClassCastException
- When T
is of wrong type.public static <A extends Annotation> void invokeMethods(Object instance, Class<A> annotation)
instance
- The instance to invoke the methods having the given annotation on.annotation
- Annotation of the methods to be invoked.IllegalStateException
- If the method cannot be invoked.Copyright © 2012–2020 OmniFaces. All rights reserved.