|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.springframework.beans.BeanWrapperImpl
Default implementation of the BeanWrapper interface that should be sufficient for all normal uses. Caches introspection results for efficiency.
Note: This class never tries to load a class by name, as this can pose class loading problems in J2EE applications with multiple deployment modules. The caller is responsible for loading a target class.
Note: Auto-registers all default property editors (not the custom ones) in the org.springframework.beans.propertyeditors package. Applications can either use a standard PropertyEditorManager to register a custom editor before using a BeanWrapperImpl instance, or call the instance's registerCustomEditor method to register an editor for the particular instance.
BeanWrapperImpl will convert List and array values to the corresponding target arrays, if necessary. Custom property editors that deal with Lists or arrays can be written against a comma delimited String as String arrays are converted in such a format if the array itself is not assignable.
registerCustomEditor(java.lang.Class, java.beans.PropertyEditor)
,
PropertyEditorManager
,
ClassEditor
,
FileEditor
,
LocaleEditor
,
PropertiesEditor
,
StringArrayPropertyEditor
,
URLEditor
Field Summary |
Fields inherited from interface org.springframework.beans.BeanWrapper |
NESTED_PROPERTY_SEPARATOR |
Constructor Summary | |
BeanWrapperImpl()
Create new empty BeanWrapperImpl. |
|
BeanWrapperImpl(java.lang.Class clazz)
Create new BeanWrapperImpl, wrapping a new instance of the specified class. |
|
BeanWrapperImpl(java.lang.Object object)
Create new BeanWrapperImpl for the given object. |
|
BeanWrapperImpl(java.lang.Object object,
java.lang.String nestedPath)
Create new BeanWrapperImpl for the given object, registering a nested path that the object is in. |
Method Summary | |
java.lang.Object |
doTypeConversionIfNecessary(java.lang.Object newValue,
java.lang.Class requiredType)
Convert the value to the required type (if necessary from a String). |
protected java.lang.Object |
doTypeConversionIfNecessary(java.lang.String propertyName,
java.lang.String propertyDescriptor,
java.lang.Object oldValue,
java.lang.Object newValue,
java.lang.Class requiredType)
Convert the value to the required type (if necessary from a String), for the specified property. |
java.beans.PropertyEditor |
findCustomEditor(java.lang.Class requiredType,
java.lang.String propertyPath)
Find a custom property editor for the given type and property. |
java.beans.PropertyDescriptor |
getPropertyDescriptor(java.lang.String propertyName)
Get the property descriptor for a particular property. |
java.beans.PropertyDescriptor[] |
getPropertyDescriptors()
Get the PropertyDescriptors identified on this object (standard JavaBeans introspection). |
java.lang.Object |
getPropertyValue(java.lang.String propertyName)
Get the value of a property. |
java.lang.Class |
getWrappedClass()
Convenience method to return the class of the wrapped object. |
java.lang.Object |
getWrappedInstance()
Return the bean wrapped by this object (cannot be null). |
boolean |
isReadableProperty(java.lang.String propertyName)
Return whether this property is readable. |
boolean |
isWritableProperty(java.lang.String propertyName)
Return whether this property is writable. |
void |
registerCustomEditor(java.lang.Class requiredType,
java.beans.PropertyEditor propertyEditor)
Register the given custom property editor for all properties of the given type. |
void |
registerCustomEditor(java.lang.Class requiredType,
java.lang.String propertyPath,
java.beans.PropertyEditor propertyEditor)
Register the given custom property editor for the given type and property, or for all properties of the given type. |
void |
setPropertyValue(PropertyValue pv)
Update a property value. |
void |
setPropertyValue(java.lang.String propertyName,
java.lang.Object value)
Set a property value. |
void |
setPropertyValues(java.util.Map map)
Bulk update from a Map. |
void |
setPropertyValues(PropertyValues pvs)
The preferred way to perform a bulk update. |
void |
setPropertyValues(PropertyValues propertyValues,
boolean ignoreUnknown)
Perform a bulk update with full control over behavior. |
void |
setWrappedInstance(java.lang.Object object)
Switches the target object, replacing the cached introspection results only if the class of the new object is different to that of the replaced object. |
java.lang.String |
toString()
This method is expensive! Only call for diagnostics and debugging reasons, not in production. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
public BeanWrapperImpl()
setWrappedInstance(java.lang.Object)
public BeanWrapperImpl(java.lang.Object object) throws BeansException
object
- object wrapped by this BeanWrapper.
BeansException
- if the object cannot be wrapped by a BeanWrapperpublic BeanWrapperImpl(java.lang.Object object, java.lang.String nestedPath) throws BeansException
object
- object wrapped by this BeanWrapper.nestedPath
- the nested path of the object
BeansException
- if the object cannot be wrapped by a BeanWrapperpublic BeanWrapperImpl(java.lang.Class clazz) throws BeansException
clazz
- class to instantiate and wrap
BeansException
- if the class cannot be wrapped by a BeanWrapperMethod Detail |
public void setWrappedInstance(java.lang.Object object) throws BeansException
setWrappedInstance
in interface BeanWrapper
object
- new target
BeansException
- if the object cannot be changedpublic java.lang.Class getWrappedClass()
BeanWrapper
getWrappedClass
in interface BeanWrapper
public java.lang.Object getWrappedInstance()
BeanWrapper
getWrappedInstance
in interface BeanWrapper
public void registerCustomEditor(java.lang.Class requiredType, java.beans.PropertyEditor propertyEditor)
BeanWrapper
registerCustomEditor
in interface BeanWrapper
requiredType
- type of the propertypropertyEditor
- editor to registerpublic void registerCustomEditor(java.lang.Class requiredType, java.lang.String propertyPath, java.beans.PropertyEditor propertyEditor)
BeanWrapper
registerCustomEditor
in interface BeanWrapper
requiredType
- type of the property, can be null if a property is
given but should be specified in any case for consistency checkingpropertyPath
- path of the property (name or nested path), or
null if registering an editor for all properties of the given typepropertyEditor
- editor to registerpublic java.beans.PropertyEditor findCustomEditor(java.lang.Class requiredType, java.lang.String propertyPath)
BeanWrapper
findCustomEditor
in interface BeanWrapper
requiredType
- type of the property, can be null if a property is
given but should be specified in any case for consistency checkingpropertyPath
- path of the property (name or nested path), or
null if looking for an editor for all properties of the given type
public java.lang.Object getPropertyValue(java.lang.String propertyName) throws BeansException
BeanWrapper
getPropertyValue
in interface BeanWrapper
propertyName
- name of the property to get the value of
BeansException
public void setPropertyValue(java.lang.String propertyName, java.lang.Object value) throws BeansException
BeanWrapper
setPropertyValue
in interface BeanWrapper
propertyName
- name of the property to set value ofvalue
- the new value
BeansException
public void setPropertyValue(PropertyValue pv) throws BeansException
BeanWrapper
setPropertyValue
in interface BeanWrapper
pv
- object containing new property value
BeansException
public void setPropertyValues(java.util.Map map) throws BeansException
setPropertyValues
in interface BeanWrapper
map
- map containing properties to set, as name-value pairs.
The map may include nested properties.
BeansException
- if there's a fatal, low-level exceptionpublic void setPropertyValues(PropertyValues pvs) throws BeansException
BeanWrapper
Note that performing a bulk update differs from performing a single update, in that an implementation of this class will continue to update properties if a recoverable error (such as a vetoed property change or a type mismatch, but not an invalid fieldname or the like) is encountered, throwing a PropertyAccessExceptionsException containing all the individual errors. This exception can be examined later to see all binding errors. Properties that were successfully updated stay changed.
Does not allow unknown fields. Equivalent to setPropertyValues(pvs, false, null).
setPropertyValues
in interface BeanWrapper
pvs
- PropertyValues to set on the target object
BeansException
public void setPropertyValues(PropertyValues propertyValues, boolean ignoreUnknown) throws BeansException
BeanWrapper
Does not allow unknown fields.
setPropertyValues
in interface BeanWrapper
propertyValues
- PropertyValues to set on the target objectignoreUnknown
- should we ignore unknown values (not found in the bean!?)
BeansException
public java.lang.Object doTypeConversionIfNecessary(java.lang.Object newValue, java.lang.Class requiredType) throws BeansException
newValue
- proposed change value.requiredType
- type we must convert to
BeansException
- if there is an internal errorprotected java.lang.Object doTypeConversionIfNecessary(java.lang.String propertyName, java.lang.String propertyDescriptor, java.lang.Object oldValue, java.lang.Object newValue, java.lang.Class requiredType) throws BeansException
propertyName
- name of the propertyoldValue
- previous value, if available (may be null)newValue
- proposed change value.requiredType
- type we must convert to
BeansException
- if there is an internal errorpublic java.beans.PropertyDescriptor[] getPropertyDescriptors()
BeanWrapper
getPropertyDescriptors
in interface BeanWrapper
public java.beans.PropertyDescriptor getPropertyDescriptor(java.lang.String propertyName) throws BeansException
BeanWrapper
getPropertyDescriptor
in interface BeanWrapper
propertyName
- property to check status for
BeansException
public boolean isReadableProperty(java.lang.String propertyName)
BeanWrapper
isReadableProperty
in interface BeanWrapper
propertyName
- property to check status for
public boolean isWritableProperty(java.lang.String propertyName)
BeanWrapper
isWritableProperty
in interface BeanWrapper
propertyName
- property to check status for
public java.lang.String toString()
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |