DATACMNS-1753 - Don't consider CompletableFuture as reactive type.
CompletableFuture use is permitted in imperative repositories so we should not use CompletableFuture as indicator to switch a repository implementation to a reactive one. Original pull request: #450.
This commit is contained in:
committed by
Mark Paluch
parent
06184a3be5
commit
895311c208
@@ -130,7 +130,8 @@ public class ReactiveWrapperConverters {
|
||||
*/
|
||||
public static boolean supports(Class<?> type) {
|
||||
return RegistryHolder.REACTIVE_ADAPTER_REGISTRY != null
|
||||
&& RegistryHolder.REACTIVE_ADAPTER_REGISTRY.getAdapter(type) != null;
|
||||
&& RegistryHolder.REACTIVE_ADAPTER_REGISTRY.getAdapter(type) != null
|
||||
&& RegistryHolder.REACTIVE_ADAPTER_REGISTRY.getAdapter(type).getDescriptor().isDeferred();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -137,7 +137,9 @@ public class ReactiveWrappers {
|
||||
|
||||
return Arrays.stream(type.getMethods())//
|
||||
.flatMap(ReflectionUtils::returnTypeAndParameters)//
|
||||
.anyMatch(ReactiveWrapperConverters::supports);
|
||||
.anyMatch(possibleReactiveSupportedType ->
|
||||
ReactiveWrapperConverters.supports(possibleReactiveSupportedType)
|
||||
&& findDescriptor(possibleReactiveSupportedType).isPresent());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -247,7 +249,10 @@ public class ReactiveWrappers {
|
||||
}
|
||||
|
||||
ReactiveAdapter adapter = adapterRegistry.getAdapter(type);
|
||||
if (adapter != null && adapter.getDescriptor().isDeferred()) {
|
||||
return Optional.ofNullable(adapter.getDescriptor());
|
||||
}
|
||||
|
||||
return Optional.ofNullable(adapter == null ? null : adapter.getDescriptor());
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ import rx.Completable;
|
||||
import rx.Observable;
|
||||
import rx.Single;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.reactivestreams.Publisher;
|
||||
|
||||
@@ -61,6 +63,11 @@ class ReactiveWrapperConvertersUnitTests {
|
||||
assertThat(ReactiveWrapperConverters.supports(io.reactivex.Completable.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test // DATACMNS-1753
|
||||
void shouldNotSupportCompletableFuture() {
|
||||
assertThat(ReactiveWrapperConverters.supports(CompletableFuture.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void toWrapperShouldCastMonoToMono() {
|
||||
|
||||
|
||||
@@ -24,6 +24,8 @@ import reactor.core.publisher.Mono;
|
||||
import rx.Observable;
|
||||
import rx.Single;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.reactivestreams.Publisher;
|
||||
|
||||
@@ -41,6 +43,7 @@ class ReactiveWrappersUnitTests {
|
||||
assertThat(ReactiveWrappers.isNoValueType(Flux.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isNoValueType(Single.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isNoValueType(Completable.class)).isTrue();
|
||||
assertThat(ReactiveWrappers.isNoValueType(CompletableFuture.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isNoValueType(Observable.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isNoValueType(Publisher.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isNoValueType(io.reactivex.Single.class)).isFalse();
|
||||
@@ -56,6 +59,7 @@ class ReactiveWrappersUnitTests {
|
||||
assertThat(ReactiveWrappers.isSingleValueType(Flux.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isSingleValueType(Single.class)).isTrue();
|
||||
assertThat(ReactiveWrappers.isSingleValueType(Completable.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isSingleValueType(CompletableFuture.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isSingleValueType(Observable.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isSingleValueType(Publisher.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isSingleValueType(io.reactivex.Single.class)).isTrue();
|
||||
@@ -72,6 +76,7 @@ class ReactiveWrappersUnitTests {
|
||||
assertThat(ReactiveWrappers.isMultiValueType(Flux.class)).isTrue();
|
||||
assertThat(ReactiveWrappers.isMultiValueType(Single.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isSingleValueType(Completable.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isSingleValueType(CompletableFuture.class)).isFalse();
|
||||
assertThat(ReactiveWrappers.isMultiValueType(Observable.class)).isTrue();
|
||||
assertThat(ReactiveWrappers.isMultiValueType(Publisher.class)).isTrue();
|
||||
assertThat(ReactiveWrappers.isMultiValueType(io.reactivex.Single.class)).isFalse();
|
||||
|
||||
Reference in New Issue
Block a user