From c9a5a19738dcb5b605f9fa24a356330decbd888e Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 25 Jun 2020 10:45:38 +0200 Subject: [PATCH] DATACMNS-1753 - Polishing. Check for deferred types in ReactiveWrappers so that ReactiveWrapperConverters remains untouched as wrapper conversion from a reactive type into CompletableFuture is still possible from a ReactiveWrapperConverters perspective. Original pull request: #450. --- .../data/repository/util/ReactiveWrapperConverters.java | 3 +-- .../data/repository/util/ReactiveWrappers.java | 7 +++---- .../util/ReactiveWrapperConvertersUnitTests.java | 7 ------- .../data/repository/util/ReactiveWrappersUnitTests.java | 7 ++++--- 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/springframework/data/repository/util/ReactiveWrapperConverters.java b/src/main/java/org/springframework/data/repository/util/ReactiveWrapperConverters.java index 281589294..5995f1439 100644 --- a/src/main/java/org/springframework/data/repository/util/ReactiveWrapperConverters.java +++ b/src/main/java/org/springframework/data/repository/util/ReactiveWrapperConverters.java @@ -140,8 +140,7 @@ public abstract 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).getDescriptor().isDeferred(); + && RegistryHolder.REACTIVE_ADAPTER_REGISTRY.getAdapter(type) != null; } /** diff --git a/src/main/java/org/springframework/data/repository/util/ReactiveWrappers.java b/src/main/java/org/springframework/data/repository/util/ReactiveWrappers.java index 63ec618af..3f01b4997 100644 --- a/src/main/java/org/springframework/data/repository/util/ReactiveWrappers.java +++ b/src/main/java/org/springframework/data/repository/util/ReactiveWrappers.java @@ -43,6 +43,7 @@ import org.springframework.util.ClassUtils; * @author Mark Paluch * @author Christoph Strobl * @author Oliver Gierke + * @author Gerrit Meier * @since 2.0 * @see org.reactivestreams.Publisher * @see rx.Single @@ -157,9 +158,7 @@ public abstract class ReactiveWrappers { return Arrays.stream(type.getMethods())// .flatMap(ReflectionUtils::returnTypeAndParameters)// - .anyMatch(possibleReactiveSupportedType -> - ReactiveWrapperConverters.supports(possibleReactiveSupportedType) - && findDescriptor(possibleReactiveSupportedType).isPresent()); + .anyMatch(ReactiveWrappers::supports); } /** @@ -270,7 +269,7 @@ public abstract class ReactiveWrappers { ReactiveAdapter adapter = adapterRegistry.getAdapter(type); if (adapter != null && adapter.getDescriptor().isDeferred()) { - return Optional.ofNullable(adapter.getDescriptor()); + return Optional.of(adapter.getDescriptor()); } return Optional.empty(); diff --git a/src/test/java/org/springframework/data/repository/util/ReactiveWrapperConvertersUnitTests.java b/src/test/java/org/springframework/data/repository/util/ReactiveWrapperConvertersUnitTests.java index 14736b511..bb64dfd30 100644 --- a/src/test/java/org/springframework/data/repository/util/ReactiveWrapperConvertersUnitTests.java +++ b/src/test/java/org/springframework/data/repository/util/ReactiveWrapperConvertersUnitTests.java @@ -24,8 +24,6 @@ import rx.Completable; import rx.Observable; import rx.Single; -import java.util.concurrent.CompletableFuture; - import org.junit.jupiter.api.Test; import org.reactivestreams.Publisher; @@ -63,11 +61,6 @@ class ReactiveWrapperConvertersUnitTests { assertThat(ReactiveWrapperConverters.supports(io.reactivex.Completable.class)).isTrue(); } - @Test // DATACMNS-1753 - void shouldNotSupportCompletableFuture() { - assertThat(ReactiveWrapperConverters.supports(CompletableFuture.class)).isFalse(); - } - @Test // DATACMNS-1653 void shouldSupportRxJava3Types() { diff --git a/src/test/java/org/springframework/data/repository/util/ReactiveWrappersUnitTests.java b/src/test/java/org/springframework/data/repository/util/ReactiveWrappersUnitTests.java index 750d5b780..2b93db129 100644 --- a/src/test/java/org/springframework/data/repository/util/ReactiveWrappersUnitTests.java +++ b/src/test/java/org/springframework/data/repository/util/ReactiveWrappersUnitTests.java @@ -33,10 +33,11 @@ import org.reactivestreams.Publisher; * Unit tests for {@link ReactiveWrappers}. * * @author Mark Paluch + * @author Gerrit Meier */ class ReactiveWrappersUnitTests { - @Test // DATACMNS-836, DATACMNS-1653 + @Test // DATACMNS-836, DATACMNS-1653, DATACMNS-1753 void isSingleLikeShouldReportCorrectNoTypes() { assertThat(ReactiveWrappers.isNoValueType(Mono.class)).isFalse(); @@ -56,7 +57,7 @@ class ReactiveWrappersUnitTests { assertThat(ReactiveWrappers.isNoValueType(io.reactivex.rxjava3.core.Observable.class)).isFalse(); } - @Test // DATACMNS-836, DATACMNS-1653 + @Test // DATACMNS-836, DATACMNS-1653, DATACMNS-1753 void isSingleLikeShouldReportCorrectSingleTypes() { assertThat(ReactiveWrappers.isSingleValueType(Mono.class)).isTrue(); @@ -78,7 +79,7 @@ class ReactiveWrappersUnitTests { assertThat(ReactiveWrappers.isSingleValueType(io.reactivex.rxjava3.core.Observable.class)).isFalse(); } - @Test // DATACMNS-836, DATACMNS-1653 + @Test // DATACMNS-836, DATACMNS-1653, DATACMNS-1753 void isCollectionLikeShouldReportCorrectCollectionTypes() { assertThat(ReactiveWrappers.isMultiValueType(Mono.class)).isFalse();