Polishing

This commit is contained in:
Juergen Hoeller
2018-07-24 00:45:21 +02:00
parent 1603c4ab2f
commit 1b09718104
2 changed files with 9 additions and 5 deletions

View File

@@ -22,11 +22,12 @@ import org.springframework.core.MethodParameter;
import org.springframework.core.ReactiveAdapter;
import org.springframework.core.ReactiveAdapterRegistry;
import org.springframework.messaging.support.MonoToListenableFutureAdapter;
import org.springframework.util.Assert;
import org.springframework.util.concurrent.ListenableFuture;
/**
* Support for single-value reactive types (like {@code Mono} or {@code Single}) as a
* return value type.
* Support for single-value reactive types (like {@code Mono} or {@code Single})
* as a return value type.
*
* @author Sebastien Deleuze
* @since 5.1
@@ -53,12 +54,13 @@ public class ReactiveReturnValueHandler extends AbstractAsyncReturnValueHandler
@Override
public boolean isAsyncReturnValue(Object returnValue, MethodParameter returnType) {
ReactiveAdapter adapter = this.adapterRegistry.getAdapter(returnType.getParameterType(), returnValue);
return !adapter.isMultiValue() && !adapter.isNoValue();
return (adapter != null && !adapter.isMultiValue() && !adapter.isNoValue());
}
@Override
public ListenableFuture<?> toListenableFuture(Object returnValue, MethodParameter returnType) {
ReactiveAdapter adapter = this.adapterRegistry.getAdapter(returnType.getParameterType(), returnValue);
Assert.state(adapter != null, () -> "No ReactiveAdapter found for " + returnType.getParameterType());
return new MonoToListenableFutureAdapter<>(Mono.from(adapter.toPublisher(returnValue)));
}