org.springframework.web.servlet.mvc.method.annotation

## Class RequestBodyAdviceAdapter

- java.lang.Object
- - org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdviceAdapter

- All Implemented Interfaces:
    RequestBodyAdvice
  Direct Known Subclasses:
    JsonViewRequestBodyAdvice

      public abstract class RequestBodyAdviceAdapter
      extends Object
      implements RequestBodyAdvice

  A convenient starting point for implementing `RequestBodyAdvice` with default method implementations.

  Subclasses are required to implement `RequestBodyAdvice.supports(org.springframework.core.MethodParameter, java.lang.reflect.Type, java.lang.Class<? extends org.springframework.http.converter.HttpMessageConverter<?>>)` to return true depending on when the advice applies.

  Since:
    4.2
  Author:
    Rossen Stoyanchev

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `RequestBodyAdviceAdapter()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType)` The default implementation returns the body that was passed in.
    `HttpInputMessage` | `beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType)` The default implementation returns the InputMessage that was passed in.
    `Object` | `handleEmptyBody(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType)` The default implementation returns the body that was passed in.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdvice

      `supports`

- - ### Constructor Detail

    - #### RequestBodyAdviceAdapter

          public RequestBodyAdviceAdapter()

  - ### Method Detail

    - #### beforeBodyRead

          public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage,
                                                 MethodParameter parameter,
                                                 Type targetType,
                                                 Class<? extends HttpMessageConverter<?>> converterType)
                                          throws IOException

      The default implementation returns the InputMessage that was passed in.
      Specified by:
        `beforeBodyRead` in interface `RequestBodyAdvice`
      Parameters:
        `inputMessage` - the request
        `parameter` - the target method parameter
        `targetType` - the target type, not necessarily the same as the method parameter type, e.g. for `HttpEntity<String>`.
        `converterType` - the converter used to deserialize the body
      Returns:
        the input request or a new instance (never `null`)
      Throws:
        `IOException`

    - #### afterBodyRead

          public Object afterBodyRead(Object body,
                                      HttpInputMessage inputMessage,
                                      MethodParameter parameter,
                                      Type targetType,
                                      Class<? extends HttpMessageConverter<?>> converterType)

      The default implementation returns the body that was passed in.
      Specified by:
        `afterBodyRead` in interface `RequestBodyAdvice`
      Parameters:
        `body` - set to the converter Object before the first advice is called
        `inputMessage` - the request
        `parameter` - the target method parameter
        `targetType` - the target type, not necessarily the same as the method parameter type, e.g. for `HttpEntity<String>`.
        `converterType` - the converter used to deserialize the body
      Returns:
        the same body or a new instance

    - #### handleEmptyBody

          @Nullable
          public Object handleEmptyBody(@Nullable
                                                  Object body,
                                                  HttpInputMessage inputMessage,
                                                  MethodParameter parameter,
                                                  Type targetType,
                                                  Class<? extends HttpMessageConverter<?>> converterType)

      The default implementation returns the body that was passed in.
      Specified by:
        `handleEmptyBody` in interface `RequestBodyAdvice`
      Parameters:
        `body` - usually set to `null` before the first advice is called
        `inputMessage` - the request
        `parameter` - the method parameter
        `targetType` - the target type, not necessarily the same as the method parameter type, e.g. for `HttpEntity<String>`.
        `converterType` - the selected converter type
      Returns:
        the value to use, or `null` which may then raise an `HttpMessageNotReadableException` if the argument is required