Class NativeMessageHeaderAccessor
- java.lang.Object
- org.springframework.messaging.support.MessageHeaderAccessor
- org.springframework.messaging.support.NativeMessageHeaderAccessor
- Direct Known Subclasses:
JmsMessageHeaderAccessor,SimpMessageHeaderAccessor
public class NativeMessageHeaderAccessor extends MessageHeaderAccessor
MessageHeaderAccessorsub-class 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 keyNATIVE_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 through indirectly through a protocol specific sub-class that also provide factory methods to translate message headers to an from an external messaging source.
- Since:
- 4.0
- Author:
- Rossen Stoyanchev
Field Summary
Fields Modifier and Type Field Description static StringNATIVE_HEADERSThe header name used to store native headers.Fields inherited from class org.springframework.messaging.support.MessageHeaderAccessor
DEFAULT_CHARSET
Constructor Summary
Constructors Modifier Constructor Description protectedNativeMessageHeaderAccessor()Protected constructor to create a new instance.protectedNativeMessageHeaderAccessor(Map<String,List<String>> nativeHeaders)Protected constructor to create an instance with the given native headers.protectedNativeMessageHeaderAccessor(Message<?> message)Protected constructor that copies headers from another message.
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddNativeHeader(String name, String value)Add the specified native header value to existing values.voidaddNativeHeaders(MultiValueMap<String,String> headers)Add the specified native headers to existing values.booleancontainsNativeHeader(String headerName)Whether the native header map contains the give header name.voidcopyHeaders(Map<String,?> headersToCopy)Copy the name-value pairs from the provided Map.voidcopyHeadersIfAbsent(Map<String,?> headersToCopy)Copy the name-value pairs from the provided Map.StringgetFirstNativeHeader(String headerName)Return the first value for the specified native header, if present.static StringgetFirstNativeHeader(String headerName, Map<String,Object> headers)Return the first value for the specified native header, ornullif none.List<String>getNativeHeader(String headerName)Return all values for the specified native header, if present.protected Map<String,List<String>>getNativeHeaders()Subclasses can use this method to access the "native" headers sub-map.List<String>removeNativeHeader(String headerName)Remove the specified native header value replacing existing values.voidsetImmutable()By default whenMessageHeaderAccessor.getMessageHeaders()is called,"this"MessageHeaderAccessorinstance can no longer be used to modify the underlying message headers.voidsetNativeHeader(String name, String value)Set the specified native header value replacing existing values.voidsetNativeHeaderValues(String name, List<String> values)Variant ofaddNativeHeader(String, String)for all values.Map<String,List<String>>toNativeHeaderMap()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 Detail
NATIVE_HEADERS
public static final String NATIVE_HEADERS
The header name used to store native headers.- See Also:
- Constant Field Values
Constructor Detail
NativeMessageHeaderAccessor
protected NativeMessageHeaderAccessor()
Protected constructor to create a new instance.
NativeMessageHeaderAccessor
protected NativeMessageHeaderAccessor(@Nullable Map<String,List<String>> nativeHeaders)
Protected constructor to create an instance with the given native headers.- Parameters:
nativeHeaders- native headers to create the message with (may benull)
NativeMessageHeaderAccessor
protected NativeMessageHeaderAccessor(@Nullable Message<?> message)
Protected constructor that copies headers from another message.
Method Detail
getNativeHeaders
@Nullable protected Map<String,List<String>> getNativeHeaders()
Subclasses can use this method to access the "native" headers sub-map.
toNativeHeaderMap
public Map<String,List<String>> toNativeHeaderMap()
Return a copy of the native headers sub-map, or an empty map.
setImmutable
public void setImmutable()
Description copied from class:MessageHeaderAccessorBy default whenMessageHeaderAccessor.getMessageHeaders()is called,"this"MessageHeaderAccessorinstance 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 theMessageHeadersinstance should no longer be modified.- Overrides:
setImmutablein classMessageHeaderAccessor
copyHeaders
public void copyHeaders(@Nullable Map<String,?> headersToCopy)
Description copied from class:MessageHeaderAccessorCopy the name-value pairs from the provided Map.This operation will overwrite any existing values. Use
MessageHeaderAccessor.copyHeadersIfAbsent(Map)to avoid overwriting values.- Overrides:
copyHeadersin classMessageHeaderAccessor
copyHeadersIfAbsent
public void copyHeadersIfAbsent(@Nullable Map<String,?> headersToCopy)
Description copied from class:MessageHeaderAccessorCopy the name-value pairs from the provided Map.This operation will not overwrite any existing values.
- Overrides:
copyHeadersIfAbsentin classMessageHeaderAccessor
containsNativeHeader
public boolean containsNativeHeader(String headerName)
Whether the native header map contains the give header name.- Parameters:
headerName- the name of the header
getNativeHeader
@Nullable public List<String> getNativeHeader(String headerName)
Return all values for the specified native header, if present.- Parameters:
headerName- the name of the header- Returns:
- the associated values, or
nullif none
getFirstNativeHeader
@Nullable public String getFirstNativeHeader(String headerName)
Return the first value for the specified native header, if present.- Parameters:
headerName- the name of the header- Returns:
- the associated value, or
nullif none
setNativeHeader
public void setNativeHeader(String name, @Nullable String value)
Set the specified native header value replacing existing values.In order for this to work, the accessor must be
mutable. SeeMessageHeaderAccessorfor details.
setNativeHeaderValues
public void setNativeHeaderValues(String name, @Nullable List<String> values)
Variant ofaddNativeHeader(String, String)for all values.- Since:
- 5.2.12
addNativeHeader
public void addNativeHeader(String name, @Nullable String value)
Add the specified native header value to existing values.In order for this to work, the accessor must be
mutable. SeeMessageHeaderAccessorfor details.- Parameters:
name- the name of the headervalue- the header value to set
addNativeHeaders
public void addNativeHeaders(@Nullable MultiValueMap<String,String> headers)
Add the specified native headers to existing values.- Parameters:
headers- the headers to set
removeNativeHeader
@Nullable public List<String> removeNativeHeader(String headerName)
Remove the specified native header value replacing existing values.In order for this to work, the accessor must be
mutable. SeeMessageHeaderAccessorfor details.- Parameters:
headerName- the name of the header- Returns:
- the associated values, or
nullif the header was not present
getFirstNativeHeader
@Nullable public static String getFirstNativeHeader(String headerName, Map<String,Object> headers)
Return the first value for the specified native header, ornullif none.- Parameters:
headerName- the name of the headerheaders- the headers map to introspect- Returns:
- the associated value, or
nullif none