public class ResponseBodyEmitterReturnValueHandler extends java.lang.Object implements AsyncHandlerMethodReturnValueHandler
ResponseBodyEmitter
(and the
ResponseEntity<ResponseBodyEmitter>
sub-class) as well as any other
async type with a registered adapter
.Modifier and Type | Class and Description |
---|---|
private class |
ResponseBodyEmitterReturnValueHandler.HttpMessageConvertingHandler
ResponseBodyEmitter.Handler that writes with HttpMessageConverter's.
|
private static class |
ResponseBodyEmitterReturnValueHandler.SimpleResponseBodyEmitterAdapter
Adapter for
ResponseBodyEmitter return values. |
private static class |
ResponseBodyEmitterReturnValueHandler.StreamingServletServerHttpResponse
Wrap to silently ignore header changes HttpMessageConverter's that would
otherwise cause HttpHeaders to raise exceptions.
|
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.Class<?>,ResponseBodyEmitterAdapter> |
adapterMap |
private static Log |
logger |
private java.util.List<HttpMessageConverter<?>> |
messageConverters |
Constructor and Description |
---|
ResponseBodyEmitterReturnValueHandler(java.util.List<HttpMessageConverter<?>> messageConverters) |
Modifier and Type | Method and Description |
---|---|
private ResponseBodyEmitterAdapter |
getAdapterFor(java.lang.Class<?> type) |
java.util.Map<java.lang.Class<?>,ResponseBodyEmitterAdapter> |
getAdapterMap()
Return the map with
ResponseBodyEmitter adapters. |
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. |
boolean |
isAsyncReturnValue(java.lang.Object returnValue,
MethodParameter returnType)
Whether the given return value represents asynchronous computation.
|
boolean |
supportsReturnType(MethodParameter returnType)
Whether the given method return type is
supported by this handler.
|
private static final Log logger
private final java.util.List<HttpMessageConverter<?>> messageConverters
private final java.util.Map<java.lang.Class<?>,ResponseBodyEmitterAdapter> adapterMap
public ResponseBodyEmitterReturnValueHandler(java.util.List<HttpMessageConverter<?>> messageConverters)
public java.util.Map<java.lang.Class<?>,ResponseBodyEmitterAdapter> getAdapterMap()
ResponseBodyEmitter
adapters.
By default the map contains a single adapter ResponseBodyEmitter
that simply downcasts the return value.private ResponseBodyEmitterAdapter getAdapterFor(java.lang.Class<?> type)
public boolean supportsReturnType(MethodParameter returnType)
HandlerMethodReturnValueHandler
supportsReturnType
in interface HandlerMethodReturnValueHandler
returnType
- the method return type to checktrue
if this handler supports the supplied return type;
false
otherwisepublic boolean isAsyncReturnValue(java.lang.Object returnValue, MethodParameter returnType)
AsyncHandlerMethodReturnValueHandler
isAsyncReturnValue
in interface AsyncHandlerMethodReturnValueHandler
returnValue
- the return valuereturnType
- the return typetrue
if the return value is asynchronous.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.handleReturnValue
in interface HandlerMethodReturnValueHandler
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 error