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
  • Field Details

    • STANDARD_REQUEST_HEADER_NAME_PATTERN

      public static final String STANDARD_REQUEST_HEADER_NAME_PATTERN
      A special pattern that only matches standard request headers.
      See Also:
    • STANDARD_REPLY_HEADER_NAME_PATTERN

      public static final String STANDARD_REPLY_HEADER_NAME_PATTERN
      A special pattern that only matches standard reply headers.
      See Also:
    • NON_STANDARD_HEADER_NAME_PATTERN

      public static final String 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

      protected final Log 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 default
      requestHeaderNames - the header names that should be mapped from a request to MessageHeaders
      replyHeaderNames - the header names that should be mapped to a response from MessageHeaders
  • Method Details

    • setBeanClassLoader

      public void setBeanClassLoader(ClassLoader classLoader)
      Specified by:
      setBeanClassLoader in interface BeanClassLoaderAware
    • getClassLoader

      protected ClassLoader getClassLoader()
    • setRequestHeaderNames

      public void setRequestHeaderNames(String... requestHeaderNames)
      Provide the header names that should be mapped from a request to a MessageHeaders.

      The values can also contain simple wildcard patterns (e.g. "foo*" or "*foo") to be matched.

      Parameters:
      requestHeaderNames - The request header names.
    • setReplyHeaderNames

      public void setReplyHeaderNames(String... replyHeaderNames)
      Provide the header names that should be mapped to a response from a MessageHeaders.

      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 initial AbstractHeaderMapper.HeaderMatcher based 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.HeaderMatcher instance.
    • createHeaderMatcher

      protected AbstractHeaderMapper.HeaderMatcher createHeaderMatcher(Collection<String> patterns)
      Create a 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.

      Parameters:
      patterns - the patterns to apply
      Returns:
      a header mapper that match if any of the specified patters match
    • fromHeadersToRequest

      public void fromHeadersToRequest(MessageHeaders headers, T target)
      Description copied from interface: RequestReplyHeaderMapper
      Map from the given MessageHeaders to the specified request target.
      Specified by:
      fromHeadersToRequest in interface RequestReplyHeaderMapper<T>
      Parameters:
      headers - the abstracted MessageHeaders
      target - the native target request
    • fromHeadersToReply

      public void fromHeadersToReply(MessageHeaders headers, T target)
      Description copied from interface: RequestReplyHeaderMapper
      Map from the given MessageHeaders to the specified reply target.
      Specified by:
      fromHeadersToReply in interface RequestReplyHeaderMapper<T>
      Parameters:
      headers - the abstracted MessageHeaders
      target - the native target reply
    • toHeadersFromRequest

      public Map<String,Object> toHeadersFromRequest(T source)
      Description copied from interface: RequestReplyHeaderMapper
      Map from the given request object to abstracted MessageHeaders.
      Specified by:
      toHeadersFromRequest in interface RequestReplyHeaderMapper<T>
      Parameters:
      source - the native target request
      Returns:
      the abstracted MessageHeaders
    • toHeadersFromReply

      public Map<String,Object> toHeadersFromReply(T source)
      Description copied from interface: RequestReplyHeaderMapper
      Map from the given reply object to abstracted MessageHeaders.
      Specified by:
      toHeadersFromReply in interface RequestReplyHeaderMapper<T>
      Parameters:
      source - the native target reply
      Returns:
      the abstracted MessageHeaders
    • getHeaderIfAvailable

      @Nullable protected <V> V getHeaderIfAvailable(Map<String,Object> headers, String name, Class<V> type)
    • createTargetPropertyName

      protected String createTargetPropertyName(String propertyName, boolean fromMessageHeaders)
      Alter the specified propertyName if necessary. By default, the original propertyName is returned.
      Parameters:
      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).
      Returns:
      the property name for mapping.
    • getTransientHeaderNames

      protected Collection<String> getTransientHeaderNames()
      Return the transient header names. Transient headers are never mapped.
      Returns:
      the names of headers to be skipped from mapping.
    • extractStandardHeaders

      protected abstract Map<String,Object> extractStandardHeaders(T source)
      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

      protected abstract Map<String,Object> extractUserDefinedHeaders(T source)
      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

      protected abstract void populateStandardHeaders(Map<String,Object> headers, T target)
      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, calls populateStandardHeaders(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

      protected abstract void populateUserDefinedHeader(String headerName, Object headerValue, T target)
      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.