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

### Method Summary

Methods
`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`