| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.commons.beanutils.BeanUtilsBean
public class BeanUtilsBean
JavaBean property population methods.
This class provides implementations for the utility methods in
 BeanUtils.
 Different instances can be used to isolate caches between classloaders
 and to vary the value converters registered.
BeanUtils| Constructor Summary | |
|---|---|
| BeanUtilsBean()Constructs an instance using new property and conversion instances. | |
| BeanUtilsBean(ConvertUtilsBean convertUtilsBean)Constructs an instance using given conversion instances and new PropertyUtilsBeaninstance. | |
| BeanUtilsBean(ConvertUtilsBean convertUtilsBean,
                           PropertyUtilsBean propertyUtilsBean)Constructs an instance using given property and conversion instances. | |
| Method Summary | |
|---|---|
|  Object | cloneBean(Object bean)Clone a bean based on the available property getters and setters, even if the bean class itself does not implement Cloneable. | 
| protected  Object | convert(Object value,
               Class type)Convert the value to an object of the specified class (if possible). | 
|  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. | 
|  void | copyProperty(Object bean,
                         String name,
                         Object value)Copy the specified property value to the specified destination bean, performing any type conversion that is required. | 
|  Map | describe(Object bean)Return the entire set of properties for which the specified bean provides a read method. | 
|  String[] | getArrayProperty(Object bean,
                                 String name)Return the value of the specified array property of the specified bean, as a String array. | 
|  ConvertUtilsBean | getConvertUtils()Gets the ConvertUtilsBeaninstance used to perform the conversions. | 
|  String | getIndexedProperty(Object bean,
                                     String name)Return the value of the specified indexed property of the specified bean, as a String. | 
|  String | getIndexedProperty(Object bean,
                                     String name,
                                     int index)Return the value of the specified indexed property of the specified bean, as a String. | 
| static BeanUtilsBean | getInstance()Gets the instance which provides the functionality for BeanUtils. | 
|  String | getMappedProperty(Object bean,
                                   String name)Return the value of the specified indexed property of the specified bean, as a String. | 
|  String | getMappedProperty(Object bean,
                                   String name,
                                   String key)Return the value of the specified mapped property of the specified bean, as a String. | 
|  String | getNestedProperty(Object bean,
                                   String name)Return the value of the (possibly nested) property of the specified name, for the specified bean, as a String. | 
|  String | getProperty(Object bean,
                       String name)Return the value of the specified property of the specified bean, no matter which property reference format is used, as a String. | 
|  PropertyUtilsBean | getPropertyUtils()Gets the PropertyUtilsBeaninstance used to access properties. | 
|  String | getSimpleProperty(Object bean,
                                   String name)Return the value of the specified simple property of the specified bean, converted to a String. | 
|  boolean | initCause(Throwable throwable,
                   Throwable cause)If we're running on JDK 1.4 or later, initialize the cause for the given throwable. | 
|  void | populate(Object bean,
                 Map properties)Populate the JavaBeans properties of the specified bean, based on the specified name/value pairs. | 
| static void | setInstance(BeanUtilsBean newInstance)Sets the instance which provides the functionality for BeanUtils. | 
|  void | setProperty(Object bean,
                       String name,
                       Object value)Set the specified property value, performing type conversions as required to conform to the type of the destination property. | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Constructor Detail | 
|---|
public BeanUtilsBean()
Constructs an instance using new property and conversion instances.
public BeanUtilsBean(ConvertUtilsBean convertUtilsBean)
Constructs an instance using given conversion instances
 and new PropertyUtilsBean instance.
convertUtilsBean - use this ConvertUtilsBean 
 to perform conversions from one object to another
public BeanUtilsBean(ConvertUtilsBean convertUtilsBean,
                     PropertyUtilsBean propertyUtilsBean)
Constructs an instance using given property and conversion instances.
convertUtilsBean - use this ConvertUtilsBean 
 to perform conversions from one object to anotherpropertyUtilsBean - use this PropertyUtilsBean
 to access properties| Method Detail | 
|---|
public static BeanUtilsBean getInstance()
BeanUtils.
 This is a pseudo-singleton - an single instance is provided per (thread) context classloader.
 This mechanism provides isolation for web apps deployed in the same container.
public static void setInstance(BeanUtilsBean newInstance)
BeanUtils.
 This is a pseudo-singleton - an single instance is provided per (thread) context classloader.
 This mechanism provides isolation for web apps deployed in the same container.
newInstance - The (pseudo-singleton) BeanUtils bean instance
public Object cloneBean(Object bean)
                 throws IllegalAccessException,
                        InstantiationException,
                        InvocationTargetException,
                        NoSuchMethodException
Clone a bean based on the available property getters and setters, even if the bean class itself does not implement Cloneable.
Note: this method creates a shallow clone. In other words, any objects referred to by the bean are shared with the clone rather than being cloned in turn.
bean - Bean to be cloned
IllegalAccessException - if the caller does not have
  access to the property accessor method
InstantiationException - if a new instance of the bean's
  class cannot be instantiated
InvocationTargetException - if the property accessor method
  throws an exception
NoSuchMethodException - if an accessor method for this
  property cannot be found
public void copyProperties(Object dest,
                           Object orig)
                    throws IllegalAccessException,
                           InvocationTargetException
Copy property values from the origin bean to the destination bean for all cases where the property names are the same. For each property, a conversion is attempted as necessary. All combinations of standard JavaBeans and DynaBeans as origin and destination are supported. Properties that exist in the origin bean, but do not exist in the destination bean (or are read-only in the destination bean) are silently ignored.
If the origin "bean" is actually a Map, it is assumed
 to contain String-valued simple property names as the keys, pointing at
 the corresponding property values that will be converted (if necessary)
 and set in the destination bean. Note that this method
 is intended to perform a "shallow copy" of the properties and so complex
 properties (for example, nested ones) will not be copied.
This method differs from populate(), which
 was primarily designed for populating JavaBeans from the map of request
 parameters retrieved on an HTTP request, is that no scalar->indexed
 or indexed->scalar manipulations are performed.  If the origin property
 is indexed, the destination property must be also.
If you know that no type conversions are required, the
 copyProperties() method in PropertyUtils will
 execute faster than this method.
FIXME - Indexed and mapped properties that do not have getter and setter methods for the underlying array or Map are not copied by this method.
dest - Destination bean whose properties are modifiedorig - Origin bean whose properties are retrieved
IllegalAccessException - if the caller does not have
  access to the property accessor method
IllegalArgumentException - if the dest or
  orig argument is null or if the dest 
  property type is different from the source type and the relevant
  converter has not been registered.
InvocationTargetException - if the property accessor method
  throws an exception
public void copyProperty(Object bean,
                         String name,
                         Object value)
                  throws IllegalAccessException,
                         InvocationTargetException
Copy the specified property value to the specified destination bean,
 performing any type conversion that is required.  If the specified
 bean does not have a property of the specified name, or the property
 is read only on the destination bean, return without
 doing anything.  If you have custom destination property types, register
 Converters for them by calling the register()
 method of ConvertUtils.
IMPLEMENTATION RESTRICTIONS:
bean - Bean on which setting is to be performedname - Property name (can be nested/indexed/mapped/combo)value - Value to be set
IllegalAccessException - if the caller does not have
  access to the property accessor method
InvocationTargetException - if the property accessor method
  throws an exception
public Map describe(Object bean)
             throws IllegalAccessException,
                    InvocationTargetException,
                    NoSuchMethodException
Return the entire set of properties for which the specified bean
 provides a read method. This map contains the to String
 converted property values for all properties for which a read method
 is provided (i.e. where the getReadMethod() returns non-null).
This map can be fed back to a call to
 BeanUtils.populate() to reconsitute the same set of
 properties, modulo differences for read-only and write-only
 properties, but only if there are no indexed properties.
Warning: if any of the bean property implementations
 contain (directly or indirectly) a call to this method then 
 a stack overflow may result. For example:
 
 class MyBean
 {
    public Map getParameterMap()
    {
         BeanUtils.describe(this);
    }
 }
 getParametersMap
 is called. It is recommended that such methods are given alternative
 names (for example, parametersMap).
 
bean - Bean whose properties are to be extracted
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
public String[] getArrayProperty(Object bean,
                                 String name)
                          throws IllegalAccessException,
                                 InvocationTargetException,
                                 NoSuchMethodException
bean - Bean whose property is to be extractedname - Name of the property to be extracted
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
public String getIndexedProperty(Object bean,
                                 String name)
                          throws IllegalAccessException,
                                 InvocationTargetException,
                                 NoSuchMethodException
IllegalArgumentException will be
 thrown.
bean - Bean whose property is to be extractedname - propertyname[index] of the property value
  to be extracted
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
public String getIndexedProperty(Object bean,
                                 String name,
                                 int index)
                          throws IllegalAccessException,
                                 InvocationTargetException,
                                 NoSuchMethodException
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
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
public String getMappedProperty(Object bean,
                                String name)
                         throws IllegalAccessException,
                                InvocationTargetException,
                                NoSuchMethodException
IllegalArgumentException will be
 thrown.
bean - Bean whose property is to be extractedname - propertyname(index) of the property value
  to be extracted
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
public String getMappedProperty(Object bean,
                                String name,
                                String key)
                         throws IllegalAccessException,
                                InvocationTargetException,
                                NoSuchMethodException
bean - Bean whose property is to be extractedname - Simple property name of the property value to be extractedkey - Lookup key of the property value to be extracted
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
public String getNestedProperty(Object bean,
                                String name)
                         throws IllegalAccessException,
                                InvocationTargetException,
                                NoSuchMethodException
bean - Bean whose property is to be extractedname - Possibly nested name of the property to be extracted
IllegalAccessException - if the caller does not have
  access to the property accessor method
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
public String getProperty(Object bean,
                          String name)
                   throws IllegalAccessException,
                          InvocationTargetException,
                          NoSuchMethodException
bean - Bean whose property is to be extractedname - Possibly indexed and/or nested name of the property
  to be extracted
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
public String getSimpleProperty(Object bean,
                                String name)
                         throws IllegalAccessException,
                                InvocationTargetException,
                                NoSuchMethodException
bean - Bean whose property is to be extractedname - Name of the property to be extracted
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
public void populate(Object bean,
                     Map properties)
              throws IllegalAccessException,
                     InvocationTargetException
Populate the JavaBeans properties of the specified bean, based on
 the specified name/value pairs.  This method uses Java reflection APIs
 to identify corresponding "property setter" method names, and deals
 with setter arguments of type String, boolean,
 int, long, float, and
 double.  In addition, array setters for these types (or the
 corresponding primitive types) can also be identified.
The particular setter method to be called for each property is determined using the usual JavaBeans introspection mechanisms. Thus, you may identify custom setter methods using a BeanInfo class that is associated with the class of the bean itself. If no such BeanInfo class is available, the standard method name conversion ("set" plus the capitalized name of the property in question) is used.
NOTE: It is contrary to the JavaBeans Specification to have more than one setter method (with different argument signatures) for the same property.
WARNING - The logic of this method is customized
 for extracting String-based request parameters from an HTTP request.
 It is probably not what you want for general property copying with
 type conversion.  For that purpose, check out the
 copyProperties() method instead.
bean - JavaBean whose properties are being populatedproperties - Map keyed by property name, with the
  corresponding (String or String[]) value(s) to be set
IllegalAccessException - if the caller does not have
  access to the property accessor method
InvocationTargetException - if the property accessor method
  throws an exception
public void setProperty(Object bean,
                        String name,
                        Object value)
                 throws IllegalAccessException,
                        InvocationTargetException
Set the specified property value, performing type conversions as required to conform to the type of the destination property.
If the property is read only then the method returns without throwing an exception.
If null is passed into a property expecting a primitive value,
 then this will be converted as if it were a null string.
WARNING - The logic of this method is customized
 to meet the needs of populate(), and is probably not what
 you want for general property copying with type conversion.  For that
 purpose, check out the copyProperty() method instead.
WARNING - PLEASE do not modify the behavior of this method without consulting with the Struts developer community. There are some subtleties to its functionality that are not documented in the Javadoc description above, yet are vital to the way that Struts utilizes this method.
bean - Bean on which setting is to be performedname - Property name (can be nested/indexed/mapped/combo)value - Value to be set
IllegalAccessException - if the caller does not have
  access to the property accessor method
InvocationTargetException - if the property accessor method
  throws an exceptionpublic ConvertUtilsBean getConvertUtils()
ConvertUtilsBean instance used to perform the conversions.
public PropertyUtilsBean getPropertyUtils()
PropertyUtilsBean instance used to access properties.
public boolean initCause(Throwable throwable,
                         Throwable cause)
throwable - The throwable.cause - The cause of the throwable.
protected Object convert(Object value,
                         Class type)
Convert the value to an object of the specified class (if possible).
value - Value to be converted (may be null)type - Class of the value to be converted to
ConversionException - if thrown by an underlying Converter| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||