Spring Integration

org.springframework.integration.http
Class HttpRequestHandlingController

java.lang.Object
  extended by org.springframework.integration.context.IntegrationObjectSupport
      extended by org.springframework.integration.endpoint.AbstractEndpoint
          extended by org.springframework.integration.gateway.AbstractMessagingGateway
              extended by org.springframework.integration.http.HttpRequestHandlingController
All Implemented Interfaces:
BeanFactoryAware, BeanNameAware, InitializingBean, Lifecycle, Phased, SmartLifecycle, NamedComponent, Controller

public class HttpRequestHandlingController
extends AbstractMessagingGateway
implements Controller

Inbound HTTP endpoint that implements Spring's Controller interface to be used with a DispatcherServlet front controller.

The viewName will be passed into the ModelAndView return value.

This endpoint will have request/reply behavior by default. That can be overridden by passing false to the constructor. In the request/reply case, the model map will be passed to the view, and it will contain either the reply Message or payload depending on the value of extractReplyPayload (true by default, meaning just the payload). The corresponding key in the map is determined by the replyKey property (with a default of "reply").

Since:
2.0
Author:
Mark Fisher

Field Summary
 
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
logger
 
Constructor Summary
HttpRequestHandlingController()
           
HttpRequestHandlingController(boolean expectReply)
           
 
Method Summary
protected  Object doHandleRequest(javax.servlet.http.HttpServletRequest servletRequest, javax.servlet.http.HttpServletResponse servletResponse)
          Handles the HTTP request by generating a Message and sending it to the request channel.
 String getComponentType()
          Subclasses may implement this method to provide component type information.
protected  List<HttpMessageConverter<?>> getMessageConverters()
           
 ModelAndView handleRequest(javax.servlet.http.HttpServletRequest servletRequest, javax.servlet.http.HttpServletResponse servletResponse)
          Handles the HTTP request by generating a Message and sending it to the request channel.
protected  void onInit()
          Locates the MultipartResolver bean based on the default name defined by the DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME constant if available.
 void setExtractReplyPayload(boolean extractReplyPayload)
          Specify whether only the reply Message's payload should be passed in the response.
 void setHeaderMapper(HeaderMapper<HttpHeaders> headerMapper)
          Set the HeaderMapper to use when mapping between HTTP headers and MessageHeaders.
 void setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
          Set the message body converters to use.
 void setMultipartResolver(MultipartResolver multipartResolver)
          Specify the MultipartResolver to use when checking requests.
 void setReplyKey(String replyKey)
          Specify the key to be used when adding the reply Message or payload to the model map (will be payload only unless the value of HttpRequestHandlingEndpointSupport.setExtractReplyPayload(boolean) is false).
 void setRequestPayloadType(Class<?> requestPayloadType)
          Specify the type of payload to be generated when the inbound HTTP request content is read by the HttpMessageConverters.
 void setSupportedMethodNames(String... supportedMethods)
          Specify the supported request method names for this gateway.
 void setSupportedMethods(HttpMethod... supportedMethods)
          Specify the supported request methods for this gateway.
 void setViewName(String viewName)
          Specify the view name.
 
Methods inherited from class org.springframework.integration.gateway.AbstractMessagingGateway
doStart, doStop, fromMessage, receive, send, sendAndReceive, sendAndReceiveMessage, setExceptionMapper, setReplyChannel, setReplyTimeout, setRequestChannel, setRequestTimeout, setShouldThrowErrors, toMessage
 
Methods inherited from class org.springframework.integration.endpoint.AbstractEndpoint
getPhase, isAutoStartup, isRunning, setAutoStartup, setPhase, setTaskScheduler, start, stop, stop
 
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, getBeanFactory, getChannelResolver, getComponentName, getConversionService, getTaskScheduler, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, toString, writeMessageHistory
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

HttpRequestHandlingController

public HttpRequestHandlingController()

HttpRequestHandlingController

public HttpRequestHandlingController(boolean expectReply)
Method Detail

setViewName

public void setViewName(String viewName)
Specify the view name.


setReplyKey

public void setReplyKey(String replyKey)
Specify the key to be used when adding the reply Message or payload to the model map (will be payload only unless the value of HttpRequestHandlingEndpointSupport.setExtractReplyPayload(boolean) is false). The default key is "reply".


handleRequest

public final ModelAndView handleRequest(javax.servlet.http.HttpServletRequest servletRequest,
                                        javax.servlet.http.HttpServletResponse servletResponse)
                                 throws Exception
Handles the HTTP request by generating a Message and sending it to the request channel. If this gateway's 'expectReply' property is true, it will also generate a response from the reply Message once received.

Specified by:
handleRequest in interface Controller
Throws:
Exception

setMessageConverters

public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
Set the message body converters to use. These converters are used to convert from and to HTTP requests and responses.


getMessageConverters

protected List<HttpMessageConverter<?>> getMessageConverters()

setHeaderMapper

public void setHeaderMapper(HeaderMapper<HttpHeaders> headerMapper)
Set the HeaderMapper to use when mapping between HTTP headers and MessageHeaders.


setSupportedMethodNames

public void setSupportedMethodNames(String... supportedMethods)
Specify the supported request method names for this gateway. By default, only GET and POST are supported.


setSupportedMethods

public void setSupportedMethods(HttpMethod... supportedMethods)
Specify the supported request methods for this gateway. By default, only GET and POST are supported.


setRequestPayloadType

public void setRequestPayloadType(Class<?> requestPayloadType)
Specify the type of payload to be generated when the inbound HTTP request content is read by the HttpMessageConverters. By default this value is null which means at runtime any "text" Content-Type will result in String while all others default to byte[].class.


setExtractReplyPayload

public void setExtractReplyPayload(boolean extractReplyPayload)
Specify whether only the reply Message's payload should be passed in the response. If this is set to 'false', the entire Message will be used to generate the response. The default is 'true'.


setMultipartResolver

public void setMultipartResolver(MultipartResolver multipartResolver)
Specify the MultipartResolver to use when checking requests. If no resolver is provided, the "multipartResolver" bean in the context will be used as a fallback. If that is not available either, this endpoint will not support multipart requests.


getComponentType

public String getComponentType()
Description copied from class: IntegrationObjectSupport
Subclasses may implement this method to provide component type information.

Specified by:
getComponentType in interface NamedComponent
Overrides:
getComponentType in class AbstractMessagingGateway

onInit

protected void onInit()
               throws Exception
Locates the MultipartResolver bean based on the default name defined by the DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME constant if available.

Overrides:
onInit in class AbstractMessagingGateway
Throws:
Exception

doHandleRequest

protected final Object doHandleRequest(javax.servlet.http.HttpServletRequest servletRequest,
                                       javax.servlet.http.HttpServletResponse servletResponse)
                                throws IOException
Handles the HTTP request by generating a Message and sending it to the request channel. If this gateway's 'expectReply' property is true, it will also generate a response from the reply Message once received.

Throws:
IOException

Spring Integration

Copyright © 2010. All Rights Reserved.