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.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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() {
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user