Class AbstractPropertyAccessor
- java.lang.Object
- org.springframework.beans.PropertyEditorRegistrySupport
- org.springframework.beans.TypeConverterSupport
- org.springframework.beans.AbstractPropertyAccessor
- All Implemented Interfaces:
ConfigurablePropertyAccessor
,PropertyAccessor
,PropertyEditorRegistry
,TypeConverter
- Direct Known Subclasses:
AbstractNestablePropertyAccessor
public abstract class AbstractPropertyAccessor extends TypeConverterSupport implements ConfigurablePropertyAccessor
Abstract implementation of thePropertyAccessor
interface. Provides base implementations of all convenience methods, with the implementation of actual property access left to subclasses.- Since:
- 2.0
- Author:
- Juergen Hoeller, Stephane Nicoll
- See Also:
getPropertyValue(java.lang.String)
,setPropertyValue(org.springframework.beans.PropertyValue)
Field Summary
Fields inherited from interface org.springframework.beans.PropertyAccessor
NESTED_PROPERTY_SEPARATOR, NESTED_PROPERTY_SEPARATOR_CHAR, PROPERTY_KEY_PREFIX, PROPERTY_KEY_PREFIX_CHAR, PROPERTY_KEY_SUFFIX, PROPERTY_KEY_SUFFIX_CHAR
Constructor Summary
Constructors Constructor Description AbstractPropertyAccessor()
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Class<?>
getPropertyType(String propertyPath)
Determine the property type for the given property path.abstract Object
getPropertyValue(String propertyName)
Actually get the value of a property.boolean
isAutoGrowNestedPaths()
Return whether "auto-growing" of nested paths has been activated.boolean
isExtractOldValueForEditor()
Return whether to extract the old property value when applying a property editor to a new value for a property.void
setAutoGrowNestedPaths(boolean autoGrowNestedPaths)
Set whether this instance should attempt to "auto-grow" a nested path that contains anull
value.void
setExtractOldValueForEditor(boolean extractOldValueForEditor)
Set whether to extract the old property value when applying a property editor to a new value for a property.abstract void
setPropertyValue(String propertyName, Object value)
Actually set a property value.void
setPropertyValue(PropertyValue pv)
Set the specified value as current property value.void
setPropertyValues(Map<?,?> map)
Perform a batch update from a Map.void
setPropertyValues(PropertyValues pvs)
The preferred way to perform a batch update.void
setPropertyValues(PropertyValues pvs, boolean ignoreUnknown)
Perform a batch update with more control over behavior.void
setPropertyValues(PropertyValues pvs, boolean ignoreUnknown, boolean ignoreInvalid)
Perform a batch update with full control over behavior.Methods inherited from class org.springframework.beans.TypeConverterSupport
convertIfNecessary, convertIfNecessary, convertIfNecessary
Methods inherited from class org.springframework.beans.PropertyEditorRegistrySupport
copyCustomEditorsTo, copyDefaultEditorsTo, findCustomEditor, getConversionService, getDefaultEditor, guessPropertyTypeFromEditors, hasCustomEditorForElement, overrideDefaultEditor, registerCustomEditor, registerCustomEditor, registerDefaultEditors, setConversionService, useConfigValueEditors
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.beans.ConfigurablePropertyAccessor
getConversionService, setConversionService
Methods inherited from interface org.springframework.beans.PropertyAccessor
getPropertyTypeDescriptor, isReadableProperty, isWritableProperty
Methods inherited from interface org.springframework.beans.PropertyEditorRegistry
findCustomEditor, registerCustomEditor, registerCustomEditor
Methods inherited from interface org.springframework.beans.TypeConverter
convertIfNecessary, convertIfNecessary, convertIfNecessary
Constructor Detail
AbstractPropertyAccessor
public AbstractPropertyAccessor()
Method Detail
setExtractOldValueForEditor
public void setExtractOldValueForEditor(boolean extractOldValueForEditor)
Description copied from interface:ConfigurablePropertyAccessor
Set whether to extract the old property value when applying a property editor to a new value for a property.- Specified by:
setExtractOldValueForEditor
in interfaceConfigurablePropertyAccessor
isExtractOldValueForEditor
public boolean isExtractOldValueForEditor()
Description copied from interface:ConfigurablePropertyAccessor
Return whether to extract the old property value when applying a property editor to a new value for a property.- Specified by:
isExtractOldValueForEditor
in interfaceConfigurablePropertyAccessor
setAutoGrowNestedPaths
public void setAutoGrowNestedPaths(boolean autoGrowNestedPaths)
Description copied from interface:ConfigurablePropertyAccessor
Set whether this instance should attempt to "auto-grow" a nested path that contains anull
value.If
true
, anull
path location will be populated with a default object value and traversed instead of resulting in aNullValueInNestedPathException
.Default is
false
on a plain PropertyAccessor instance.- Specified by:
setAutoGrowNestedPaths
in interfaceConfigurablePropertyAccessor
isAutoGrowNestedPaths
public boolean isAutoGrowNestedPaths()
Description copied from interface:ConfigurablePropertyAccessor
Return whether "auto-growing" of nested paths has been activated.- Specified by:
isAutoGrowNestedPaths
in interfaceConfigurablePropertyAccessor
setPropertyValue
public void setPropertyValue(PropertyValue pv) throws BeansException
Description copied from interface:PropertyAccessor
Set the specified value as current property value.- Specified by:
setPropertyValue
in interfacePropertyAccessor
- Parameters:
pv
- an object containing the new property value- Throws:
InvalidPropertyException
- if there is no such property or if the property isn't writablePropertyAccessException
- if the property was valid but the accessor method failed or a type mismatch occurredBeansException
setPropertyValues
public void setPropertyValues(Map<?,?> map) throws BeansException
Description copied from interface:PropertyAccessor
Perform a batch update from a Map.Bulk updates from PropertyValues are more powerful: This method is provided for convenience. Behavior will be identical to that of the
PropertyAccessor.setPropertyValues(PropertyValues)
method.- Specified by:
setPropertyValues
in interfacePropertyAccessor
- Parameters:
map
- Map to take properties from. Contains property value objects, keyed by property name- Throws:
InvalidPropertyException
- if there is no such property or if the property isn't writablePropertyBatchUpdateException
- if one or more PropertyAccessExceptions occurred for specific properties during the batch update. This exception bundles all individual PropertyAccessExceptions. All other properties will have been successfully updated.BeansException
setPropertyValues
public void setPropertyValues(PropertyValues pvs) throws BeansException
Description copied from interface:PropertyAccessor
The preferred way to perform a batch update.Note that performing a batch 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 type mismatch, but not an invalid field name or the like) is encountered, throwing a
PropertyBatchUpdateException
containing all the individual errors. This exception can be examined later to see all binding errors. Properties that were successfully updated remain changed.Does not allow unknown fields or invalid fields.
- Specified by:
setPropertyValues
in interfacePropertyAccessor
- Parameters:
pvs
- PropertyValues to set on the target object- Throws:
InvalidPropertyException
- if there is no such property or if the property isn't writablePropertyBatchUpdateException
- if one or more PropertyAccessExceptions occurred for specific properties during the batch update. This exception bundles all individual PropertyAccessExceptions. All other properties will have been successfully updated.BeansException
- See Also:
PropertyAccessor.setPropertyValues(PropertyValues, boolean, boolean)
setPropertyValues
public void setPropertyValues(PropertyValues pvs, boolean ignoreUnknown) throws BeansException
Description copied from interface:PropertyAccessor
Perform a batch update with more control over behavior.Note that performing a batch 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 type mismatch, but not an invalid field name or the like) is encountered, throwing a
PropertyBatchUpdateException
containing all the individual errors. This exception can be examined later to see all binding errors. Properties that were successfully updated remain changed.- Specified by:
setPropertyValues
in interfacePropertyAccessor
- Parameters:
pvs
- PropertyValues to set on the target objectignoreUnknown
- should we ignore unknown properties (not found in the bean)- Throws:
InvalidPropertyException
- if there is no such property or if the property isn't writablePropertyBatchUpdateException
- if one or more PropertyAccessExceptions occurred for specific properties during the batch update. This exception bundles all individual PropertyAccessExceptions. All other properties will have been successfully updated.BeansException
- See Also:
PropertyAccessor.setPropertyValues(PropertyValues, boolean, boolean)
setPropertyValues
public void setPropertyValues(PropertyValues pvs, boolean ignoreUnknown, boolean ignoreInvalid) throws BeansException
Description copied from interface:PropertyAccessor
Perform a batch update with full control over behavior.Note that performing a batch 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 type mismatch, but not an invalid field name or the like) is encountered, throwing a
PropertyBatchUpdateException
containing all the individual errors. This exception can be examined later to see all binding errors. Properties that were successfully updated remain changed.- Specified by:
setPropertyValues
in interfacePropertyAccessor
- Parameters:
pvs
- PropertyValues to set on the target objectignoreUnknown
- should we ignore unknown properties (not found in the bean)ignoreInvalid
- should we ignore invalid properties (found but not accessible)- Throws:
InvalidPropertyException
- if there is no such property or if the property isn't writablePropertyBatchUpdateException
- if one or more PropertyAccessExceptions occurred for specific properties during the batch update. This exception bundles all individual PropertyAccessExceptions. All other properties will have been successfully updated.BeansException
getPropertyType
public Class<?> getPropertyType(String propertyPath)
Description copied from class:PropertyEditorRegistrySupport
Determine the property type for the given property path.Called by
PropertyEditorRegistrySupport.findCustomEditor(java.lang.Class<?>, java.lang.String)
if no required type has been specified, to be able to find a type-specific editor even if just given a property path.The default implementation always returns
null
. BeanWrapperImpl overrides this with the standardgetPropertyType
method as defined by the BeanWrapper interface.- Specified by:
getPropertyType
in interfacePropertyAccessor
- Overrides:
getPropertyType
in classPropertyEditorRegistrySupport
- Parameters:
propertyPath
- the property path to determine the type for- Returns:
- the type of the property, or
null
if not determinable - See Also:
PropertyAccessor.getPropertyType(String)
getPropertyValue
public abstract Object getPropertyValue(String propertyName) throws BeansException
Actually get the value of a property.- Specified by:
getPropertyValue
in interfacePropertyAccessor
- Parameters:
propertyName
- name of the property to get the value of- Returns:
- the value of the property
- Throws:
InvalidPropertyException
- if there is no such property or if the property isn't readablePropertyAccessException
- if the property was valid but the accessor method failedInvalidPropertyException
- if there is no such property or if the property isn't readablePropertyAccessException
- if the property was valid but the accessor method failedBeansException
setPropertyValue
public abstract void setPropertyValue(String propertyName, Object value) throws BeansException
Actually set a property value.- Specified by:
setPropertyValue
in interfacePropertyAccessor
- Parameters:
propertyName
- name of the property to set value ofvalue
- the new value- Throws:
InvalidPropertyException
- if there is no such property or if the property isn't writablePropertyAccessException
- if the property was valid but the accessor method failed or a type mismatch occurredInvalidPropertyException
- if there is no such property or if the property isn't writablePropertyAccessException
- if the property was valid but the accessor method failed or a type mismatch occurredBeansException