Class PropertyUtils
Utility methods for using Java Reflection APIs to facilitate generic property getter and setter operations on Java objects.
The implementations for these methods are provided by PropertyUtilsBean
. For more details see PropertyUtilsBean
.
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
addBeanIntrospector
(BeanIntrospector introspector) Adds aBeanIntrospector
.static void
Clear any cached property descriptors information for all classes loaded by any class loaders.static void
copyProperties
(Object dest, Object orig) Copy property values from the "origin" bean to the "destination" bean for all cases where the property names are the same (even though the actual getter and setter methods might have been customized viaBeanInfo
classes).Return the entire set of properties for which the specified bean provides a read method.static Object
getIndexedProperty
(Object bean, String name) Return the value of the specified indexed property of the specified bean, with no type conversions.static Object
getIndexedProperty
(Object bean, String name, int index) Return the value of the specified indexed property of the specified bean, with no type conversions.static Object
getMappedProperty
(Object bean, String name) Return the value of the specified mapped property of the specified bean, with no type conversions.static Object
getMappedProperty
(Object bean, String name, String key) Return the value of the specified mapped property of the specified bean, with no type conversions.static Object
getNestedProperty
(Object bean, String name) Return the value of the (possibly nested) property of the specified name, for the specified bean, with no type conversions.static Object
getProperty
(Object bean, String name) Return the value of the specified property of the specified bean, no matter which property reference format is used, with no type conversions.static PropertyDescriptor
getPropertyDescriptor
(Object bean, String name) Retrieve the property descriptor for the specified property of the specified bean, or returnnull
if there is no such descriptor.static PropertyDescriptor[]
getPropertyDescriptors
(Class<?> beanClass) Retrieve the property descriptors for the specified class, introspecting and caching them the first time a particular bean class is encountered.static PropertyDescriptor[]
getPropertyDescriptors
(Object bean) Retrieve the property descriptors for the specified bean, introspecting and caching them the first time a particular bean class is encountered.static Class<?>
getPropertyEditorClass
(Object bean, String name) Return the Java Class representing the property editor class that has been registered for this property (if any).static Class<?>
getPropertyType
(Object bean, String name) Return the Java Class representing the property type of the specified property, ornull
if there is no such property for the specified bean.static Method
getReadMethod
(PropertyDescriptor descriptor) Return an accessible property getter method for this property, if there is one; otherwise returnnull
.static Object
getSimpleProperty
(Object bean, String name) Return the value of the specified simple property of the specified bean, with no type conversions.static Method
getWriteMethod
(PropertyDescriptor descriptor) Return an accessible property setter method for this property, if there is one; otherwise returnnull
.static boolean
isReadable
(Object bean, String name) Returntrue
if the specified property name identifies a readable property on the specified bean; otherwise, returnfalse
.static boolean
isWriteable
(Object bean, String name) Returntrue
if the specified property name identifies a writable property on the specified bean; otherwise, returnfalse
.static boolean
removeBeanIntrospector
(BeanIntrospector introspector) Removes the specifiedBeanIntrospector
.static void
Resets the registeredBeanIntrospector
objects to the initial default state.static void
setIndexedProperty
(Object bean, String name, int index, Object value) Sets the value of the specified indexed property of the specified bean, with no type conversions.static void
setIndexedProperty
(Object bean, String name, Object value) Sets the value of the specified indexed property of the specified bean, with no type conversions.static void
setMappedProperty
(Object bean, String name, Object value) Sets the value of the specified mapped property of the specified bean, with no type conversions.static void
setMappedProperty
(Object bean, String name, String key, Object value) Sets the value of the specified mapped property of the specified bean, with no type conversions.static void
setNestedProperty
(Object bean, String name, Object value) Sets the value of the (possibly nested) property of the specified name, for the specified bean, with no type conversions.static void
setProperty
(Object bean, String name, Object value) Set the value of the specified property of the specified bean, no matter which property reference format is used, with no type conversions.static void
setSimpleProperty
(Object bean, String name, Object value) Set the value of the specified simple property of the specified bean, with no type conversions.
-
Constructor Details
-
PropertyUtils
public PropertyUtils()
-
-
Method Details
-
addBeanIntrospector
Adds aBeanIntrospector
. This object is invoked when the property descriptors of a class need to be obtained.- Parameters:
introspector
- theBeanIntrospector
to be added (must not be null- Throws:
IllegalArgumentException
- if the argument is null- Since:
- 1.9
-
clearDescriptors
Clear any cached property descriptors information for all classes loaded by any class loaders. This is useful in cases where class loaders are thrown away to implement class reloading.For more details see
PropertyUtilsBean
.- See Also:
-
copyProperties
public static void copyProperties(Object dest, Object orig) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Copy property values from the "origin" bean to the "destination" bean for all cases where the property names are the same (even though the actual getter and setter methods might have been customized via
BeanInfo
classes).For more details see
PropertyUtilsBean
.- Parameters:
dest
- Destination bean whose properties are modifiedorig
- Origin bean whose properties are retrieved- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- if thedest
ororig
argument is nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
describe
public static Map<String,Object> describe(Object bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Return the entire set of properties for which the specified bean provides a read method.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose properties are to be extracted- Returns:
- The set of properties for the bean
- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
is nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getIndexedProperty
public static Object getIndexedProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Return the value of the specified indexed property of the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be extractedname
-propertyname[index]
of the property value to be extracted- Returns:
- the indexed property value
- Throws:
IndexOutOfBoundsException
- if the specified index is outside the valid range for the underlying propertyIllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getIndexedProperty
public static Object getIndexedProperty(Object bean, String name, int index) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Return the value of the specified indexed property of the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be extractedname
- Simple property name of the property value to be extractedindex
- Index of the property value to be extracted- Returns:
- the indexed property value
- Throws:
IndexOutOfBoundsException
- if the specified index is outside the valid range for the underlying propertyIllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getMappedProperty
public static Object getMappedProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Return the value of the specified mapped property of the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be extractedname
-propertyname(key)
of the property value to be extracted- Returns:
- the mapped property value
- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getMappedProperty
public static Object getMappedProperty(Object bean, String name, String key) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Return the value of the specified mapped property of the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be extractedname
- Mapped property name of the property value to be extractedkey
- Key of the property value to be extracted- Returns:
- the mapped property value
- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getNestedProperty
public static Object getNestedProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Return the value of the (possibly nested) property of the specified name, for the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be extractedname
- Possibly nested name of the property to be extracted- Returns:
- the nested property value
- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullNestedNullException
- if a nested reference to a property returns nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getProperty
public static Object getProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Return the value of the specified property of the specified bean, no matter which property reference format is used, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be extractedname
- Possibly indexed and/or nested name of the property to be extracted- Returns:
- the property value
- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getPropertyDescriptor
public static PropertyDescriptor getPropertyDescriptor(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Retrieve the property descriptor for the specified property of the specified bean, or return
null
if there is no such descriptor.For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean for which a property descriptor is requestedname
- Possibly indexed and/or nested name of the property for which a property descriptor is requested- Returns:
- the property descriptor
- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullIllegalArgumentException
- if a nested reference to a property returns nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getPropertyDescriptors
Retrieve the property descriptors for the specified class, introspecting and caching them the first time a particular bean class is encountered.
For more details see
PropertyUtilsBean
.- Parameters:
beanClass
- Bean class for which property descriptors are requested- Returns:
- the property descriptors
- Throws:
IllegalArgumentException
- ifbeanClass
is null- See Also:
-
getPropertyDescriptors
Retrieve the property descriptors for the specified bean, introspecting and caching them the first time a particular bean class is encountered.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean for which property descriptors are requested- Returns:
- the property descriptors
- Throws:
IllegalArgumentException
- ifbean
is null- See Also:
-
getPropertyEditorClass
public static Class<?> getPropertyEditorClass(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Return the Java Class representing the property editor class that has been registered for this property (if any).
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean for which a property descriptor is requestedname
- Possibly indexed and/or nested name of the property for which a property descriptor is requested- Returns:
- the property editor class
- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullIllegalArgumentException
- if a nested reference to a property returns nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getPropertyType
public static Class<?> getPropertyType(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Return the Java Class representing the property type of the specified property, or
null
if there is no such property for the specified bean.For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean for which a property descriptor is requestedname
- Possibly indexed and/or nested name of the property for which a property descriptor is requested- Returns:
- The property type
- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullIllegalArgumentException
- if a nested reference to a property returns nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getReadMethod
Return an accessible property getter method for this property, if there is one; otherwise return
null
.For more details see
PropertyUtilsBean
.- Parameters:
descriptor
- Property descriptor to return a getter for- Returns:
- The read method
- See Also:
-
getSimpleProperty
public static Object getSimpleProperty(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Return the value of the specified simple property of the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be extractedname
- Name of the property to be extracted- Returns:
- The property value
- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullIllegalArgumentException
- if the property name is nested or indexedInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
getWriteMethod
Return an accessible property setter method for this property, if there is one; otherwise return
null
.For more details see
PropertyUtilsBean
.- Parameters:
descriptor
- Property descriptor to return a setter for- Returns:
- The write method
- See Also:
-
isReadable
Return
true
if the specified property name identifies a readable property on the specified bean; otherwise, returnfalse
.For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean to be examined (may be aDynaBean
name
- Property name to be evaluated- Returns:
true
if the property is readable, otherwisefalse
- Throws:
IllegalArgumentException
- ifbean
orname</code> is <code>null
- Since:
- 1.6
- See Also:
-
isWriteable
Return
true
if the specified property name identifies a writable property on the specified bean; otherwise, returnfalse
.For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean to be examined (may be aDynaBean
name
- Property name to be evaluated- Returns:
true
if the property is writable, otherwisefalse
- Throws:
IllegalArgumentException
- ifbean
orname</code> is <code>null
- Since:
- 1.6
- See Also:
-
removeBeanIntrospector
Removes the specifiedBeanIntrospector
.- Parameters:
introspector
- theBeanIntrospector
to be removed- Returns:
- true if the
BeanIntrospector
existed and could be removed, false otherwise - Since:
- 1.9
-
resetBeanIntrospectors
Resets the registeredBeanIntrospector
objects to the initial default state.- Since:
- 1.9
-
setIndexedProperty
public static void setIndexedProperty(Object bean, String name, int index, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Sets the value of the specified indexed property of the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be setname
- Simple property name of the property value to be setindex
- Index of the property value to be setvalue
- Value to which the indexed property element is to be set- Throws:
IndexOutOfBoundsException
- if the specified index is outside the valid range for the underlying propertyIllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
setIndexedProperty
public static void setIndexedProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Sets the value of the specified indexed property of the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be modifiedname
-propertyname[index]
of the property value to be modifiedvalue
- Value to which the specified property element should be set- Throws:
IndexOutOfBoundsException
- if the specified index is outside the valid range for the underlying propertyIllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
setMappedProperty
public static void setMappedProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Sets the value of the specified mapped property of the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be setname
-propertyname(key)
of the property value to be setvalue
- The property value to be set- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
setMappedProperty
public static void setMappedProperty(Object bean, String name, String key, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Sets the value of the specified mapped property of the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be setname
- Mapped property name of the property value to be setkey
- Key of the property value to be setvalue
- The property value to be set- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
setNestedProperty
public static void setNestedProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Sets the value of the (possibly nested) property of the specified name, for the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be modifiedname
- Possibly nested name of the property to be modifiedvalue
- Value to which the property is to be set- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullIllegalArgumentException
- if a nested reference to a property returns nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
setProperty
public static void setProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Set the value of the specified property of the specified bean, no matter which property reference format is used, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be modifiedname
- Possibly indexed and/or nested name of the property to be modifiedvalue
- Value to which this property is to be set- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-
setSimpleProperty
public static void setSimpleProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException Set the value of the specified simple property of the specified bean, with no type conversions.
For more details see
PropertyUtilsBean
.- Parameters:
bean
- Bean whose property is to be modifiedname
- Name of the property to be modifiedvalue
- Value to which the property should be set- Throws:
IllegalAccessException
- if the caller does not have access to the property accessor methodIllegalArgumentException
- ifbean
orname
is nullIllegalArgumentException
- if the property name is nested or indexedInvocationTargetException
- if the property accessor method throws an exceptionNoSuchMethodException
- if an accessor method for this property cannot be found- See Also:
-