Class AbstractMessageConverterMethodProcessor

java.lang.Object
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor
All Implemented Interfaces:
org.springframework.web.method.support.HandlerMethodArgumentResolver, org.springframework.web.method.support.HandlerMethodReturnValueHandler
Direct Known Subclasses:
HttpEntityMethodProcessor, RequestResponseBodyMethodProcessor

public abstract class AbstractMessageConverterMethodProcessor extends AbstractMessageConverterMethodArgumentResolver implements org.springframework.web.method.support.HandlerMethodReturnValueHandler
Extends AbstractMessageConverterMethodArgumentResolver with the ability to handle method return values by writing to the response with HttpMessageConverters.
Since:
3.1
Author:
Arjen Poutsma, Rossen Stoyanchev, Brian Clozel, Juergen Hoeller
  • Constructor Details

    • AbstractMessageConverterMethodProcessor

      protected AbstractMessageConverterMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters)
      Constructor with list of converters only.
    • AbstractMessageConverterMethodProcessor

      protected AbstractMessageConverterMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable org.springframework.web.accept.ContentNegotiationManager contentNegotiationManager)
      Constructor with list of converters and ContentNegotiationManager.
    • AbstractMessageConverterMethodProcessor

      protected AbstractMessageConverterMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable org.springframework.web.accept.ContentNegotiationManager manager, @Nullable List<Object> requestResponseBodyAdvice)
      Constructor with list of converters and ContentNegotiationManager as well as request/response body advice instances.
  • Method Details

    • createOutputMessage

      protected org.springframework.http.server.ServletServerHttpResponse createOutputMessage(org.springframework.web.context.request.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 value, org.springframework.core.MethodParameter returnType, org.springframework.web.context.request.NativeWebRequest webRequest) throws IOException, org.springframework.web.HttpMediaTypeNotAcceptableException, org.springframework.http.converter.HttpMessageNotWritableException
      Throws:
      IOException
      org.springframework.web.HttpMediaTypeNotAcceptableException
      org.springframework.http.converter.HttpMessageNotWritableException
    • writeWithMessageConverters

      protected <T> void writeWithMessageConverters(@Nullable T value, org.springframework.core.MethodParameter returnType, org.springframework.http.server.ServletServerHttpRequest inputMessage, org.springframework.http.server.ServletServerHttpResponse outputMessage) throws IOException, org.springframework.web.HttpMediaTypeNotAcceptableException, org.springframework.http.converter.HttpMessageNotWritableException
      Writes the given return type to the given output message.
      Parameters:
      value - 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
      org.springframework.web.HttpMediaTypeNotAcceptableException - thrown when the conditions indicated by the Accept header on the request cannot be met by the message converters
      org.springframework.http.converter.HttpMessageNotWritableException - thrown if a given message cannot be written by a converter, or if the content-type chosen by the server has no compatible converter.
    • getReturnValueType

      protected Class<?> getReturnValueType(@Nullable Object value, org.springframework.core.MethodParameter returnType)
      Return the type of the value to be written to the response. Typically this is a simple check via getClass on the value but if the value is null, then the return type needs to be examined possibly including generic type determination (e.g. ResponseEntity<T>).
    • isResourceType

      protected boolean isResourceType(@Nullable Object value, org.springframework.core.MethodParameter returnType)
      Return whether the returned value or the declared return type extends Resource.
    • getProducibleMediaTypes

      protected List<org.springframework.http.MediaType> getProducibleMediaTypes(HttpServletRequest request, Class<?> valueClass)
      Returns the media types that can be produced.
      See Also:
    • getProducibleMediaTypes

      protected List<org.springframework.http.MediaType> getProducibleMediaTypes(HttpServletRequest request, Class<?> valueClass, @Nullable Type targetType)
      Returns the media types that can be produced. The resulting media types are:
      • 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
      Since:
      4.2