Class HttpEntityMethodProcessor
- java.lang.Object
- org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
- org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor
- org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor
- All Implemented Interfaces:
HandlerMethodArgumentResolver
,HandlerMethodReturnValueHandler
public class HttpEntityMethodProcessor extends AbstractMessageConverterMethodProcessor
ResolvesHttpEntity
andRequestEntity
method argument values and also handlesHttpEntity
andResponseEntity
return values.An
HttpEntity
return type has a specific purpose. Therefore this handler should be configured ahead of handlers that support any return value type annotated with@ModelAttribute
or@ResponseBody
to ensure they don't take over.- Since:
- 3.1
- Author:
- Arjen Poutsma, Rossen Stoyanchev, Brian Clozel
Field Summary
Fields inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
allSupportedMediaTypes, logger, messageConverters
Constructor Summary
Constructors Constructor Description HttpEntityMethodProcessor(List<HttpMessageConverter<?>> converters)
Basic constructor with converters only.HttpEntityMethodProcessor(List<HttpMessageConverter<?>> converters, List<Object> requestResponseBodyAdvice)
Complete constructor for resolvingHttpEntity
method arguments.HttpEntityMethodProcessor(List<HttpMessageConverter<?>> converters, ContentNegotiationManager manager)
Basic constructor with converters andContentNegotiationManager
.HttpEntityMethodProcessor(List<HttpMessageConverter<?>> converters, ContentNegotiationManager manager, List<Object> requestResponseBodyAdvice)
Complete constructor for resolvingHttpEntity
and handlingResponseEntity
.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Class<?>
getReturnValueType(Object returnValue, MethodParameter returnType)
Return the type of the value to be written to the response.void
handleReturnValue(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest)
Handle the given return value by adding attributes to the model and setting a view or setting theModelAndViewContainer.setRequestHandled(boolean)
flag totrue
to indicate the response has been handled directly.Object
resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory)
Resolves a method parameter into an argument value from a given request.boolean
supportsParameter(MethodParameter parameter)
Whether the given method parameter is supported by this resolver.boolean
supportsReturnType(MethodParameter returnType)
Whether the given method return type is supported by this handler.Methods inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor
createOutputMessage, getProducibleMediaTypes, getProducibleMediaTypes, writeWithMessageConverters, writeWithMessageConverters
Methods inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
adaptArgumentIfNecessary, createInputMessage, getAdvice, isBindExceptionRequired, readWithMessageConverters, readWithMessageConverters, validateIfApplicable
Constructor Detail
HttpEntityMethodProcessor
public HttpEntityMethodProcessor(List<HttpMessageConverter<?>> converters)
Basic constructor with converters only. Suitable for resolvingHttpEntity
. For handlingResponseEntity
consider also providing aContentNegotiationManager
.
HttpEntityMethodProcessor
public HttpEntityMethodProcessor(List<HttpMessageConverter<?>> converters, ContentNegotiationManager manager)
Basic constructor with converters andContentNegotiationManager
. Suitable for resolvingHttpEntity
and handlingResponseEntity
withoutRequest~
orResponseBodyAdvice
.
HttpEntityMethodProcessor
public HttpEntityMethodProcessor(List<HttpMessageConverter<?>> converters, List<Object> requestResponseBodyAdvice)
Complete constructor for resolvingHttpEntity
method arguments. For handlingResponseEntity
consider also providing aContentNegotiationManager
.- Since:
- 4.2
HttpEntityMethodProcessor
public HttpEntityMethodProcessor(List<HttpMessageConverter<?>> converters, ContentNegotiationManager manager, List<Object> requestResponseBodyAdvice)
Complete constructor for resolvingHttpEntity
and handlingResponseEntity
.
Method Detail
supportsParameter
public boolean supportsParameter(MethodParameter parameter)
Description copied from interface:HandlerMethodArgumentResolver
Whether the given method parameter is supported by this resolver.- Parameters:
parameter
- the method parameter to check- Returns:
true
if this resolver supports the supplied parameter;false
otherwise
supportsReturnType
public boolean supportsReturnType(MethodParameter returnType)
Description copied from interface:HandlerMethodReturnValueHandler
Whether the given method return type is supported by this handler.- Parameters:
returnType
- the method return type to check- Returns:
true
if this handler supports the supplied return type;false
otherwise
resolveArgument
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws IOException, HttpMediaTypeNotSupportedException
Description copied from interface:HandlerMethodArgumentResolver
Resolves a method parameter into an argument value from a given request. AModelAndViewContainer
provides access to the model for the request. AWebDataBinderFactory
provides a way to create aWebDataBinder
instance when needed for data binding and type conversion purposes.- Parameters:
parameter
- the method parameter to resolve. This parameter must have previously been passed toHandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter)
which must have returnedtrue
.mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current requestbinderFactory
- a factory for creatingWebDataBinder
instances- Returns:
- the resolved argument value, or
null
- Throws:
IOException
HttpMediaTypeNotSupportedException
handleReturnValue
public void handleReturnValue(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception
Description copied from interface:HandlerMethodReturnValueHandler
Handle the given return value by adding attributes to the model and setting a view or setting theModelAndViewContainer.setRequestHandled(boolean)
flag totrue
to indicate the response has been handled directly.- Parameters:
returnValue
- the value returned from the handler methodreturnType
- the type of the return value. This type must have previously been passed toHandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)
which must have returnedtrue
.mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current request- Throws:
Exception
- if the return value handling results in an error
getReturnValueType
protected Class<?> getReturnValueType(Object returnValue, MethodParameter returnType)
Description copied from class:AbstractMessageConverterMethodProcessor
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>
).- Overrides:
getReturnValueType
in classAbstractMessageConverterMethodProcessor