Leniently accept custom DeferredResult etc subclasses for null values

Issue: SPR-14423
This commit is contained in:
Juergen Hoeller
2016-07-02 12:55:30 +02:00
parent 498d896ef0
commit cfc560c4c4
3 changed files with 63 additions and 29 deletions

View File

@@ -281,16 +281,10 @@ public class ServletInvocableHandlerMethod extends InvocableHandlerMethod {
if (this.returnValue != null) {
return this.returnValue.getClass();
}
Class<?> parameterType = super.getParameterType();
if (ResponseBodyEmitter.class.isAssignableFrom(parameterType) ||
StreamingResponseBody.class.isAssignableFrom(parameterType)) {
return parameterType;
if (!ResolvableType.NONE.equals(this.returnType)) {
return this.returnType.getRawClass();
}
if (ResolvableType.NONE.equals(this.returnType)) {
throw new IllegalArgumentException("Expected one of Callable, DeferredResult, or ListenableFuture: " +
super.getParameterType());
}
return this.returnType.getRawClass();
return super.getParameterType();
}
@Override