Package org.apache.commons.beanutils2

# Class PropertyUtils

java.lang.Object
org.apache.commons.beanutils2.PropertyUtils

public final class PropertyUtils extends Object

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:
  - `PropertyUtilsBean`
  - `Resolver`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static void`
  `addBeanIntrospector(BeanIntrospector introspector)`
  Adds a `BeanIntrospector`.
  `static void`
  `clearDescriptors()`
  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 via `BeanInfo` classes).
  `static Map<String,Object>`
  `describe(Object bean)`
  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 return `null` 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, or `null` 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 return `null`.
  `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 return `null`.
  `static boolean`
  `isReadable(Object bean, String name)`
  Return `true` if the specified property name identifies a readable property on the specified bean; otherwise, return `false`.
  `static boolean`
  `isWriteable(Object bean, String name)`
  Return `true` if the specified property name identifies a writable property on the specified bean; otherwise, return `false`.
  `static boolean`
  `removeBeanIntrospector(BeanIntrospector introspector)`
  Removes the specified `BeanIntrospector`.
  `static void`
  `resetBeanIntrospectors()`
  Resets the registered `BeanIntrospector` 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.

  ### Methods inherited from class java.lang.Object

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

- ## Method Details

  - ### addBeanIntrospector

    public static void addBeanIntrospector(BeanIntrospector introspector)
    Adds a `BeanIntrospector`. This object is invoked when the property descriptors of a class need to be obtained.
    Parameters:
      `introspector` - the `BeanIntrospector` to be added (must not be null
    Throws:
      `IllegalArgumentException` - if the argument is null
    Since:
      1.9

  - ### clearDescriptors

    public static void 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:
      - `PropertyUtilsBean.clearDescriptors()`

  - ### 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 modified
      `orig` - Origin bean whose properties are retrieved
    Throws:
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `IllegalArgumentException` - if the `dest` or `orig` argument is null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.copyProperties(java.lang.Object, java.lang.Object)`

  - ### 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 method
      `IllegalArgumentException` - if `bean` is null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.describe(java.lang.Object)`

  - ### 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 extracted
      `name` - `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 property
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `IllegalArgumentException` - if `bean` or `name` is null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.getIndexedProperty(Object,String)`

  - ### 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 extracted
      `name` - Simple property name of the property value to be extracted
      `index` - 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 property
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `IllegalArgumentException` - if `bean` or `name` is null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.getIndexedProperty(Object,String, int)`

  - ### 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 extracted
      `name` - `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 method
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.getMappedProperty(Object,String)`

  - ### 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 extracted
      `name` - Mapped property name of the property value to be extracted
      `key` - 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 method
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.getMappedProperty(Object,String, String)`

  - ### 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 extracted
      `name` - 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 method
      `IllegalArgumentException` - if `bean` or `name` is null
      `NestedNullException` - if a nested reference to a property returns null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.getNestedProperty(java.lang.Object, java.lang.String)`

  - ### 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 extracted
      `name` - 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 method
      `IllegalArgumentException` - if `bean` or `name` is null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.getProperty(java.lang.Object, java.lang.String)`

  - ### 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 requested
      `name` - 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 method
      `IllegalArgumentException` - if `bean` or `name` is null
      `IllegalArgumentException` - if a nested reference to a property returns null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.getPropertyDescriptor(java.lang.Object, java.lang.String)`

  - ### getPropertyDescriptors

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

    For more details see `PropertyUtilsBean`.

    Parameters:
      `beanClass` - Bean class for which property descriptors are requested
    Returns:
      the property descriptors
    Throws:
      `IllegalArgumentException` - if `beanClass` is null
    See Also:
      - `PropertyUtilsBean.getPropertyDescriptors(Class)`

  - ### getPropertyDescriptors

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

    For more details see `PropertyUtilsBean`.

    Parameters:
      `bean` - Bean for which property descriptors are requested
    Returns:
      the property descriptors
    Throws:
      `IllegalArgumentException` - if `bean` is null
    See Also:
      - `PropertyUtilsBean.getPropertyDescriptors(Object)`

  - ### 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 requested
      `name` - 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 method
      `IllegalArgumentException` - if `bean` or `name` is null
      `IllegalArgumentException` - if a nested reference to a property returns null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.getPropertyEditorClass(Object,String)`

  - ### 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 requested
      `name` - 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 method
      `IllegalArgumentException` - if `bean` or `name` is null
      `IllegalArgumentException` - if a nested reference to a property returns null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.getPropertyType(Object, String)`

  - ### getReadMethod

    public static Method getReadMethod(PropertyDescriptor descriptor)

    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:
      - `PropertyUtilsBean.getReadMethod(PropertyDescriptor)`

  - ### 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 extracted
      `name` - Name of the property to be extracted
    Returns:
      The property value
    Throws:
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `IllegalArgumentException` - if `bean` or `name` is null
      `IllegalArgumentException` - if the property name is nested or indexed
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.getSimpleProperty(java.lang.Object, java.lang.String)`

  - ### getWriteMethod

    public static Method getWriteMethod(PropertyDescriptor descriptor)

    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:
      - `PropertyUtilsBean.getWriteMethod(PropertyDescriptor)`

  - ### isReadable

    public static boolean isReadable(Object bean, String name)

    Return `true` if the specified property name identifies a readable property on the specified bean; otherwise, return `false`.

    For more details see `PropertyUtilsBean`.

    Parameters:
      `bean` - Bean to be examined (may be a `DynaBean`
      `name` - Property name to be evaluated
    Returns:
      `true` if the property is readable, otherwise `false`
    Throws:
      `IllegalArgumentException` - if `bean` or `name</code> is <code>null`
    Since:
      1.6
    See Also:
      - `PropertyUtilsBean.isReadable(java.lang.Object, java.lang.String)`

  - ### isWriteable

    public static boolean isWriteable(Object bean, String name)

    Return `true` if the specified property name identifies a writable property on the specified bean; otherwise, return `false`.

    For more details see `PropertyUtilsBean`.

    Parameters:
      `bean` - Bean to be examined (may be a `DynaBean`
      `name` - Property name to be evaluated
    Returns:
      `true` if the property is writable, otherwise `false`
    Throws:
      `IllegalArgumentException` - if `bean` or `name</code> is <code>null`
    Since:
      1.6
    See Also:
      - `PropertyUtilsBean.isWriteable(java.lang.Object, java.lang.String)`

  - ### removeBeanIntrospector

    public static boolean removeBeanIntrospector(BeanIntrospector introspector)
    Removes the specified `BeanIntrospector`.
    Parameters:
      `introspector` - the `BeanIntrospector` to be removed
    Returns:
      true if the `BeanIntrospector` existed and could be removed, false otherwise
    Since:
      1.9

  - ### resetBeanIntrospectors

    public static void resetBeanIntrospectors()
    Resets the registered `BeanIntrospector` 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 set
      `name` - Simple property name of the property value to be set
      `index` - Index of the property value to be set
      `value` - 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 property
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `IllegalArgumentException` - if `bean` or `name` is null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.setIndexedProperty(Object, String, Object)`

  - ### 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 modified
      `name` - `propertyname[index]` of the property value to be modified
      `value` - Value to which the specified property element should be set
    Throws:
      `IndexOutOfBoundsException` - if the specified index is outside the valid range for the underlying property
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `IllegalArgumentException` - if `bean` or `name` is null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.setIndexedProperty(Object, String, Object)`

  - ### 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 set
      `name` - `propertyname(key)` of the property value to be set
      `value` - The property value to be set
    Throws:
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.setMappedProperty(Object, String, Object)`

  - ### 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 set
      `name` - Mapped property name of the property value to be set
      `key` - Key of the property value to be set
      `value` - The property value to be set
    Throws:
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.setMappedProperty(Object, String, String, Object)`

  - ### 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 modified
      `name` - Possibly nested name of the property to be modified
      `value` - Value to which the property is to be set
    Throws:
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `IllegalArgumentException` - if `bean` or `name` is null
      `IllegalArgumentException` - if a nested reference to a property returns null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.setNestedProperty(java.lang.Object, java.lang.String, java.lang.Object)`

  - ### 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 modified
      `name` - Possibly indexed and/or nested name of the property to be modified
      `value` - Value to which this property is to be set
    Throws:
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `IllegalArgumentException` - if `bean` or `name` is null
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.setProperty(java.lang.Object, java.lang.String, java.lang.Object)`

  - ### 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 modified
      `name` - Name of the property to be modified
      `value` - Value to which the property should be set
    Throws:
      `IllegalAccessException` - if the caller does not have access to the property accessor method
      `IllegalArgumentException` - if `bean` or `name` is null
      `IllegalArgumentException` - if the property name is nested or indexed
      `InvocationTargetException` - if the property accessor method throws an exception
      `NoSuchMethodException` - if an accessor method for this property cannot be found
    See Also:
      - `PropertyUtilsBean.setSimpleProperty(java.lang.Object, java.lang.String, java.lang.Object)`