Class AbstractHeaderMapper<T>

java.lang.Object
org.springframework.integration.mapping.AbstractHeaderMapper<T>
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, RequestReplyHeaderMapper<T>

public abstract class AbstractHeaderMapper<T>
extends java.lang.Object
implements RequestReplyHeaderMapper<T>, org.springframework.beans.factory.BeanClassLoaderAware
Abstract base class for RequestReplyHeaderMapper implementations.
Since:
2.1
  • Field Details

  • Constructor Details

    • AbstractHeaderMapper

      protected AbstractHeaderMapper​(java.lang.String standardHeaderPrefix, java.util.Collection<java.lang.String> requestHeaderNames, java.util.Collection<java.lang.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​(java.lang.ClassLoader classLoader)
      Specified by:
      setBeanClassLoader in interface org.springframework.beans.factory.BeanClassLoaderAware
    • getClassLoader

      protected java.lang.ClassLoader getClassLoader()
    • setRequestHeaderNames

      public void setRequestHeaderNames​(java.lang.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​(java.lang.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​(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.
      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​(java.util.Collection<java.lang.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​(org.springframework.messaging.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​(org.springframework.messaging.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 java.util.Map<java.lang.String,​java.lang.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 java.util.Map<java.lang.String,​java.lang.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​(java.util.Map<java.lang.String,​java.lang.Object> headers, java.lang.String name, java.lang.Class<V> type)
    • createTargetPropertyName

      protected java.lang.String createTargetPropertyName​(java.lang.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 java.util.Collection<java.lang.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 java.util.Map<java.lang.String,​java.lang.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 java.util.Map<java.lang.String,​java.lang.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​(java.util.Map<java.lang.String,​java.lang.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 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. 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​(java.lang.String headerName, java.lang.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.