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

View File

@ -21,6 +21,7 @@ import java.net.MalformedURLException;
import java.net.URI; import java.net.URI;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import okhttp3.Cache;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.RequestBody; import okhttp3.RequestBody;
@ -118,8 +119,9 @@ public class OkHttp3ClientHttpRequestFactory
public void destroy() throws IOException { public void destroy() throws IOException {
if (this.defaultClient) { if (this.defaultClient) {
// Clean up the client if we created it in the constructor // Clean up the client if we created it in the constructor
if (this.client.cache() != null) { Cache cache = this.client.cache();
this.client.cache().close(); if (cache != null) {
cache.close();
} }
this.client.dispatcher().executorService().shutdown(); this.client.dispatcher().executorService().shutdown();
} }