public abstract class AbstractHeaderMapper<T> extends java.lang.Object implements RequestReplyHeaderMapper<T>
RequestReplyHeaderMapper implementations.| Modifier and Type | Class and Description |
|---|---|
protected static class |
AbstractHeaderMapper.CompositeHeaderMatcher
A composite
AbstractHeaderMapper.HeaderMatcher that matches if one of provided
AbstractHeaderMapper.HeaderMatchers matches to the headerName. |
protected static class |
AbstractHeaderMapper.ContentBasedHeaderMatcher
A content-based
AbstractHeaderMapper.HeaderMatcher that matches if the specified
header is contained within a list of candidates. |
static interface |
AbstractHeaderMapper.HeaderMatcher
Strategy interface to determine if a given header name matches.
|
protected static class |
AbstractHeaderMapper.PatternBasedHeaderMatcher
A pattern-based
AbstractHeaderMapper.HeaderMatcher that matches if the specified
header matches one of the specified simple patterns. |
protected static class |
AbstractHeaderMapper.PrefixBasedMatcher
A prefix-based
AbstractHeaderMapper.HeaderMatcher that matches if the specified
header starts with a configurable prefix. |
protected static class |
AbstractHeaderMapper.SinglePatternBasedHeaderMatcher
A pattern-based
AbstractHeaderMapper.HeaderMatcher that matches if the specified
header matches the specified simple pattern. |
| Modifier and Type | Field and Description |
|---|---|
protected org.apache.commons.logging.Log |
logger |
static java.lang.String |
NON_STANDARD_HEADER_NAME_PATTERN
A special pattern that matches any header that is not a standard header (i.e.
|
static java.lang.String |
STANDARD_REPLY_HEADER_NAME_PATTERN
A special pattern that only matches standard reply headers.
|
static java.lang.String |
STANDARD_REQUEST_HEADER_NAME_PATTERN
A special pattern that only matches standard request headers.
|
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractHeaderMapper(java.lang.String standardHeaderPrefix,
java.util.Collection<java.lang.String> requestHeaderNames,
java.util.Collection<java.lang.String> replyHeaderNames)
Create a new instance.
|
| Modifier and Type | Method and Description |
|---|---|
protected AbstractHeaderMapper.HeaderMatcher |
createDefaultHeaderMatcher(java.lang.String standardHeaderPrefix,
java.util.Collection<java.lang.String> headerNames)
Create the initial
AbstractHeaderMapper.HeaderMatcher based on the specified headers and
standard header prefix. |
protected AbstractHeaderMapper.HeaderMatcher |
createHeaderMatcher(java.util.Collection<java.lang.String> patterns)
Create a
AbstractHeaderMapper.HeaderMatcher that match if any of the specified patterns
match. |
protected java.lang.String |
createTargetPropertyName(java.lang.String propertyName,
boolean fromMessageHeaders)
Alter the specified
propertyName if necessary. |
protected abstract java.util.Map<java.lang.String,java.lang.Object> |
extractStandardHeaders(T source)
Extract the standard headers from the specified source.
|
protected abstract java.util.Map<java.lang.String,java.lang.Object> |
extractUserDefinedHeaders(T source)
Extract the user-defined headers from the specified source.
|
void |
fromHeadersToReply(org.springframework.messaging.MessageHeaders headers,
T target)
Map from the given
MessageHeaders to the specified reply target. |
void |
fromHeadersToRequest(org.springframework.messaging.MessageHeaders headers,
T target)
Map from the given
MessageHeaders to the specified request target. |
protected <V> V |
getHeaderIfAvailable(java.util.Map<java.lang.String,java.lang.Object> headers,
java.lang.String name,
java.lang.Class<V> type) |
protected java.util.Collection<java.lang.String> |
getTransientHeaderNames()
Return the transient header names.
|
protected void |
populateStandardHeaders(java.util.Map<java.lang.String,java.lang.Object> allHeaders,
java.util.Map<java.lang.String,java.lang.Object> subset,
T target)
Populate the specified standard headers to the specified source.
|
protected abstract void |
populateStandardHeaders(java.util.Map<java.lang.String,java.lang.Object> headers,
T target)
Populate the specified standard headers to the specified source.
|
protected abstract void |
populateUserDefinedHeader(java.lang.String headerName,
java.lang.Object headerValue,
T target)
Populate the specified user-defined headers to the specified source.
|
void |
setReplyHeaderNames(java.lang.String... replyHeaderNames)
Provide the header names that should be mapped to a response
from a
MessageHeaders. |
void |
setRequestHeaderNames(java.lang.String... requestHeaderNames)
Provide the header names that should be mapped from a request
to a
MessageHeaders. |
java.util.Map<java.lang.String,java.lang.Object> |
toHeadersFromReply(T source)
Map from the given reply object to abstracted
MessageHeaders. |
java.util.Map<java.lang.String,java.lang.Object> |
toHeadersFromRequest(T source)
Map from the given request object to abstracted
MessageHeaders. |
public static final java.lang.String STANDARD_REQUEST_HEADER_NAME_PATTERN
public static final java.lang.String STANDARD_REPLY_HEADER_NAME_PATTERN
public static final java.lang.String NON_STANDARD_HEADER_NAME_PATTERN
protected final org.apache.commons.logging.Log logger
protected AbstractHeaderMapper(java.lang.String standardHeaderPrefix,
java.util.Collection<java.lang.String> requestHeaderNames,
java.util.Collection<java.lang.String> replyHeaderNames)
standardHeaderPrefix - the header prefix that identifies standard header. Such prefix helps to
differentiate user-defined headers from standard headers. If set, user-defined headers are also
mapped by defaultrequestHeaderNames - the header names that should be mapped from a request to MessageHeadersreplyHeaderNames - the header names that should be mapped to a response from MessageHeaderspublic void setRequestHeaderNames(java.lang.String... requestHeaderNames)
MessageHeaders.
The values can also contain simple wildcard patterns (e.g. "foo*" or "*foo") to be matched.
requestHeaderNames - The request header names.public void setReplyHeaderNames(java.lang.String... replyHeaderNames)
MessageHeaders.
The values can also contain simple wildcard patterns (e.g. "foo*" or "*foo") to be matched.
replyHeaderNames - The reply header names.protected AbstractHeaderMapper.HeaderMatcher createDefaultHeaderMatcher(java.lang.String standardHeaderPrefix, java.util.Collection<java.lang.String> headerNames)
AbstractHeaderMapper.HeaderMatcher based on the specified headers and
standard header prefix.standardHeaderPrefix - the prefix for standard headers.headerNames - the collection of header names to map.AbstractHeaderMapper.HeaderMatcher instance.protected AbstractHeaderMapper.HeaderMatcher createHeaderMatcher(java.util.Collection<java.lang.String> patterns)
AbstractHeaderMapper.HeaderMatcher that match if any of the specified patterns
match. The pattern can be a header name, a wildcard pattern such as
foo*, *foo, or within*foo.
Special patterns are also recognized: STANDARD_REQUEST_HEADER_NAME_PATTERN,
STANDARD_REQUEST_HEADER_NAME_PATTERN and NON_STANDARD_HEADER_NAME_PATTERN.
patterns - the patterns to applypublic void fromHeadersToRequest(org.springframework.messaging.MessageHeaders headers,
T target)
RequestReplyHeaderMapperMessageHeaders to the specified request target.fromHeadersToRequest in interface RequestReplyHeaderMapper<T>headers - the abstracted MessageHeaderstarget - the native target requestpublic void fromHeadersToReply(org.springframework.messaging.MessageHeaders headers,
T target)
RequestReplyHeaderMapperMessageHeaders to the specified reply target.fromHeadersToReply in interface RequestReplyHeaderMapper<T>headers - the abstracted MessageHeaderstarget - the native target replypublic java.util.Map<java.lang.String,java.lang.Object> toHeadersFromRequest(T source)
RequestReplyHeaderMapperMessageHeaders.toHeadersFromRequest in interface RequestReplyHeaderMapper<T>source - the native target requestpublic java.util.Map<java.lang.String,java.lang.Object> toHeadersFromReply(T source)
RequestReplyHeaderMapperMessageHeaders.toHeadersFromReply in interface RequestReplyHeaderMapper<T>source - the native target replyprotected <V> V getHeaderIfAvailable(java.util.Map<java.lang.String,java.lang.Object> headers,
java.lang.String name,
java.lang.Class<V> type)
protected java.lang.String createTargetPropertyName(java.lang.String propertyName,
boolean fromMessageHeaders)
propertyName if necessary. By default, the original
propertyName is returned.propertyName - the original name of the property.fromMessageHeaders - specify if the property originates from a MessageHeaders
instance (true) or from the type managed by this mapper (false).protected java.util.Collection<java.lang.String> getTransientHeaderNames()
protected abstract java.util.Map<java.lang.String,java.lang.Object> extractStandardHeaders(T source)
source - the source object to extract standard headers.protected abstract java.util.Map<java.lang.String,java.lang.Object> extractUserDefinedHeaders(T source)
source - the source object to extract user defined headers.protected abstract void populateStandardHeaders(java.util.Map<java.lang.String,java.lang.Object> headers,
T target)
headers - the map of standard headers to be populated.target - the target object to populate headers.protected void populateStandardHeaders(@Nullable
java.util.Map<java.lang.String,java.lang.Object> allHeaders,
java.util.Map<java.lang.String,java.lang.Object> subset,
T target)
populateStandardHeaders(Map, Object).allHeaders - all headers including transient.subset - the map of standard headers to be populated.target - the target object to populate headers.protected abstract void populateUserDefinedHeader(java.lang.String headerName,
java.lang.Object headerValue,
T target)
headerName - the user defined header name to be populated.headerValue - the user defined header value to be populated.target - the target object to populate headers.