org.springframework.web.servlet.mvc.method
Class AbstractHandlerMethodAdapter

java.lang.Object
  extended by org.springframework.context.support.ApplicationObjectSupport
      extended by org.springframework.web.context.support.WebApplicationObjectSupport
          extended by org.springframework.web.servlet.support.WebContentGenerator
              extended by org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter
All Implemented Interfaces:
Aware, ApplicationContextAware, Ordered, ServletContextAware, HandlerAdapter
Direct Known Subclasses:
RequestMappingHandlerAdapter

public abstract class AbstractHandlerMethodAdapter
extends WebContentGenerator
implements HandlerAdapter, Ordered

Abstract base class for HandlerAdapter implementations that support handlers of type HandlerMethod.

Since:
3.1
Author:
Arjen Poutsma

Field Summary
 
Fields inherited from class org.springframework.web.servlet.support.WebContentGenerator
METHOD_GET, METHOD_HEAD, METHOD_POST
 
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
logger
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
AbstractHandlerMethodAdapter()
           
 
Method Summary
 long getLastModified(HttpServletRequest request, Object handler)
          Same contract as for HttpServlet's getLastModified method.
protected abstract  long getLastModifiedInternal(HttpServletRequest request, HandlerMethod handlerMethod)
          Same contract as for HttpServlet.getLastModified(HttpServletRequest).
 int getOrder()
          Return the order value of this object, with a higher value meaning greater in terms of sorting.
 ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
          Use the given handler to handle this request.
protected abstract  ModelAndView handleInternal(HttpServletRequest request, HttpServletResponse response, HandlerMethod handlerMethod)
          Use the given handler method to handle the request.
 void setOrder(int order)
          Specify the order value for this HandlerAdapter bean.
 boolean supports(Object handler)
          Given a handler instance, return whether or not this HandlerAdapter can support it.
protected abstract  boolean supportsInternal(HandlerMethod handlerMethod)
          Given a handler method, return whether or not this adapter can support it.
 
Methods inherited from class org.springframework.web.servlet.support.WebContentGenerator
applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, getCacheSeconds, getSupportedMethods, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, preventCaching, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseCacheControlNoStore, setUseExpiresHeader
 
Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
 
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
getApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractHandlerMethodAdapter

public AbstractHandlerMethodAdapter()
Method Detail

setOrder

public void setOrder(int order)
Specify the order value for this HandlerAdapter bean.

Default value is Integer.MAX_VALUE, meaning that it's non-ordered.

See Also:
Ordered.getOrder()

getOrder

public int getOrder()
Description copied from interface: Ordered
Return the order value of this object, with a higher value meaning greater in terms of sorting.

Normally starting with 0, with Integer.MAX_VALUE indicating the greatest value. Same order values will result in arbitrary positions for the affected objects.

Higher values can be interpreted as lower priority. As a consequence, the object with the lowest value has highest priority (somewhat analogous to Servlet "load-on-startup" values).

Specified by:
getOrder in interface Ordered
Returns:
the order value

supports

public final boolean supports(Object handler)
Given a handler instance, return whether or not this HandlerAdapter can support it. Typical HandlerAdapters will base the decision on the handler type. HandlerAdapters will usually only support one handler type each.

A typical implementation:

return (handler instanceof MyHandler);

This implementation expects the handler to be an HandlerMethod.

Specified by:
supports in interface HandlerAdapter
Parameters:
handler - the handler instance to check
Returns:
whether or not this adapter can adapt the given handler

supportsInternal

protected abstract boolean supportsInternal(HandlerMethod handlerMethod)
Given a handler method, return whether or not this adapter can support it.

Parameters:
handlerMethod - the handler method to check
Returns:
whether or not this adapter can adapt the given method

handle

public final ModelAndView handle(HttpServletRequest request,
                                 HttpServletResponse response,
                                 Object handler)
                          throws Exception
Use the given handler to handle this request. The workflow that is required may vary widely.

This implementation expects the handler to be an HandlerMethod.

Specified by:
handle in interface HandlerAdapter
Parameters:
request - current HTTP request
response - current HTTP response
handler - handler to use. This object must have previously been passed to the supports method of this interface, which must have returned true.
Returns:
ModelAndView object with the name of the view and the required model data, or null if the request has been handled directly
Throws:
Exception - in case of errors

handleInternal

protected abstract ModelAndView handleInternal(HttpServletRequest request,
                                               HttpServletResponse response,
                                               HandlerMethod handlerMethod)
                                        throws Exception
Use the given handler method to handle the request.

Parameters:
request - current HTTP request
response - current HTTP response
handlerMethod - handler method to use. This object must have previously been passed to the supportsInternal(HandlerMethod) this interface, which must have returned true.
Returns:
ModelAndView object with the name of the view and the required model data, or null if the request has been handled directly
Throws:
Exception - in case of errors

getLastModified

public final long getLastModified(HttpServletRequest request,
                                  Object handler)
Same contract as for HttpServlet's getLastModified method. Can simply return -1 if there's no support in the handler class.

This implementation expects the handler to be an HandlerMethod.

Specified by:
getLastModified in interface HandlerAdapter
Parameters:
request - current HTTP request
handler - handler to use
Returns:
the lastModified value for the given handler
See Also:
HttpServlet.getLastModified(javax.servlet.http.HttpServletRequest), LastModified.getLastModified(javax.servlet.http.HttpServletRequest)

getLastModifiedInternal

protected abstract long getLastModifiedInternal(HttpServletRequest request,
                                                HandlerMethod handlerMethod)
Same contract as for HttpServlet.getLastModified(HttpServletRequest).

Parameters:
request - current HTTP request
handlerMethod - handler method to use
Returns:
the lastModified value for the given handler