Class NativeMessageHeaderAccessor
java.lang.Object
org.springframework.messaging.support.MessageHeaderAccessor
org.springframework.messaging.support.NativeMessageHeaderAccessor
- Direct Known Subclasses:
JmsMessageHeaderAccessor
,SimpMessageHeaderAccessor
MessageHeaderAccessor
subclass that supports storage and access of
headers from an external source such as a message broker. Headers from the
external source are kept separate from other headers, in a sub-map under the
key NATIVE_HEADERS
. This allows separating processing headers from
headers that need to be sent to or received from the external source.
This class is likely to be used indirectly through a protocol-specific subclass that also provides factory methods to translate message headers to and from an external messaging source.
- Since:
- 4.0
- Author:
- Rossen Stoyanchev
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
The header name used to store native headers.Fields inherited from class org.springframework.messaging.support.MessageHeaderAccessor
DEFAULT_CHARSET
-
Constructor Summary
ModifierConstructorDescriptionprotected
Protected constructor to create a new instance.protected
NativeMessageHeaderAccessor
(Map<String, List<String>> nativeHeaders) Protected constructor to create an instance with the given native headers.protected
NativeMessageHeaderAccessor
(Message<?> message) Protected constructor that copies headers from another message. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addNativeHeader
(String name, String value) Add the specified native header value to existing values.void
addNativeHeaders
(MultiValueMap<String, String> headers) Add the specified native headers to existing values.boolean
containsNativeHeader
(String headerName) Whether the native header map contains the give header name.void
copyHeaders
(Map<String, ?> headersToCopy) Copy the name-value pairs from the provided Map.void
copyHeadersIfAbsent
(Map<String, ?> headersToCopy) Copy the name-value pairs from the provided Map.getFirstNativeHeader
(String headerName) Return the first value for the specified native header, if present.static String
getFirstNativeHeader
(String headerName, Map<String, Object> headers) Return the first value for the specified native header, ornull
if none.getNativeHeader
(String headerName) Return all values for the specified native header, if present.Subclasses can use this method to access the "native" headers sub-map.removeNativeHeader
(String headerName) Remove the specified native header value replacing existing values.void
By default, whenMessageHeaderAccessor.getMessageHeaders()
is called,"this"
MessageHeaderAccessor
instance can no longer be used to modify the underlying message headers.void
setNativeHeader
(String name, String value) Set the specified native header value replacing existing values.void
setNativeHeaderValues
(String name, List<String> values) Variant ofaddNativeHeader(String, String)
for all values.Return a copy of the native headers sub-map, or an empty map.Methods inherited from class org.springframework.messaging.support.MessageHeaderAccessor
createAccessor, getAccessor, getAccessor, getAccessor, getContentType, getDetailedLogMessage, getDetailedPayloadLogMessage, getErrorChannel, getHeader, getId, getMessageHeaders, getMutableAccessor, getReplyChannel, getShortLogMessage, getShortPayloadLogMessage, getTimestamp, isModified, isMutable, isReadableContentType, isReadOnly, removeHeader, removeHeaders, setContentType, setErrorChannel, setErrorChannelName, setHeader, setHeaderIfAbsent, setLeaveMutable, setModified, setReplyChannel, setReplyChannelName, toMap, toMessageHeaders, toString, verifyType
-
Field Details
-
NATIVE_HEADERS
The header name used to store native headers.- See Also:
-
-
Constructor Details
-
NativeMessageHeaderAccessor
protected NativeMessageHeaderAccessor()Protected constructor to create a new instance. -
NativeMessageHeaderAccessor
Protected constructor to create an instance with the given native headers.- Parameters:
nativeHeaders
- native headers to create the message with (may benull
)
-
NativeMessageHeaderAccessor
Protected constructor that copies headers from another message.
-
-
Method Details
-
getNativeHeaders
Subclasses can use this method to access the "native" headers sub-map. -
toNativeHeaderMap
Return a copy of the native headers sub-map, or an empty map. -
setImmutable
public void setImmutable()Description copied from class:MessageHeaderAccessor
By default, whenMessageHeaderAccessor.getMessageHeaders()
is called,"this"
MessageHeaderAccessor
instance can no longer be used to modify the underlying message headers. However ifMessageHeaderAccessor.setLeaveMutable(boolean)
is used, this method is necessary to indicate explicitly when theMessageHeaders
instance should no longer be modified.- Overrides:
setImmutable
in classMessageHeaderAccessor
-
copyHeaders
Description copied from class:MessageHeaderAccessor
Copy the name-value pairs from the provided Map.This operation will overwrite any existing values. Use
MessageHeaderAccessor.copyHeadersIfAbsent(Map)
to avoid overwriting values.- Overrides:
copyHeaders
in classMessageHeaderAccessor
-
copyHeadersIfAbsent
Description copied from class:MessageHeaderAccessor
Copy the name-value pairs from the provided Map.This operation will not overwrite any existing values.
- Overrides:
copyHeadersIfAbsent
in classMessageHeaderAccessor
-
containsNativeHeader
Whether the native header map contains the give header name.- Parameters:
headerName
- the name of the header
-
getNativeHeader
Return all values for the specified native header, if present.- Parameters:
headerName
- the name of the header- Returns:
- the associated values, or
null
if none
-
getFirstNativeHeader
Return the first value for the specified native header, if present.- Parameters:
headerName
- the name of the header- Returns:
- the associated value, or
null
if none
-
setNativeHeader
Set the specified native header value replacing existing values.In order for this to work, the accessor must be
mutable
. SeeMessageHeaderAccessor
for details. -
setNativeHeaderValues
Variant ofaddNativeHeader(String, String)
for all values.- Since:
- 5.2.12
-
addNativeHeader
Add the specified native header value to existing values.In order for this to work, the accessor must be
mutable
. SeeMessageHeaderAccessor
for details.- Parameters:
name
- the name of the headervalue
- the header value to set
-
addNativeHeaders
Add the specified native headers to existing values.- Parameters:
headers
- the headers to set
-
removeNativeHeader
Remove the specified native header value replacing existing values.In order for this to work, the accessor must be
mutable
. SeeMessageHeaderAccessor
for details.- Parameters:
headerName
- the name of the header- Returns:
- the associated values, or
null
if the header was not present
-
getFirstNativeHeader
Return the first value for the specified native header, ornull
if none.- Parameters:
headerName
- the name of the headerheaders
- the headers map to introspect- Returns:
- the associated value, or
null
if none
-