Class AbstractHttpRequestExecutingMessageHandler

java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.handler.MessageHandlerSupport
org.springframework.integration.handler.AbstractMessageHandler
org.springframework.integration.handler.AbstractMessageProducingHandler
org.springframework.integration.handler.AbstractReplyProducingMessageHandler
org.springframework.integration.http.outbound.AbstractHttpRequestExecutingMessageHandler
All Implemented Interfaces:
org.reactivestreams.Subscriber<org.springframework.messaging.Message<?>>, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationContextAware, org.springframework.core.Ordered, org.springframework.integration.context.ExpressionCapable, org.springframework.integration.context.Orderable, org.springframework.integration.core.MessageProducer, org.springframework.integration.handler.HeaderPropagationAware, org.springframework.integration.IntegrationPattern, org.springframework.integration.support.context.NamedComponent, org.springframework.integration.support.management.IntegrationManagement, org.springframework.integration.support.management.TrackableComponent, org.springframework.messaging.MessageHandler, reactor.core.CoreSubscriber<org.springframework.messaging.Message<?>>
Direct Known Subclasses:
HttpRequestExecutingMessageHandler

public abstract class AbstractHttpRequestExecutingMessageHandler
extends org.springframework.integration.handler.AbstractReplyProducingMessageHandler
Base class for http outbound adapter/gateway.
Since:
5.0
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler

    org.springframework.integration.handler.AbstractReplyProducingMessageHandler.RequestHandler

    Nested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement

    org.springframework.integration.support.management.IntegrationManagement.ManagementOverrides
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected org.springframework.web.util.DefaultUriBuilderFactory uriFactory  

    Fields inherited from class org.springframework.integration.handler.AbstractMessageProducingHandler

    messagingTemplate

    Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport

    EXPRESSION_PARSER, logger

    Fields inherited from interface org.springframework.integration.support.management.IntegrationManagement

    METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME

    Fields inherited from interface org.springframework.core.Ordered

    HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
  • Constructor Summary

    Constructors 
    Constructor Description
    AbstractHttpRequestExecutingMessageHandler​(org.springframework.expression.Expression uriExpression)  
  • Method Summary

    Modifier and Type Method Description
    protected void doInit()  
    protected java.lang.Object evaluateTypeFromExpression​(org.springframework.messaging.Message<?> requestMessage, org.springframework.expression.Expression expression, java.lang.String property)  
    protected abstract java.lang.Object exchange​(java.lang.Object uri, org.springframework.http.HttpMethod httpMethod, org.springframework.http.HttpEntity<?> httpRequest, java.lang.Object expectedResponseType, org.springframework.messaging.Message<?> requestMessage, java.util.Map<java.lang.String,​?> uriVariables)  
    org.springframework.integration.IntegrationPatternType getIntegrationPatternType()  
    protected java.lang.Object getReply​(org.springframework.http.ResponseEntity<?> httpResponse)  
    protected java.lang.Object handleRequestMessage​(org.springframework.messaging.Message<?> requestMessage)  
    boolean isExpectReply()  
    protected org.springframework.http.HttpHeaders mapHeaders​(org.springframework.messaging.Message<?> message)  
    void setCharset​(java.lang.String charset)
    Specify the charset name to use for converting String-typed payloads to bytes.
    void setEncodingMode​(org.springframework.web.util.DefaultUriBuilderFactory.EncodingMode encodingMode)
    Set the encoding mode to use.
    void setExpectedResponseType​(java.lang.Class<?> expectedResponseType)
    Specify the expected response type for the REST request.
    void setExpectedResponseTypeExpression​(org.springframework.expression.Expression expectedResponseTypeExpression)
    Specify the Expression to determine the type for the expected response The returned value of the expression could be an instance of Class or String representing a fully qualified class name.
    void setExpectReply​(boolean expectReply)
    Specify whether a reply Message is expected.
    void setExtractPayload​(boolean extractPayload)
    Specify whether the outbound message's payload should be extracted when preparing the request body.
    void setExtractResponseBody​(boolean extractResponseBody)
    The flag to extract a body of the ResponseEntity for reply message payload.
    void setHeaderMapper​(org.springframework.integration.mapping.HeaderMapper<org.springframework.http.HttpHeaders> headerMapper)
    Set the HeaderMapper to use when mapping between HTTP headers and MessageHeaders.
    void setHttpMethod​(org.springframework.http.HttpMethod httpMethod)
    Specify the HttpMethod for requests.
    void setHttpMethodExpression​(org.springframework.expression.Expression httpMethodExpression)
    Specify the SpEL Expression to determine HttpMethod at runtime.
    void setTransferCookies​(boolean transferCookies)
    Set to true if you wish 'Set-Cookie' headers in responses to be transferred as 'Cookie' headers in subsequent interactions for a message.
    void setTrustedSpel​(boolean trustedSpel)
    Set to true if you trust the source of SpEL expressions used to evaluate URI variables.
    void setUriVariableExpressions​(java.util.Map<java.lang.String,​org.springframework.expression.Expression> uriVariableExpressions)
    Set the Map of URI variable expressions to evaluate against the outbound message when replacing the variable placeholders in a URI template.
    void setUriVariablesExpression​(org.springframework.expression.Expression uriVariablesExpression)
    Set the Expression to evaluate against the outbound message; the expression must evaluate to a Map of URI variable expressions to evaluate against the outbound message when replacing the variable placeholders in a URI template.

    Methods inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler

    doInvokeAdvisedRequestHandler, getBeanClassLoader, getRequiresReply, handleMessageInternal, hasAdviceChain, onInit, setAdviceChain, setBeanClassLoader, setRequiresReply

    Methods inherited from class org.springframework.integration.handler.AbstractMessageProducingHandler

    addNotPropagatedHeaders, createOutputMessage, getNotPropagatedHeaders, getOutputChannel, isAsync, messageBuilderForReply, produceOutput, resolveErrorChannel, sendErrorMessage, sendOutput, sendOutputs, setAsync, setNotPropagatedHeaders, setOutputChannel, setOutputChannelName, setSendTimeout, shouldCopyRequestHeaders, shouldSplitOutput, updateNotPropagatedHeaders

    Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler

    handleMessage, onComplete, onError, onNext, onSubscribe

    Methods inherited from class org.springframework.integration.handler.MessageHandlerSupport

    buildSendTimer, destroy, getComponentType, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack

    Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport

    afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface reactor.core.CoreSubscriber

    currentContext

    Methods inherited from interface org.springframework.integration.support.management.IntegrationManagement

    getThisAs

    Methods inherited from interface org.springframework.integration.support.context.NamedComponent

    getBeanName, getComponentName
  • Field Details

    • uriFactory

      protected final org.springframework.web.util.DefaultUriBuilderFactory uriFactory
  • Constructor Details

  • Method Details

    • setEncodingMode

      public void setEncodingMode​(org.springframework.web.util.DefaultUriBuilderFactory.EncodingMode encodingMode)
      Set the encoding mode to use. By default this is set to DefaultUriBuilderFactory.EncodingMode.TEMPLATE_AND_VALUES. For more complicated scenarios consider to configure an UriTemplateHandler on an externally provided RestTemplate.
      Parameters:
      encodingMode - the mode to use for uri encoding
      Since:
      5.3
    • setHttpMethodExpression

      public void setHttpMethodExpression​(org.springframework.expression.Expression httpMethodExpression)
      Specify the SpEL Expression to determine HttpMethod at runtime.
      Parameters:
      httpMethodExpression - The method expression.
    • setHttpMethod

      public void setHttpMethod​(org.springframework.http.HttpMethod httpMethod)
      Specify the HttpMethod for requests. The default method is POST.
      Parameters:
      httpMethod - The method.
    • setExtractPayload

      public void setExtractPayload​(boolean extractPayload)
      Specify whether the outbound message's payload should be extracted when preparing the request body. Otherwise the Message instance itself is serialized. The default value is true.
      Parameters:
      extractPayload - true if the payload should be extracted.
    • setCharset

      public void setCharset​(java.lang.String charset)
      Specify the charset name to use for converting String-typed payloads to bytes. The default is UTF-8.
      Parameters:
      charset - The charset.
    • isExpectReply

      public boolean isExpectReply()
      Returns:
      whether a reply Message is expected.
      See Also:
      setExpectReply(boolean)
    • setExpectReply

      public void setExpectReply​(boolean expectReply)
      Specify whether a reply Message is expected. If not, this handler will simply return null for a successful response or throw an Exception for a non-successful response. The default is true.
      Parameters:
      expectReply - true if a reply is expected.
    • setExpectedResponseType

      public void setExpectedResponseType​(java.lang.Class<?> expectedResponseType)
      Specify the expected response type for the REST request. Otherwise it is null and an empty ResponseEntity is returned from HTTP client. To take advantage of the HttpMessageConverters registered on this adapter, provide a different type).
      Parameters:
      expectedResponseType - The expected type. Also see setExpectedResponseTypeExpression(Expression)
    • setExpectedResponseTypeExpression

      public void setExpectedResponseTypeExpression​(org.springframework.expression.Expression expectedResponseTypeExpression)
      Specify the Expression to determine the type for the expected response The returned value of the expression could be an instance of Class or String representing a fully qualified class name.
      Parameters:
      expectedResponseTypeExpression - The expected response type expression. Also see setExpectedResponseType(java.lang.Class<?>)
    • setHeaderMapper

      public void setHeaderMapper​(org.springframework.integration.mapping.HeaderMapper<org.springframework.http.HttpHeaders> headerMapper)
      Set the HeaderMapper to use when mapping between HTTP headers and MessageHeaders.
      Parameters:
      headerMapper - The header mapper.
    • setUriVariableExpressions

      public void setUriVariableExpressions​(java.util.Map<java.lang.String,​org.springframework.expression.Expression> uriVariableExpressions)
      Set the Map of URI variable expressions to evaluate against the outbound message when replacing the variable placeholders in a URI template.
      Parameters:
      uriVariableExpressions - The URI variable expressions.
    • setUriVariablesExpression

      public void setUriVariablesExpression​(org.springframework.expression.Expression uriVariablesExpression)
      Set the Expression to evaluate against the outbound message; the expression must evaluate to a Map of URI variable expressions to evaluate against the outbound message when replacing the variable placeholders in a URI template.
      Parameters:
      uriVariablesExpression - The URI variables expression.
    • setTransferCookies

      public void setTransferCookies​(boolean transferCookies)
      Set to true if you wish 'Set-Cookie' headers in responses to be transferred as 'Cookie' headers in subsequent interactions for a message. Defaults to false.
      Parameters:
      transferCookies - the transferCookies to set.
    • setTrustedSpel

      public void setTrustedSpel​(boolean trustedSpel)
      Set to true if you trust the source of SpEL expressions used to evaluate URI variables. Default is false, which means a SimpleEvaluationContext is used for evaluating such expressions, which restricts the use of some SpEL capabilities.
      Parameters:
      trustedSpel - true to trust.
      Since:
      4.3.15.
    • setExtractResponseBody

      public void setExtractResponseBody​(boolean extractResponseBody)
      The flag to extract a body of the ResponseEntity for reply message payload. Defaults to true.
      Parameters:
      extractResponseBody - produce a reply message with a whole ResponseEntity or just its body.
      Since:
      5.5
    • getIntegrationPatternType

      public org.springframework.integration.IntegrationPatternType getIntegrationPatternType()
      Specified by:
      getIntegrationPatternType in interface org.springframework.integration.IntegrationPattern
      Overrides:
      getIntegrationPatternType in class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
    • doInit

      protected void doInit()
      Overrides:
      doInit in class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
    • handleRequestMessage

      @Nullable protected java.lang.Object handleRequestMessage​(org.springframework.messaging.Message<?> requestMessage)
      Specified by:
      handleRequestMessage in class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
    • exchange

      @Nullable protected abstract java.lang.Object exchange​(java.lang.Object uri, org.springframework.http.HttpMethod httpMethod, org.springframework.http.HttpEntity<?> httpRequest, java.lang.Object expectedResponseType, org.springframework.messaging.Message<?> requestMessage, java.util.Map<java.lang.String,​?> uriVariables)
    • getReply

      protected java.lang.Object getReply​(org.springframework.http.ResponseEntity<?> httpResponse)
    • mapHeaders

      protected org.springframework.http.HttpHeaders mapHeaders​(org.springframework.messaging.Message<?> message)
    • evaluateTypeFromExpression

      @Nullable protected java.lang.Object evaluateTypeFromExpression​(org.springframework.messaging.Message<?> requestMessage, @Nullable org.springframework.expression.Expression expression, java.lang.String property)