org.springframework.integration.http.outbound
Class HttpRequestExecutingMessageHandler

java.lang.Object
  extended by org.springframework.integration.context.IntegrationObjectSupport
      extended by org.springframework.integration.handler.AbstractMessageHandler
          extended by org.springframework.integration.handler.AbstractReplyProducingMessageHandler
              extended by org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.InitializingBean, org.springframework.core.Ordered, org.springframework.integration.context.NamedComponent, org.springframework.integration.context.Orderable, org.springframework.integration.core.MessageHandler, org.springframework.integration.core.MessageProducer, org.springframework.integration.history.TrackableComponent

public class HttpRequestExecutingMessageHandler
extends org.springframework.integration.handler.AbstractReplyProducingMessageHandler

A MessageHandler implementation that executes HTTP requests by delegating to a RestTemplate instance. If the 'expectReply' flag is set to true (the default) then a reply Message will be generated from the HTTP response. If that response contains a body, it will be used as the reply Message's payload. Otherwise the reply Message's payload will contain the response status as an instance of the HttpStatus enum. When there is a response body, the HttpStatus enum instance will instead be copied to the MessageHeaders of the reply. In both cases, the response headers will be mapped to the reply Message's headers by this handler's HeaderMapper instance.

Since:
2.0

Nested Class Summary
 
Nested classes/interfaces inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
org.springframework.integration.handler.AbstractReplyProducingMessageHandler.RequestHandler
 
Field Summary
 
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
logger
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
HttpRequestExecutingMessageHandler(org.springframework.expression.Expression uriExpression)
          Create a handler that will send requests to the provided URI Expression.
HttpRequestExecutingMessageHandler(org.springframework.expression.Expression uriExpression, org.springframework.web.client.RestTemplate restTemplate)
          Create a handler that will send requests to the provided URI using a provided RestTemplate
HttpRequestExecutingMessageHandler(java.lang.String uri)
          Create a handler that will send requests to the provided URI.
HttpRequestExecutingMessageHandler(java.lang.String uri, org.springframework.web.client.RestTemplate restTemplate)
          Create a handler that will send requests to the provided URI using a provided RestTemplate
HttpRequestExecutingMessageHandler(java.net.URI uri)
          Create a handler that will send requests to the provided URI.
 
Method Summary
protected  java.lang.Object handleRequestMessage(org.springframework.integration.Message<?> requestMessage)
           
protected  org.springframework.http.HttpHeaders mapHeaders(org.springframework.integration.Message<?> message)
           
 void onInit()
           
 void setCharset(java.lang.String charset)
          Specify the charset name to use for converting String-typed payloads to bytes.
 void setErrorHandler(org.springframework.web.client.ResponseErrorHandler errorHandler)
          Set the ResponseErrorHandler for the underlying RestTemplate.
 void setExpectedResponseType(java.lang.Class<?> expectedResponseType)
          Specify the expected response type for the REST request otherwise the default response type is ResponseEntity and will be returned as a payload of the reply Message.
 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 Also see setExpectedResponseTypeExpression(Expression)
 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 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 dynamically
 void setMessageConverters(java.util.List<org.springframework.http.converter.HttpMessageConverter<?>> messageConverters)
          Set a list of HttpMessageConverters to be used by the underlying RestTemplate.
 void setRequestFactory(org.springframework.http.client.ClientHttpRequestFactory requestFactory)
          Set the ClientHttpRequestFactory for the underlying RestTemplate.
 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 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.
 
Methods inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
getMessagingTemplate, handleMessageInternal, setAdviceChain, setBeanClassLoader, setChannelResolver, setOutputChannel, setRequiresReply, setSendTimeout, shouldCopyRequestHeaders
 
Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler
getComponentType, getOrder, handleMessage, setOrder, setShouldTrack
 
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, getBeanFactory, getComponentName, getConversionService, getTaskScheduler, setBeanFactory, setBeanName, setComponentName, setConversionService, setTaskScheduler, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.springframework.integration.context.NamedComponent
getComponentName
 

Constructor Detail

HttpRequestExecutingMessageHandler

public HttpRequestExecutingMessageHandler(java.net.URI uri)
Create a handler that will send requests to the provided URI.


HttpRequestExecutingMessageHandler

public HttpRequestExecutingMessageHandler(java.lang.String uri)
Create a handler that will send requests to the provided URI.


HttpRequestExecutingMessageHandler

public HttpRequestExecutingMessageHandler(org.springframework.expression.Expression uriExpression)
Create a handler that will send requests to the provided URI Expression.


HttpRequestExecutingMessageHandler

public HttpRequestExecutingMessageHandler(java.lang.String uri,
                                          org.springframework.web.client.RestTemplate restTemplate)
Create a handler that will send requests to the provided URI using a provided RestTemplate

Parameters:
uri -
restTemplate -

HttpRequestExecutingMessageHandler

public HttpRequestExecutingMessageHandler(org.springframework.expression.Expression uriExpression,
                                          org.springframework.web.client.RestTemplate restTemplate)
Create a handler that will send requests to the provided URI using a provided RestTemplate

Parameters:
uriExpression - A SpEL Expression that can be resolved against the message object and BeanFactory.
restTemplate -
Method Detail

setHttpMethodExpression

public void setHttpMethodExpression(org.springframework.expression.Expression httpMethodExpression)
Specify the SpEL Expression to determine HttpMethod dynamically

Parameters:
httpMethodExpression -

setHttpMethod

public void setHttpMethod(org.springframework.http.HttpMethod httpMethod)
Specify the HttpMethod for requests. The default method will be POST.


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 will be serialized. The default value is true.


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'.


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.


setExpectedResponseType

public void setExpectedResponseType(java.lang.Class<?> expectedResponseType)
Specify the expected response type for the REST request otherwise the default response type is ResponseEntity and will be returned as a payload of the reply Message. To take advantage of the HttpMessageConverters registered on this adapter, provide a different 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 Also see setExpectedResponseTypeExpression(Expression)


setErrorHandler

public void setErrorHandler(org.springframework.web.client.ResponseErrorHandler errorHandler)
Set the ResponseErrorHandler for the underlying RestTemplate.

See Also:
RestTemplate.setErrorHandler(ResponseErrorHandler)

setMessageConverters

public void setMessageConverters(java.util.List<org.springframework.http.converter.HttpMessageConverter<?>> messageConverters)
Set a list of HttpMessageConverters to be used by the underlying RestTemplate. Converters configured via this method will override the default converters.

See Also:
RestTemplate.setMessageConverters(java.util.List)

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.


setRequestFactory

public void setRequestFactory(org.springframework.http.client.ClientHttpRequestFactory requestFactory)
Set the ClientHttpRequestFactory for the underlying RestTemplate.

See Also:
HttpAccessor.setRequestFactory(ClientHttpRequestFactory)

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.


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.

Parameters:
transferCookies - the transferCookies to set.

onInit

public void onInit()
Overrides:
onInit in class org.springframework.integration.handler.AbstractReplyProducingMessageHandler

handleRequestMessage

protected java.lang.Object handleRequestMessage(org.springframework.integration.Message<?> requestMessage)
Specified by:
handleRequestMessage in class org.springframework.integration.handler.AbstractReplyProducingMessageHandler

mapHeaders

protected org.springframework.http.HttpHeaders mapHeaders(org.springframework.integration.Message<?> message)