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

## Class AbstractMessageConverterMethodProcessor

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

- All Implemented Interfaces:
    HandlerMethodArgumentResolver, HandlerMethodReturnValueHandler
  Direct Known Subclasses:
    HttpEntityMethodProcessor, RequestResponseBodyMethodProcessor

      public abstract class AbstractMessageConverterMethodProcessor
      extends AbstractMessageConverterMethodArgumentResolver
      implements HandlerMethodReturnValueHandler

  Extends `AbstractMessageConverterMethodArgumentResolver` with the ability to handle method return values by writing to the response with `HttpMessageConverter`s.
  Since:
    3.1
  Author:
    Arjen Poutsma, Rossen Stoyanchev

- - ### Field Summary

    - ### Fields inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver

      `allSupportedMediaTypes, logger, messageConverters`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>> messageConverters)`
    `protected` | `AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>> messageConverters, ContentNegotiationManager manager)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected ServletServerHttpResponse` | `createOutputMessage(NativeWebRequest webRequest)` Creates a new `HttpOutputMessage` from the given `NativeWebRequest`.
    `protected List<MediaType>` | `getProducibleMediaTypes(HttpServletRequest request, Class<?> returnValueClass)` Returns the media types that can be produced: The producible media types specified in the request mappings, or Media types of configured converters that can write the specific return value, or `MediaType.ALL`
    `protected <T> void` | `writeWithMessageConverters(T returnValue, MethodParameter returnType, NativeWebRequest webRequest)` Writes the given return value to the given web request.
    `protected <T> void` | `writeWithMessageConverters(T returnValue, MethodParameter returnType, ServletServerHttpRequest inputMessage, ServletServerHttpResponse outputMessage)` Writes the given return type to the given output message.

    - ### Methods inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver

      `createInputMessage, readWithMessageConverters, readWithMessageConverters`

    - ### 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.method.support.HandlerMethodReturnValueHandler

      `handleReturnValue, supportsReturnType`

    - ### Methods inherited from interface org.springframework.web.method.support.HandlerMethodArgumentResolver

      `resolveArgument, supportsParameter`

- - ### Constructor Detail

    - #### AbstractMessageConverterMethodProcessor

          protected AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>> messageConverters)

    - #### AbstractMessageConverterMethodProcessor

          protected AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>> messageConverters,
                                                 ContentNegotiationManager manager)

  - ### Method Detail

    - #### createOutputMessage

          protected ServletServerHttpResponse createOutputMessage(NativeWebRequest webRequest)

      Creates a new `HttpOutputMessage` from the given `NativeWebRequest`.
      Parameters:
        `webRequest` - the web request to create an output message from
      Returns:
        the output message

    - #### writeWithMessageConverters

          protected <T> void writeWithMessageConverters(T returnValue,
                                            MethodParameter returnType,
                                            NativeWebRequest webRequest)
                                             throws IOException,
                                                    HttpMediaTypeNotAcceptableException

      Writes the given return value to the given web request. Delegates to `writeWithMessageConverters(Object, MethodParameter, ServletServerHttpRequest, ServletServerHttpResponse)`
      Throws:
        `IOException`
        `HttpMediaTypeNotAcceptableException`

    - #### writeWithMessageConverters

          protected <T> void writeWithMessageConverters(T returnValue,
                                            MethodParameter returnType,
                                            ServletServerHttpRequest inputMessage,
                                            ServletServerHttpResponse outputMessage)
                                             throws IOException,
                                                    HttpMediaTypeNotAcceptableException

      Writes the given return type to the given output message.
      Parameters:
        `returnValue` - the value to write to the output message
        `returnType` - the type of the value
        `inputMessage` - the input messages. Used to inspect the `Accept` header.
        `outputMessage` - the output message to write to
      Throws:
        `IOException` - thrown in case of I/O errors
        `HttpMediaTypeNotAcceptableException` - thrown when the conditions indicated by `Accept` header on the request cannot be met by the message converters

    - #### getProducibleMediaTypes

          protected List<MediaType> getProducibleMediaTypes(HttpServletRequest request,
                                                Class<?> returnValueClass)

      Returns the media types that can be produced:
      - The producible media types specified in the request mappings, or
      - Media types of configured converters that can write the specific return value, or
      - `MediaType.ALL`