Class CustomCollectionEditor
- java.lang.Object
- java.beans.PropertyEditorSupport
- org.springframework.beans.propertyeditors.CustomCollectionEditor
- All Implemented Interfaces:
PropertyEditor
public class CustomCollectionEditor extends PropertyEditorSupport
Property editor for Collections, converting any source Collection to a given target Collection type.By default registered for Set, SortedSet and List, to automatically convert any given Collection to one of those target types if the type does not match the target property.
- Since:
- 1.1.3
- Author:
- Juergen Hoeller
- See Also:
Collection
,Set
,SortedSet
,List
Constructor Summary
Constructors Constructor Description CustomCollectionEditor(Class<? extends Collection> collectionType)
Create a new CustomCollectionEditor for the given target type, keeping an incomingnull
as-is.CustomCollectionEditor(Class<? extends Collection> collectionType, boolean nullAsEmptyCollection)
Create a new CustomCollectionEditor for the given target type.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
alwaysCreateNewCollection()
Return whether to always create a new Collection, even if the type of the passed-in Collection already matches.protected Object
convertElement(Object element)
Hook to convert each encountered Collection/array element.protected Collection<Object>
createCollection(Class<? extends Collection> collectionType, int initialCapacity)
Create a Collection of the given type, with the given initial capacity (if supported by the Collection type).String
getAsText()
This implementation returnsnull
to indicate that there is no appropriate text representation.void
setAsText(String text)
Convert the given text value to a Collection with a single element.void
setValue(Object value)
Convert the given value to a Collection of the target type.Methods inherited from class java.beans.PropertyEditorSupport
addPropertyChangeListener, firePropertyChange, getCustomEditor, getJavaInitializationString, getSource, getTags, getValue, isPaintable, paintValue, removePropertyChangeListener, setSource, supportsCustomEditor
Constructor Detail
CustomCollectionEditor
public CustomCollectionEditor(Class<? extends Collection> collectionType)
Create a new CustomCollectionEditor for the given target type, keeping an incomingnull
as-is.- Parameters:
collectionType
- the target type, which needs to be a sub-interface of Collection or a concrete Collection class- See Also:
Collection
,ArrayList
,TreeSet
,LinkedHashSet
CustomCollectionEditor
public CustomCollectionEditor(Class<? extends Collection> collectionType, boolean nullAsEmptyCollection)
Create a new CustomCollectionEditor for the given target type.If the incoming value is of the given type, it will be used as-is. If it is a different Collection type or an array, it will be converted to a default implementation of the given Collection type. If the value is anything else, a target Collection with that single value will be created.
The default Collection implementations are: ArrayList for List, TreeSet for SortedSet, and LinkedHashSet for Set.
- Parameters:
collectionType
- the target type, which needs to be a sub-interface of Collection or a concrete Collection classnullAsEmptyCollection
- whether to convert an incomingnull
value to an empty Collection (of the appropriate type)- See Also:
Collection
,ArrayList
,TreeSet
,LinkedHashSet
Method Detail
setAsText
public void setAsText(String text) throws IllegalArgumentException
Convert the given text value to a Collection with a single element.- Specified by:
setAsText
in interfacePropertyEditor
- Overrides:
setAsText
in classPropertyEditorSupport
- Throws:
IllegalArgumentException
setValue
public void setValue(Object value)
Convert the given value to a Collection of the target type.- Specified by:
setValue
in interfacePropertyEditor
- Overrides:
setValue
in classPropertyEditorSupport
createCollection
protected Collection<Object> createCollection(Class<? extends Collection> collectionType, int initialCapacity)
Create a Collection of the given type, with the given initial capacity (if supported by the Collection type).- Parameters:
collectionType
- a sub-interface of CollectioninitialCapacity
- the initial capacity- Returns:
- the new Collection instance
alwaysCreateNewCollection
protected boolean alwaysCreateNewCollection()
Return whether to always create a new Collection, even if the type of the passed-in Collection already matches.Default is "false"; can be overridden to enforce creation of a new Collection, for example to convert elements in any case.
- See Also:
convertElement(java.lang.Object)
convertElement
protected Object convertElement(Object element)
Hook to convert each encountered Collection/array element. The default implementation simply returns the passed-in element as-is.Can be overridden to perform conversion of certain elements, for example String to Integer if a String array comes in and should be converted to a Set of Integer objects.
Only called if actually creating a new Collection! This is by default not the case if the type of the passed-in Collection already matches. Override
alwaysCreateNewCollection()
to enforce creating a new Collection in every case.- Parameters:
element
- the source element- Returns:
- the element to be used in the target Collection
- See Also:
alwaysCreateNewCollection()
getAsText
public String getAsText()
This implementation returnsnull
to indicate that there is no appropriate text representation.- Specified by:
getAsText
in interfacePropertyEditor
- Overrides:
getAsText
in classPropertyEditorSupport