Package org.springframework.ui
Class ConcurrentModel
- All Implemented Interfaces:
Serializable
,ConcurrentMap<String,
,Object> Map<String,
,Object> Model
- Direct Known Subclasses:
BindingAwareConcurrentModel
Implementation of the
Model
interface based on a ConcurrentHashMap
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 regular java.util.Map
,
likely a java.util.ConcurrentMap
, for a pre-determined model.
- Since:
- 5.0
- Author:
- Rossen Stoyanchev
- See Also:
-
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
ConstructorDescriptionConstruct 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
Modifier and TypeMethodDescriptionaddAllAttributes
(Collection<?> attributeValues) Copy all attributes in the suppliedCollection
into thisMap
, using attribute name generation for each element.addAllAttributes
(Map<String, ?> attributes) Copy all attributes in the suppliedMap
into thisMap
.addAttribute
(Object attributeValue) Add the supplied attribute to thisMap
using agenerated name
.addAttribute
(String attributeName, Object attributeValue) Add the supplied attribute under the supplied name.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?getAttribute
(String attributeName) Return the attribute value for the given name, if any.mergeAttributes
(Map<String, ?> attributes) Copy all attributes in the suppliedMap
into thisMap
, with existing objects of the same name taking precedence (i.e.void
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 Details
-
ConcurrentModel
public ConcurrentModel()Construct a new, emptyConcurrentModel
. -
ConcurrentModel
Construct a newModelMap
containing the supplied attribute under the supplied name.- See Also:
-
ConcurrentModel
Construct a newModelMap
containing the supplied attribute. Uses attribute name generation to generate the key for the supplied model object.- See Also:
-
-
Method Details
-
put
-
putAll
-
addAttribute
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
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
Copy all attributes in the suppliedCollection
into thisMap
, using attribute name generation for each element.- Specified by:
addAllAttributes
in interfaceModel
- See Also:
-
addAllAttributes
Copy all attributes in the suppliedMap
into thisMap
.- Specified by:
addAllAttributes
in interfaceModel
- See Also:
-
mergeAttributes
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
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
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
-
asMap
Description copied from interface:Model
Return the current set of model attributes as a Map.
-