org.springframework.web.method.annotation
Class AbstractWebArgumentResolverAdapter

java.lang.Object
  extended by org.springframework.web.method.annotation.AbstractWebArgumentResolverAdapter
All Implemented Interfaces:
HandlerMethodArgumentResolver
Direct Known Subclasses:
ServletWebArgumentResolverAdapter

public abstract class AbstractWebArgumentResolverAdapter
extends Object
implements HandlerMethodArgumentResolver

An abstract base class adapting a WebArgumentResolver to the HandlerMethodArgumentResolver contract.

Note: This class is provided for backwards compatibility. However it is recommended to re-write a WebArgumentResolver as HandlerMethodArgumentResolver. Since supportsParameter(org.springframework.core.MethodParameter) can only be implemented by actually resolving the value and then checking the result is not WebArgumentResolver#UNRESOLVED any exceptions raised must be absorbed and ignored since it's not clear whether the adapter doesn't support the parameter or whether it failed for an internal reason. The HandlerMethodArgumentResolver contract also provides access to model attributes and to WebDataBinderFactory (for type conversion).

Since:
3.1
Author:
Arjen Poutsma, Rossen Stoyanchev

Constructor Summary
AbstractWebArgumentResolverAdapter(WebArgumentResolver adaptee)
          Create a new instance.
 
Method Summary
protected abstract  NativeWebRequest getWebRequest()
          Required for access to NativeWebRequest in supportsParameter(org.springframework.core.MethodParameter).
 Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory)
          Delegate to the WebArgumentResolver instance.
 boolean supportsParameter(MethodParameter parameter)
          Actually resolve the value and check the resolved value is not WebArgumentResolver.UNRESOLVED absorbing _any_ exceptions.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractWebArgumentResolverAdapter

public AbstractWebArgumentResolverAdapter(WebArgumentResolver adaptee)
Create a new instance.

Method Detail

supportsParameter

public boolean supportsParameter(MethodParameter parameter)
Actually resolve the value and check the resolved value is not WebArgumentResolver.UNRESOLVED absorbing _any_ exceptions.

Specified by:
supportsParameter in interface HandlerMethodArgumentResolver
Parameters:
parameter - the method parameter to check
Returns:
true if this resolver supports the supplied parameter; false otherwise

getWebRequest

protected abstract NativeWebRequest getWebRequest()
Required for access to NativeWebRequest in supportsParameter(org.springframework.core.MethodParameter).


resolveArgument

public Object resolveArgument(MethodParameter parameter,
                              ModelAndViewContainer mavContainer,
                              NativeWebRequest webRequest,
                              WebDataBinderFactory binderFactory)
                       throws Exception
Delegate to the WebArgumentResolver instance.

Specified by:
resolveArgument in interface HandlerMethodArgumentResolver
Parameters:
parameter - the method parameter to resolve. This parameter must have previously been passed to HandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter) and it must have returned true
mavContainer - the ModelAndViewContainer for the current request
webRequest - the current request
binderFactory - a factory for creating WebDataBinder instances
Returns:
the resolved argument value, or null.
Throws:
IllegalStateException - if the resolved value is not assignable to the method parameter.
Exception - in case of errors with the preparation of argument values