org.springframework.web.method.annotation

## Class AbstractWebArgumentResolverAdapter

- java.lang.Object
- - 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

    Constructors
    Constructor and Description
    `AbstractWebArgumentResolverAdapter(WebArgumentResolver adaptee)` Create a new instance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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