Class AbstractHeaderMapper<T>
java.lang.Object
org.springframework.integration.mapping.AbstractHeaderMapper<T>
- Type Parameters:
 T- the target headers container type.
- All Implemented Interfaces:
 Aware,BeanClassLoaderAware,RequestReplyHeaderMapper<T>
- Direct Known Subclasses:
 DefaultAmqpHeaderMapper,DefaultSoapHeaderMapper,DefaultXmppHeaderMapper
public abstract class AbstractHeaderMapper<T>
extends Object
implements RequestReplyHeaderMapper<T>, BeanClassLoaderAware
Abstract base class for 
RequestReplyHeaderMapper implementations.- Since:
 - 2.1
 - Author:
 - Mark Fisher, Oleg Zhurakousky, Stephane Nicoll, Gary Russell, Artem Bilan
 
- 
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classA compositeAbstractHeaderMapper.HeaderMatcherthat matches if one of providedAbstractHeaderMapper.HeaderMatchers matches to theheaderName.protected static classA content-basedAbstractHeaderMapper.HeaderMatcherthat matches if the specified header is contained within a list of candidates.static interfaceStrategy interface to determine if a given header name matches.protected static classA pattern-basedAbstractHeaderMapper.HeaderMatcherthat matches if the specified header matches one of the specified simple patterns.protected static classA prefix-basedAbstractHeaderMapper.HeaderMatcherthat matches if the specified header starts with a configurable prefix.protected static classA pattern-basedAbstractHeaderMapper.HeaderMatcherthat matches if the specified header matches the specified simple pattern. - 
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Logstatic final StringA special pattern that matches any header that is not a standard header (i.e.static final StringA special pattern that only matches standard reply headers.static final StringA special pattern that only matches standard request headers. - 
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractHeaderMapper(String standardHeaderPrefix, Collection<String> requestHeaderNames, Collection<String> replyHeaderNames) Create a new instance. - 
Method Summary
Modifier and TypeMethodDescriptionprotected AbstractHeaderMapper.HeaderMatchercreateDefaultHeaderMatcher(String standardHeaderPrefix, Collection<String> headerNames) Create the initialAbstractHeaderMapper.HeaderMatcherbased on the specified headers and standard header prefix.protected AbstractHeaderMapper.HeaderMatchercreateHeaderMatcher(Collection<String> patterns) Create aAbstractHeaderMapper.HeaderMatcherthat match if any of the specifiedpatternsmatch.protected StringcreateTargetPropertyName(String propertyName, boolean fromMessageHeaders) Alter the specifiedpropertyNameif necessary.extractStandardHeaders(T source) Extract the standard headers from the specified source.extractUserDefinedHeaders(T source) Extract the user-defined headers from the specified source.voidfromHeadersToReply(MessageHeaders headers, T target) Map from the givenMessageHeadersto the specified reply target.voidfromHeadersToRequest(MessageHeaders headers, T target) Map from the givenMessageHeadersto the specified request target.protected ClassLoaderprotected <V> Vprotected Collection<String> Return the transient header names.protected voidPopulate the specified standard headers to the specified source.protected abstract voidpopulateStandardHeaders(Map<String, Object> headers, T target) Populate the specified standard headers to the specified source.protected abstract voidpopulateUserDefinedHeader(String headerName, Object headerValue, T target) Populate the specified user-defined headers to the specified source.voidsetBeanClassLoader(ClassLoader classLoader) voidsetReplyHeaderNames(String... replyHeaderNames) Provide the header names that should be mapped to a response from aMessageHeaders.voidsetRequestHeaderNames(String... requestHeaderNames) Provide the header names that should be mapped from a request to aMessageHeaders.toHeadersFromReply(T source) Map from the given reply object to abstractedMessageHeaders.toHeadersFromRequest(T source) Map from the given request object to abstractedMessageHeaders. 
- 
Field Details
- 
STANDARD_REQUEST_HEADER_NAME_PATTERN
A special pattern that only matches standard request headers.- See Also:
 
 - 
STANDARD_REPLY_HEADER_NAME_PATTERN
A special pattern that only matches standard reply headers.- See Also:
 
 - 
NON_STANDARD_HEADER_NAME_PATTERN
A special pattern that matches any header that is not a standard header (i.e. any header that does not start with the configured standard header prefix)- See Also:
 
 - 
logger
 
 - 
 - 
Constructor Details
- 
AbstractHeaderMapper
protected AbstractHeaderMapper(String standardHeaderPrefix, Collection<String> requestHeaderNames, Collection<String> replyHeaderNames) Create a new instance.- Parameters:
 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 toMessageHeadersreplyHeaderNames- the header names that should be mapped to a response fromMessageHeaders
 
 - 
 - 
Method Details
- 
setBeanClassLoader
- Specified by:
 setBeanClassLoaderin interfaceBeanClassLoaderAware
 - 
getClassLoader
 - 
setRequestHeaderNames
Provide the header names that should be mapped from a request to aMessageHeaders.The values can also contain simple wildcard patterns (e.g. "foo*" or "*foo") to be matched.
- Parameters:
 requestHeaderNames- The request header names.
 - 
setReplyHeaderNames
Provide the header names that should be mapped to a response from aMessageHeaders.The values can also contain simple wildcard patterns (e.g. "foo*" or "*foo") to be matched.
- Parameters:
 replyHeaderNames- The reply header names.
 - 
createDefaultHeaderMatcher
protected AbstractHeaderMapper.HeaderMatcher createDefaultHeaderMatcher(String standardHeaderPrefix, Collection<String> headerNames) Create the initialAbstractHeaderMapper.HeaderMatcherbased on the specified headers and standard header prefix.- Parameters:
 standardHeaderPrefix- the prefix for standard headers.headerNames- the collection of header names to map.- Returns:
 - the default 
AbstractHeaderMapper.HeaderMatcherinstance. 
 - 
createHeaderMatcher
Create aAbstractHeaderMapper.HeaderMatcherthat match if any of the specifiedpatternsmatch. The pattern can be a header name, a wildcard pattern such asfoo*,*foo, orwithin*foo.Special patterns are also recognized:
STANDARD_REQUEST_HEADER_NAME_PATTERN,STANDARD_REQUEST_HEADER_NAME_PATTERNandNON_STANDARD_HEADER_NAME_PATTERN.- Parameters:
 patterns- the patterns to apply- Returns:
 - a header mapper that match if any of the specified patters match
 
 - 
fromHeadersToRequest
Description copied from interface:RequestReplyHeaderMapperMap from the givenMessageHeadersto the specified request target.- Specified by:
 fromHeadersToRequestin interfaceRequestReplyHeaderMapper<T>- Parameters:
 headers- the abstracted MessageHeaderstarget- the native target request
 - 
fromHeadersToReply
Description copied from interface:RequestReplyHeaderMapperMap from the givenMessageHeadersto the specified reply target.- Specified by:
 fromHeadersToReplyin interfaceRequestReplyHeaderMapper<T>- Parameters:
 headers- the abstracted MessageHeaderstarget- the native target reply
 - 
toHeadersFromRequest
Description copied from interface:RequestReplyHeaderMapperMap from the given request object to abstractedMessageHeaders.- Specified by:
 toHeadersFromRequestin interfaceRequestReplyHeaderMapper<T>- Parameters:
 source- the native target request- Returns:
 - the abstracted MessageHeaders
 
 - 
toHeadersFromReply
Description copied from interface:RequestReplyHeaderMapperMap from the given reply object to abstractedMessageHeaders.- Specified by:
 toHeadersFromReplyin interfaceRequestReplyHeaderMapper<T>- Parameters:
 source- the native target reply- Returns:
 - the abstracted MessageHeaders
 
 - 
getHeaderIfAvailable
 - 
createTargetPropertyName
Alter the specifiedpropertyNameif necessary. By default, the originalpropertyNameis returned.- Parameters:
 propertyName- the original name of the property.fromMessageHeaders- specify if the property originates from aMessageHeadersinstance (true) or from the type managed by this mapper (false).- Returns:
 - the property name for mapping.
 
 - 
getTransientHeaderNames
Return the transient header names. Transient headers are never mapped.- Returns:
 - the names of headers to be skipped from mapping.
 
 - 
extractStandardHeaders
 - 
extractUserDefinedHeaders
 - 
populateStandardHeaders
 - 
populateStandardHeaders
protected void populateStandardHeaders(@Nullable Map<String, Object> allHeaders, Map<String, Object> subset, T target) Populate the specified standard headers to the specified source. If not implemented, callspopulateStandardHeaders(Map, Object).- Parameters:
 allHeaders- all headers including transient.subset- the map of standard headers to be populated.target- the target object to populate headers.- Since:
 - 5.1
 
 - 
populateUserDefinedHeader
Populate the specified user-defined headers to the specified source.- Parameters:
 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.
 
 -