public abstract class AbstractMessageConverterMethodArgumentResolver extends java.lang.Object implements HandlerMethodArgumentResolver
HttpMessageConverter
s.Modifier and Type | Class and Description |
---|---|
private static class |
AbstractMessageConverterMethodArgumentResolver.EmptyBodyCheckingHttpInputMessage |
Modifier and Type | Field and Description |
---|---|
private RequestResponseBodyAdviceChain |
advice |
protected java.util.List<MediaType> |
allSupportedMediaTypes |
protected Log |
logger |
protected java.util.List<HttpMessageConverter<?>> |
messageConverters |
private static java.lang.Object |
NO_VALUE |
private static java.util.Set<HttpMethod> |
SUPPORTED_METHODS |
Constructor and Description |
---|
AbstractMessageConverterMethodArgumentResolver(java.util.List<HttpMessageConverter<?>> converters)
Basic constructor with converters only.
|
AbstractMessageConverterMethodArgumentResolver(java.util.List<HttpMessageConverter<?>> converters,
java.util.List<java.lang.Object> requestResponseBodyAdvice)
Constructor with converters and
Request~ and ResponseBodyAdvice . |
Modifier and Type | Method and Description |
---|---|
protected java.lang.Object |
adaptArgumentIfNecessary(java.lang.Object arg,
MethodParameter parameter)
Adapt the given argument against the method parameter, if necessary.
|
protected ServletServerHttpRequest |
createInputMessage(NativeWebRequest webRequest)
Create a new
HttpInputMessage from the given NativeWebRequest . |
(package private) RequestResponseBodyAdviceChain |
getAdvice()
Return the configured
RequestBodyAdvice and
RequestBodyAdvice where each instance may be wrapped as a
ControllerAdviceBean . |
private static java.util.List<MediaType> |
getAllSupportedMediaTypes(java.util.List<HttpMessageConverter<?>> messageConverters)
Return the media types supported by all provided message converters sorted
by specificity via
MediaType.sortBySpecificity(List) . |
protected boolean |
isBindExceptionRequired(WebDataBinder binder,
MethodParameter parameter)
Whether to raise a fatal bind exception on validation errors.
|
protected <T> java.lang.Object |
readWithMessageConverters(HttpInputMessage inputMessage,
MethodParameter parameter,
java.lang.reflect.Type targetType)
Create the method argument value of the expected parameter type by reading
from the given HttpInputMessage.
|
protected <T> java.lang.Object |
readWithMessageConverters(NativeWebRequest webRequest,
MethodParameter parameter,
java.lang.reflect.Type paramType)
Create the method argument value of the expected parameter type by
reading from the given request.
|
protected void |
validateIfApplicable(WebDataBinder binder,
MethodParameter parameter)
Validate the binding target if applicable.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
resolveArgument, supportsParameter
private static final java.util.Set<HttpMethod> SUPPORTED_METHODS
private static final java.lang.Object NO_VALUE
protected final Log logger
protected final java.util.List<HttpMessageConverter<?>> messageConverters
protected final java.util.List<MediaType> allSupportedMediaTypes
private final RequestResponseBodyAdviceChain advice
public AbstractMessageConverterMethodArgumentResolver(java.util.List<HttpMessageConverter<?>> converters)
public AbstractMessageConverterMethodArgumentResolver(java.util.List<HttpMessageConverter<?>> converters, @Nullable java.util.List<java.lang.Object> requestResponseBodyAdvice)
Request~
and ResponseBodyAdvice
.private static java.util.List<MediaType> getAllSupportedMediaTypes(java.util.List<HttpMessageConverter<?>> messageConverters)
MediaType.sortBySpecificity(List)
.RequestResponseBodyAdviceChain getAdvice()
RequestBodyAdvice
and
RequestBodyAdvice
where each instance may be wrapped as a
ControllerAdviceBean
.@Nullable protected <T> java.lang.Object readWithMessageConverters(NativeWebRequest webRequest, MethodParameter parameter, java.lang.reflect.Type paramType) throws java.io.IOException, HttpMediaTypeNotSupportedException, HttpMessageNotReadableException
T
- the expected type of the argument value to be createdwebRequest
- the current requestparameter
- the method parameter descriptor (may be null
)paramType
- the type of the argument value to be createdjava.io.IOException
- if the reading from the request failsHttpMediaTypeNotSupportedException
- if no suitable message converter is foundHttpMessageNotReadableException
@Nullable protected <T> java.lang.Object readWithMessageConverters(HttpInputMessage inputMessage, MethodParameter parameter, java.lang.reflect.Type targetType) throws java.io.IOException, HttpMediaTypeNotSupportedException, HttpMessageNotReadableException
T
- the expected type of the argument value to be createdinputMessage
- the HTTP input message representing the current requestparameter
- the method parameter descriptortargetType
- the target type, not necessarily the same as the method
parameter type, e.g. for HttpEntity<String>
.java.io.IOException
- if the reading from the request failsHttpMediaTypeNotSupportedException
- if no suitable message converter is foundHttpMessageNotReadableException
protected ServletServerHttpRequest createInputMessage(NativeWebRequest webRequest)
HttpInputMessage
from the given NativeWebRequest
.webRequest
- the web request to create an input message fromprotected void validateIfApplicable(WebDataBinder binder, MethodParameter parameter)
The default implementation checks for @javax.validation.Valid
,
Spring's Validated
,
and custom annotations whose name starts with "Valid".
binder
- the DataBinder to be usedparameter
- the method parameter descriptorisBindExceptionRequired(org.springframework.web.bind.WebDataBinder, org.springframework.core.MethodParameter)
protected boolean isBindExceptionRequired(WebDataBinder binder, MethodParameter parameter)
binder
- the data binder used to perform data bindingparameter
- the method parameter descriptortrue
if the next method argument is not of type Errors
@Nullable protected java.lang.Object adaptArgumentIfNecessary(@Nullable java.lang.Object arg, MethodParameter parameter)
arg
- the resolved argumentparameter
- the method parameter descriptor