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 HttpMessageConverters
.- Since:
- 3.1
- Author:
- Arjen Poutsma, Rossen Stoyanchev, Brian Clozel, Juergen Hoeller
-
Field Summary
Fields inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
logger, messageConverters
-
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractMessageConverterMethodProcessor
(List<HttpMessageConverter<?>> converters) Constructor with list of converters only.protected
AbstractMessageConverterMethodProcessor
(List<HttpMessageConverter<?>> converters, ContentNegotiationManager contentNegotiationManager) Constructor with list of converters and ContentNegotiationManager.protected
AbstractMessageConverterMethodProcessor
(List<HttpMessageConverter<?>> converters, ContentNegotiationManager manager, List<Object> requestResponseBodyAdvice) Constructor with list of converters and ContentNegotiationManager as well as request/response body advice instances. -
Method Summary
Modifier and TypeMethodDescriptionprotected ServletServerHttpResponse
createOutputMessage
(NativeWebRequest webRequest) Creates a newHttpOutputMessage
from the givenNativeWebRequest
.getProducibleMediaTypes
(HttpServletRequest request, Class<?> valueClass) Returns the media types that can be produced.getProducibleMediaTypes
(HttpServletRequest request, Class<?> valueClass, Type targetType) Returns the media types that can be produced.protected Class<?>
getReturnValueType
(Object value, MethodParameter returnType) Return the type of the value to be written to the response.protected boolean
isResourceType
(Object value, MethodParameter returnType) Return whether the returned value or the declared return type extendsResource
.protected <T> void
writeWithMessageConverters
(T value, MethodParameter returnType, ServletServerHttpRequest inputMessage, ServletServerHttpResponse outputMessage) Writes the given return type to the given output message.protected <T> void
writeWithMessageConverters
(T value, MethodParameter returnType, NativeWebRequest webRequest) Writes the given return value to the given web request.Methods inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
adaptArgumentIfNecessary, createInputMessage, getSupportedMediaTypes, isBindExceptionRequired, readWithMessageConverters, readWithMessageConverters, validateIfApplicable
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.HandlerMethodArgumentResolver
resolveArgument, supportsParameter
Methods inherited from interface org.springframework.web.method.support.HandlerMethodReturnValueHandler
handleReturnValue, supportsReturnType
-
Constructor Details
-
AbstractMessageConverterMethodProcessor
Constructor with list of converters only. -
AbstractMessageConverterMethodProcessor
protected AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>> converters, @Nullable ContentNegotiationManager contentNegotiationManager) Constructor with list of converters and ContentNegotiationManager. -
AbstractMessageConverterMethodProcessor
protected AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>> converters, @Nullable ContentNegotiationManager manager, @Nullable List<Object> requestResponseBodyAdvice) Constructor with list of converters and ContentNegotiationManager as well as request/response body advice instances.
-
-
Method Details
-
createOutputMessage
Creates a newHttpOutputMessage
from the givenNativeWebRequest
.- Parameters:
webRequest
- the web request to create an output message from- Returns:
- the output message
-
writeWithMessageConverters
protected <T> void writeWithMessageConverters(T value, MethodParameter returnType, NativeWebRequest webRequest) throws IOException, HttpMediaTypeNotAcceptableException, HttpMessageNotWritableException Writes the given return value to the given web request. Delegates towriteWithMessageConverters(Object, MethodParameter, ServletServerHttpRequest, ServletServerHttpResponse)
-
writeWithMessageConverters
protected <T> void writeWithMessageConverters(@Nullable T value, MethodParameter returnType, ServletServerHttpRequest inputMessage, ServletServerHttpResponse outputMessage) throws IOException, HttpMediaTypeNotAcceptableException, HttpMessageNotWritableException Writes the given return type to the given output message.- Parameters:
value
- the value to write to the output messagereturnType
- the type of the valueinputMessage
- the input messages. Used to inspect theAccept
header.outputMessage
- the output message to write to- Throws:
IOException
- thrown in case of I/O errorsHttpMediaTypeNotAcceptableException
- thrown when the conditions indicated by theAccept
header on the request cannot be met by the message convertersHttpMessageNotWritableException
- 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
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
Return whether the returned value or the declared return type extendsResource
. -
getProducibleMediaTypes
Returns the media types that can be produced. -
getProducibleMediaTypes
protected List<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
-