Package org.springframework.ui
Class ConcurrentModel
- java.lang.Object
- java.util.AbstractMap<K,V>
- java.util.concurrent.ConcurrentHashMap<String,Object>
- org.springframework.ui.ConcurrentModel
- All Implemented Interfaces:
Serializable
,ConcurrentMap<String,Object>
,Map<String,Object>
,Model
- Direct Known Subclasses:
BindingAwareConcurrentModel
public class ConcurrentModel extends ConcurrentHashMap<String,Object> implements Model
Implementation of theModel
interface based on aConcurrentHashMap
for use in concurrent scenarios.Exposed to handler methods by Spring WebFlux, typically via a declaration of the
Model
interface. There is typically no need to create it within user code. If necessary a handler method can return a regularjava.util.Map
, likely ajava.util.ConcurrentMap
, for a pre-determined model.- Since:
- 5.0
- Author:
- Rossen Stoyanchev
- See Also:
- Serialized Form
Nested Class Summary
Nested classes/interfaces inherited from class java.util.concurrent.ConcurrentHashMap
ConcurrentHashMap.KeySetView<K extends Object,V extends Object>
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object,V extends Object>
Constructor Summary
Constructors Constructor Description ConcurrentModel()
Construct a new, emptyConcurrentModel
.ConcurrentModel(Object attributeValue)
Construct a newModelMap
containing the supplied attribute.ConcurrentModel(String attributeName, Object attributeValue)
Construct a newModelMap
containing the supplied attribute under the supplied name.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ConcurrentModel
addAllAttributes(Collection<?> attributeValues)
Copy all attributes in the suppliedCollection
into thisMap
, using attribute name generation for each element.ConcurrentModel
addAllAttributes(Map<String,?> attributes)
Copy all attributes in the suppliedMap
into thisMap
.ConcurrentModel
addAttribute(Object attributeValue)
Add the supplied attribute to thisMap
using agenerated name
.ConcurrentModel
addAttribute(String attributeName, Object attributeValue)
Add the supplied attribute under the supplied name.Map<String,Object>
asMap()
Return the current set of model attributes as a Map.boolean
containsAttribute(String attributeName)
Does this model contain an attribute of the given name?Object
getAttribute(String attributeName)
Return the attribute value for the given name, if any.ConcurrentModel
mergeAttributes(Map<String,?> attributes)
Copy all attributes in the suppliedMap
into thisMap
, with existing objects of the same name taking precedence (i.e.Object
put(String key, Object value)
void
putAll(Map<? extends String,?> map)
Methods inherited from class java.util.concurrent.ConcurrentHashMap
clear, compute, computeIfAbsent, computeIfPresent, contains, containsKey, containsValue, elements, entrySet, equals, forEach, forEach, forEach, forEachEntry, forEachEntry, forEachKey, forEachKey, forEachValue, forEachValue, get, getOrDefault, hashCode, isEmpty, keys, keySet, keySet, mappingCount, merge, newKeySet, newKeySet, putIfAbsent, reduce, reduceEntries, reduceEntries, reduceEntriesToDouble, reduceEntriesToInt, reduceEntriesToLong, reduceKeys, reduceKeys, reduceKeysToDouble, reduceKeysToInt, reduceKeysToLong, reduceToDouble, reduceToInt, reduceToLong, reduceValues, reduceValues, reduceValuesToDouble, reduceValuesToInt, reduceValuesToLong, remove, remove, replace, replace, replaceAll, search, searchEntries, searchKeys, searchValues, size, toString, values
Methods inherited from class java.util.AbstractMap
clone
Constructor Detail
ConcurrentModel
public ConcurrentModel()
Construct a new, emptyConcurrentModel
.
ConcurrentModel
public ConcurrentModel(String attributeName, Object attributeValue)
Construct a newModelMap
containing the supplied attribute under the supplied name.- See Also:
addAttribute(String, Object)
ConcurrentModel
public ConcurrentModel(Object attributeValue)
Construct a newModelMap
containing the supplied attribute. Uses attribute name generation to generate the key for the supplied model object.- See Also:
addAttribute(Object)
Method Detail
addAttribute
public ConcurrentModel addAttribute(String attributeName, @Nullable Object attributeValue)
Add the supplied attribute under the supplied name.- Specified by:
addAttribute
in interfaceModel
- Parameters:
attributeName
- the name of the model attribute (nevernull
)attributeValue
- the model attribute value (ignored ifnull
, just removing an existing entry if any)
addAttribute
public ConcurrentModel addAttribute(Object attributeValue)
Add the supplied attribute to thisMap
using agenerated name
.Note: Empty
Collections
are not added to the model when using this method because we cannot correctly determine the true convention name. View code should check fornull
rather than for empty collections as is already done by JSTL tags.- Specified by:
addAttribute
in interfaceModel
- Parameters:
attributeValue
- the model attribute value (nevernull
)
addAllAttributes
public ConcurrentModel addAllAttributes(@Nullable Collection<?> attributeValues)
Copy all attributes in the suppliedCollection
into thisMap
, using attribute name generation for each element.- Specified by:
addAllAttributes
in interfaceModel
- See Also:
addAttribute(Object)
addAllAttributes
public ConcurrentModel addAllAttributes(@Nullable Map<String,?> attributes)
Copy all attributes in the suppliedMap
into thisMap
.- Specified by:
addAllAttributes
in interfaceModel
- See Also:
addAttribute(String, Object)
mergeAttributes
public ConcurrentModel mergeAttributes(@Nullable Map<String,?> attributes)
Copy all attributes in the suppliedMap
into thisMap
, with existing objects of the same name taking precedence (i.e. not getting replaced).- Specified by:
mergeAttributes
in interfaceModel
containsAttribute
public boolean containsAttribute(String attributeName)
Does this model contain an attribute of the given name?- Specified by:
containsAttribute
in interfaceModel
- Parameters:
attributeName
- the name of the model attribute (nevernull
)- Returns:
- whether this model contains a corresponding attribute
getAttribute
@Nullable public Object getAttribute(String attributeName)
Description copied from interface:Model
Return the attribute value for the given name, if any.- Specified by:
getAttribute
in interfaceModel
- Parameters:
attributeName
- the name of the model attribute (nevernull
)- Returns:
- the corresponding attribute value, or
null
if none