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 Classes Modifier and Type Class Description protected static classAbstractHeaderMapper.CompositeHeaderMatcherA compositeAbstractHeaderMapper.HeaderMatcherthat matches if one of providedAbstractHeaderMapper.HeaderMatchers matches to theheaderName.protected static classAbstractHeaderMapper.ContentBasedHeaderMatcherA content-basedAbstractHeaderMapper.HeaderMatcherthat matches if the specified header is contained within a list of candidates.static interfaceAbstractHeaderMapper.HeaderMatcherStrategy interface to determine if a given header name matches.protected static classAbstractHeaderMapper.PatternBasedHeaderMatcherA pattern-basedAbstractHeaderMapper.HeaderMatcherthat matches if the specified header matches one of the specified simple patterns.protected static classAbstractHeaderMapper.PrefixBasedMatcherA prefix-basedAbstractHeaderMapper.HeaderMatcherthat matches if the specified header starts with a configurable prefix.protected static classAbstractHeaderMapper.SinglePatternBasedHeaderMatcherA pattern-basedAbstractHeaderMapper.HeaderMatcherthat matches if the specified header matches the specified simple pattern. -
Field Summary
Fields Modifier and Type Field Description protected Logloggerstatic StringNON_STANDARD_HEADER_NAME_PATTERNA special pattern that matches any header that is not a standard header (i.e.static StringSTANDARD_REPLY_HEADER_NAME_PATTERNA special pattern that only matches standard reply headers.static StringSTANDARD_REQUEST_HEADER_NAME_PATTERNA special pattern that only matches standard request headers. -
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractHeaderMapper(String standardHeaderPrefix, Collection<String> requestHeaderNames, Collection<String> replyHeaderNames)Create a new instance. -
Method Summary
Modifier and Type Method Description protected 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.protected abstract Map<String,Object>extractStandardHeaders(T source)Extract the standard headers from the specified source.protected abstract Map<String,Object>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 ClassLoadergetClassLoader()protected <V> VgetHeaderIfAvailable(Map<String,Object> headers, String name, Class<V> type)protected Collection<String>getTransientHeaderNames()Return the transient header names.protected voidpopulateStandardHeaders(Map<String,Object> allHeaders, Map<String,Object> subset, T target)Populate 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.Map<String,Object>toHeadersFromReply(T source)Map from the given reply object to abstractedMessageHeaders.Map<String,Object>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:
- Constant Field Values
-
STANDARD_REPLY_HEADER_NAME_PATTERN
A special pattern that only matches standard reply headers.- See Also:
- Constant Field Values
-
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:
- Constant Field Values
-
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
Extract the standard headers from the specified source.- Parameters:
source- the source object to extract standard headers.- Returns:
- the map of headers to be mapped.
-
extractUserDefinedHeaders
Extract the user-defined headers from the specified source.- Parameters:
source- the source object to extract user defined headers.- Returns:
- the map of headers to be mapped.
-
populateStandardHeaders
Populate the specified standard headers to the specified source.- Parameters:
headers- the map of standard headers to be populated.target- the target object to populate headers.
-
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.
-