## 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
`protected` `AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>> messageConverters)`

Method Summary
`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)

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`