public class HttpEntityMethodProcessor extends AbstractMessageConverterMethodProcessor
HttpEntity
and RequestEntity
method argument values
and also handles HttpEntity
and ResponseEntity
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.
allSupportedMediaTypes, logger, messageConverters
Constructor and Description |
---|
HttpEntityMethodProcessor(java.util.List<HttpMessageConverter<?>> converters)
Basic constructor with converters only.
|
HttpEntityMethodProcessor(java.util.List<HttpMessageConverter<?>> converters,
ContentNegotiationManager manager)
Basic constructor with converters and
ContentNegotiationManager . |
HttpEntityMethodProcessor(java.util.List<HttpMessageConverter<?>> converters,
ContentNegotiationManager manager,
java.util.List<java.lang.Object> requestResponseBodyAdvice)
Complete constructor for resolving
HttpEntity and handling
ResponseEntity . |
HttpEntityMethodProcessor(java.util.List<HttpMessageConverter<?>> converters,
java.util.List<java.lang.Object> requestResponseBodyAdvice)
Complete constructor for resolving
HttpEntity method arguments. |
Modifier and Type | Method and Description |
---|---|
private java.lang.String |
addEtagPadding(java.lang.String etag) |
private java.lang.reflect.Type |
getHttpEntityType(MethodParameter parameter) |
protected java.lang.Class<?> |
getReturnValueType(java.lang.Object returnValue,
MethodParameter returnType)
Return the type of the value to be written to the response.
|
void |
handleReturnValue(java.lang.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 the
ModelAndViewContainer.setRequestHandled(boolean) flag to true
to indicate the response has been handled directly. |
private boolean |
isETagNotModified(java.util.List<java.lang.String> ifNoneMatch,
java.lang.String etag) |
private boolean |
isResourceNotModified(ServletServerHttpRequest inputMessage,
ServletServerHttpResponse outputMessage) |
private boolean |
isTimeStampNotModified(long ifModifiedSince,
long lastModifiedTimestamp) |
java.lang.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.
|
createOutputMessage, getProducibleMediaTypes, getProducibleMediaTypes, writeWithMessageConverters, writeWithMessageConverters
createInputMessage, getAdvice, isBindExceptionRequired, readWithMessageConverters, readWithMessageConverters, validateIfApplicable
public HttpEntityMethodProcessor(java.util.List<HttpMessageConverter<?>> converters)
HttpEntity
. For handling ResponseEntity
consider also
providing a ContentNegotiationManager
.public HttpEntityMethodProcessor(java.util.List<HttpMessageConverter<?>> converters, ContentNegotiationManager manager)
ContentNegotiationManager
.
Suitable for resolving HttpEntity
and handling ResponseEntity
without Request~
or ResponseBodyAdvice
.public HttpEntityMethodProcessor(java.util.List<HttpMessageConverter<?>> converters, java.util.List<java.lang.Object> requestResponseBodyAdvice)
HttpEntity
method arguments.
For handling ResponseEntity
consider also providing a
ContentNegotiationManager
.public HttpEntityMethodProcessor(java.util.List<HttpMessageConverter<?>> converters, ContentNegotiationManager manager, java.util.List<java.lang.Object> requestResponseBodyAdvice)
HttpEntity
and handling
ResponseEntity
.public boolean supportsParameter(MethodParameter parameter)
HandlerMethodArgumentResolver
parameter
- the method parameter to checktrue
if this resolver supports the supplied parameter;
false
otherwisepublic boolean supportsReturnType(MethodParameter returnType)
HandlerMethodReturnValueHandler
returnType
- the method return type to checktrue
if this handler supports the supplied return type;
false
otherwisepublic java.lang.Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws java.io.IOException, HttpMediaTypeNotSupportedException
HandlerMethodArgumentResolver
ModelAndViewContainer
provides access to the model for the
request. A WebDataBinderFactory
provides a way to create
a WebDataBinder
instance when needed for data binding and
type conversion purposes.parameter
- the method parameter to resolve. This parameter must
have previously been passed to HandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter)
which must
have returned true
.mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current requestbinderFactory
- a factory for creating WebDataBinder
instancesnull
java.io.IOException
HttpMediaTypeNotSupportedException
private java.lang.reflect.Type getHttpEntityType(MethodParameter parameter)
public void handleReturnValue(java.lang.Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws java.lang.Exception
HandlerMethodReturnValueHandler
ModelAndViewContainer.setRequestHandled(boolean)
flag to true
to indicate the response has been handled directly.returnValue
- the value returned from the handler methodreturnType
- the type of the return value. This type must have
previously been passed to HandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)
which must
have returned true
.mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current requestjava.lang.Exception
- if the return value handling results in an errorprivate boolean isResourceNotModified(ServletServerHttpRequest inputMessage, ServletServerHttpResponse outputMessage)
private boolean isETagNotModified(java.util.List<java.lang.String> ifNoneMatch, java.lang.String etag)
private boolean isTimeStampNotModified(long ifModifiedSince, long lastModifiedTimestamp)
private java.lang.String addEtagPadding(java.lang.String etag)
protected java.lang.Class<?> getReturnValueType(java.lang.Object returnValue, MethodParameter returnType)
AbstractMessageConverterMethodProcessor
ResponseEntity<T>
).getReturnValueType
in class AbstractMessageConverterMethodProcessor