committed by
Jens Schauder
parent
5a59e43745
commit
20a1220cd1
14
pom.xml
14
pom.xml
@@ -112,20 +112,6 @@
|
||||
|
||||
<!-- RxJava -->
|
||||
|
||||
<dependency>
|
||||
<groupId>io.reactivex</groupId>
|
||||
<artifactId>rxjava</artifactId>
|
||||
<version>${rxjava}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.reactivex</groupId>
|
||||
<artifactId>rxjava-reactive-streams</artifactId>
|
||||
<version>${rxjava-reactive-streams}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.reactivex.rxjava2</groupId>
|
||||
<artifactId>rxjava</artifactId>
|
||||
|
||||
@@ -22,8 +22,6 @@ import kotlinx.coroutines.flow.FlowKt;
|
||||
import kotlinx.coroutines.reactive.ReactiveFlowKt;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import rx.Observable;
|
||||
import rx.Single;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -54,8 +52,6 @@ import org.springframework.util.ClassUtils;
|
||||
* <p>
|
||||
* This class discovers reactive wrapper availability and their conversion support based on the class path. Reactive
|
||||
* wrapper types might be supported/on the class path but conversion may require additional dependencies.
|
||||
* <p>
|
||||
* <strong>Note:</strong> As of Spring Data 2.4, support for RxJava 1.x is deprecated in favor of RxJava 2 and 3.
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @author Oliver Gierke
|
||||
@@ -72,12 +68,6 @@ public abstract class ReactiveWrapperConverters {
|
||||
|
||||
static {
|
||||
|
||||
if (ReactiveWrappers.isAvailable(ReactiveLibrary.RXJAVA1)) {
|
||||
|
||||
REACTIVE_WRAPPERS.add(RxJava1SingleWrapper.INSTANCE);
|
||||
REACTIVE_WRAPPERS.add(RxJava1ObservableWrapper.INSTANCE);
|
||||
}
|
||||
|
||||
if (ReactiveWrappers.isAvailable(ReactiveLibrary.RXJAVA2)) {
|
||||
|
||||
REACTIVE_WRAPPERS.add(RxJava2SingleWrapper.INSTANCE);
|
||||
@@ -341,46 +331,6 @@ public abstract class ReactiveWrapperConverters {
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// RxJava 1 converters
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Wrapper for RxJava 1's {@link Single}.
|
||||
*/
|
||||
private enum RxJava1SingleWrapper implements ReactiveTypeWrapper<Single<?>> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@Override
|
||||
public Class<? super Single<?>> getWrapperClass() {
|
||||
return Single.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Single<?> map(Object wrapper, Function<Object, Object> function) {
|
||||
return ((Single<?>) wrapper).map(function::apply);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for RxJava 1's {@link Observable}.
|
||||
*/
|
||||
private enum RxJava1ObservableWrapper implements ReactiveTypeWrapper<Observable<?>> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@Override
|
||||
public Class<? super Observable<?>> getWrapperClass() {
|
||||
return Observable.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<?> map(Object wrapper, Function<Object, Object> function) {
|
||||
return ((Observable<?>) wrapper).map(function::apply);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// RxJava 2 converters
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@@ -35,8 +35,6 @@ import org.springframework.util.ClassUtils;
|
||||
* <p>
|
||||
* Supported types are discovered by their availability on the class path. This class is typically used to determine
|
||||
* multiplicity and whether a reactive wrapper type is acceptable for a specific operation.
|
||||
* <p>
|
||||
* <strong>Note:</strong> As of Spring Data 2.4, support for RxJava 1.x is deprecated in favor of RxJava 2 and 3.
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @author Christoph Strobl
|
||||
@@ -45,9 +43,6 @@ import org.springframework.util.ClassUtils;
|
||||
* @author Hantsy Bai
|
||||
* @since 2.0
|
||||
* @see org.reactivestreams.Publisher
|
||||
* @see rx.Single
|
||||
* @see rx.Observable
|
||||
* @see rx.Completable
|
||||
* @see io.reactivex.Single
|
||||
* @see io.reactivex.Maybe
|
||||
* @see io.reactivex.Observable
|
||||
@@ -68,12 +63,6 @@ public abstract class ReactiveWrappers {
|
||||
private static final boolean PROJECT_REACTOR_PRESENT = ClassUtils.isPresent("reactor.core.publisher.Flux",
|
||||
ReactiveWrappers.class.getClassLoader());
|
||||
|
||||
@Deprecated
|
||||
private static final boolean RXJAVA1_PRESENT = ClassUtils.isPresent("rx.Observable",
|
||||
ReactiveWrappers.class.getClassLoader())
|
||||
&& ClassUtils.isPresent("rx.RxReactiveStreams",
|
||||
ReactiveWrappers.class.getClassLoader());
|
||||
|
||||
@Deprecated
|
||||
private static final boolean RXJAVA2_PRESENT = ClassUtils.isPresent("io.reactivex.Flowable",
|
||||
ReactiveWrappers.class.getClassLoader());
|
||||
@@ -98,17 +87,11 @@ public abstract class ReactiveWrappers {
|
||||
|
||||
PROJECT_REACTOR,
|
||||
|
||||
/**
|
||||
* @deprecated since 2.4, use RxJava 3 instead. To be removed with Spring Data 3.0.
|
||||
*/
|
||||
@Deprecated
|
||||
RXJAVA1,
|
||||
|
||||
/**
|
||||
* @deprecated since 2.6, use RxJava 3 instead. To be removed with Spring Data 3.0.
|
||||
*/
|
||||
@Deprecated
|
||||
RXJAVA2, RXJAVA3, KOTLIN_COROUTINES, MUTINY;
|
||||
RXJAVA2, RXJAVA3, KOTLIN_COROUTINES;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -134,8 +117,6 @@ public abstract class ReactiveWrappers {
|
||||
switch (reactiveLibrary) {
|
||||
case PROJECT_REACTOR:
|
||||
return PROJECT_REACTOR_PRESENT;
|
||||
case RXJAVA1:
|
||||
return RXJAVA1_PRESENT;
|
||||
case RXJAVA2:
|
||||
return RXJAVA2_PRESENT;
|
||||
case RXJAVA3:
|
||||
|
||||
@@ -18,14 +18,14 @@ package org.springframework.data.repository.core.support;
|
||||
import static java.util.Arrays.*;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
import io.reactivex.rxjava3.core.Completable;
|
||||
import io.reactivex.rxjava3.core.Observable;
|
||||
import io.reactivex.rxjava3.core.Single;
|
||||
import io.vavr.control.Option;
|
||||
import io.vavr.control.Try;
|
||||
import lombok.Value;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import rx.Completable;
|
||||
import rx.Observable;
|
||||
import rx.Single;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.math.BigDecimal;
|
||||
@@ -41,6 +41,7 @@ import java.util.stream.Collectors;
|
||||
import org.assertj.core.api.SoftAssertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.reactivestreams.Publisher;
|
||||
|
||||
import org.springframework.dao.InvalidDataAccessApiUsageException;
|
||||
import org.springframework.data.repository.Repository;
|
||||
import org.springframework.data.util.Streamable;
|
||||
@@ -120,7 +121,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Publisher.class);
|
||||
|
||||
Mono<Entity> mono = Mono.from((Publisher<Entity>) result);
|
||||
assertThat(mono.block()).isEqualTo(entity.toBlocking().value());
|
||||
assertThat(mono.block()).isEqualTo(entity.blockingGet());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -133,7 +134,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Mono.class);
|
||||
|
||||
Mono<Entity> mono = (Mono<Entity>) result;
|
||||
assertThat(mono.block()).isEqualTo(entity.toBlocking().value());
|
||||
assertThat(mono.block()).isEqualTo(entity.blockingGet());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -146,7 +147,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Flux.class);
|
||||
|
||||
Flux<Entity> flux = (Flux<Entity>) result;
|
||||
assertThat(flux.next().block()).isEqualTo(entity.toBlocking().value());
|
||||
assertThat(flux.next().block()).isEqualTo(entity.blockingGet());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -159,7 +160,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Publisher.class);
|
||||
|
||||
Mono<Entity> mono = Mono.from((Publisher<Entity>) result);
|
||||
assertThat(mono.block()).isEqualTo(entity.toBlocking().first());
|
||||
assertThat(mono.block()).isEqualTo(entity.blockingFirst());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -172,7 +173,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Mono.class);
|
||||
|
||||
Mono<Entity> mono = (Mono<Entity>) result;
|
||||
assertThat(mono.block()).isEqualTo(entity.toBlocking().first());
|
||||
assertThat(mono.block()).isEqualTo(entity.blockingFirst());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -185,7 +186,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Flux.class);
|
||||
|
||||
Flux<Entity> flux = (Flux<Entity>) result;
|
||||
assertThat(flux.next().block()).isEqualTo(entity.toBlocking().first());
|
||||
assertThat(flux.next().block()).isEqualTo(entity.blockingFirst());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -198,7 +199,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Single.class);
|
||||
|
||||
Single<Entity> single = (Single<Entity>) result;
|
||||
assertThat(single.toBlocking().value()).isEqualTo(entity.toBlocking().first());
|
||||
assertThat(single.blockingGet()).isEqualTo(entity.blockingFirst());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -211,7 +212,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Observable.class);
|
||||
|
||||
Observable<Entity> observable = (Observable<Entity>) result;
|
||||
assertThat(observable.toBlocking().first()).isEqualTo(entity.toBlocking().value());
|
||||
assertThat(observable.blockingFirst()).isEqualTo(entity.blockingGet());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -224,7 +225,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Single.class);
|
||||
|
||||
Single<Entity> single = (Single<Entity>) result;
|
||||
assertThat(single.toBlocking().value()).isEqualTo(entity.block());
|
||||
assertThat(single.blockingGet()).isEqualTo(entity.block());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -237,7 +238,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Completable.class);
|
||||
|
||||
Completable completable = (Completable) result;
|
||||
assertThat(completable.get()).isNull();
|
||||
completable.blockingAwait();
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -250,7 +251,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Completable.class);
|
||||
|
||||
Completable completable = (Completable) result;
|
||||
assertThat(completable.get()).isInstanceOf(InvalidDataAccessApiUsageException.class);
|
||||
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(completable::blockingAwait);
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -290,7 +291,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Observable.class);
|
||||
|
||||
Observable<Entity> observable = (Observable<Entity>) result;
|
||||
assertThat(observable.toBlocking().first()).isEqualTo(entity.block());
|
||||
assertThat(observable.blockingFirst()).isEqualTo(entity.block());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -303,7 +304,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Single.class);
|
||||
|
||||
Single<Entity> single = (Single<Entity>) result;
|
||||
assertThat(single.toBlocking().value()).isEqualTo(entity.next().block());
|
||||
assertThat(single.blockingGet()).isEqualTo(entity.next().block());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
@@ -316,7 +317,7 @@ class QueryExecutionResultHandlerUnitTests {
|
||||
assertThat(result).isInstanceOf(Observable.class);
|
||||
|
||||
Observable<Entity> observable = (Observable<Entity>) result;
|
||||
assertThat(observable.toBlocking().first()).isEqualTo(entity.next().block());
|
||||
assertThat(observable.blockingFirst()).isEqualTo(entity.next().block());
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
|
||||
@@ -17,10 +17,8 @@ package org.springframework.data.repository.core.support;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
import io.reactivex.Completable;
|
||||
import io.reactivex.Flowable;
|
||||
import reactor.core.publisher.Flux;
|
||||
import rx.Observable;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
@@ -29,7 +27,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.reactivestreams.Publisher;
|
||||
|
||||
import org.springframework.data.repository.Repository;
|
||||
import org.springframework.data.repository.core.RepositoryMetadata;
|
||||
import org.springframework.data.repository.reactive.ReactiveCrudRepository;
|
||||
import org.springframework.data.repository.reactive.ReactiveSortingRepository;
|
||||
@@ -47,26 +44,6 @@ class ReactiveRepositoryInformationUnitTests {
|
||||
|
||||
static final Class<ReactiveJavaInterfaceWithGenerics> BASE_CLASS = ReactiveJavaInterfaceWithGenerics.class;
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void discoversRxJava1MethodWithoutComparingReturnType() throws Exception {
|
||||
|
||||
Method reference = extractTargetMethodFromRepository(RxJava1InterfaceWithGenerics.class, "deleteAll");
|
||||
|
||||
assertThat(reference.getDeclaringClass()).isEqualTo(ReactiveCrudRepository.class);
|
||||
assertThat(reference.getName()).isEqualTo("deleteAll");
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void discoversRxJava1MethodWithConvertibleArguments() throws Exception {
|
||||
|
||||
Method reference = extractTargetMethodFromRepository(RxJava1InterfaceWithGenerics.class, "saveAll",
|
||||
Observable.class);
|
||||
|
||||
assertThat(reference.getDeclaringClass()).isEqualTo(ReactiveCrudRepository.class);
|
||||
assertThat(reference.getName()).isEqualTo("saveAll");
|
||||
assertThat(reference.getParameterTypes()[0]).isEqualTo(Publisher.class);
|
||||
}
|
||||
|
||||
@Test // DATACMNS-988
|
||||
void discoversRxJava2MethodWithoutComparingReturnType() throws Exception {
|
||||
|
||||
@@ -136,13 +113,6 @@ class ReactiveRepositoryInformationUnitTests {
|
||||
return composition.findMethod(repositoryType.getMethod(methodName, args)).get();
|
||||
}
|
||||
|
||||
interface RxJava1InterfaceWithGenerics extends Repository<User, String> {
|
||||
|
||||
Observable<User> saveAll(Observable<User> entities);
|
||||
|
||||
Completable deleteAll();
|
||||
}
|
||||
|
||||
interface RxJava2InterfaceWithGenerics extends RxJava2CrudRepository<User, String> {}
|
||||
|
||||
interface ReactiveJavaInterfaceWithGenerics extends ReactiveCrudRepository<User, String> {}
|
||||
|
||||
@@ -15,13 +15,12 @@
|
||||
*/
|
||||
package org.springframework.data.repository.core.support;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import io.reactivex.Completable;
|
||||
import io.reactivex.Maybe;
|
||||
import io.reactivex.rxjava3.core.Single;
|
||||
import reactor.core.publisher.Mono;
|
||||
import rx.Single;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@@ -32,7 +31,6 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.mockito.junit.jupiter.MockitoSettings;
|
||||
import org.mockito.quality.Strictness;
|
||||
import org.reactivestreams.Publisher;
|
||||
|
||||
import org.springframework.data.repository.Repository;
|
||||
import org.springframework.data.repository.reactive.ReactiveSortingRepository;
|
||||
@@ -67,32 +65,6 @@ class ReactiveWrapperRepositoryFactorySupportUnitTests {
|
||||
verify(backingRepo, times(0)).findById(1);
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836, DATACMNS-1154
|
||||
void callsRxJava1MethodOnBaseImplementationWithExactArguments() {
|
||||
|
||||
Serializable id = 1L;
|
||||
when(backingRepo.existsById(id)).thenReturn(Mono.just(true));
|
||||
|
||||
RxJava1ConvertingRepository repository = factory.getRepository(RxJava1ConvertingRepository.class);
|
||||
repository.existsById(id);
|
||||
repository.existsById((Long) id);
|
||||
|
||||
verify(backingRepo, times(2)).existsById(id);
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836, DATACMNS-1063, DATACMNS-1154
|
||||
@SuppressWarnings("unchecked")
|
||||
void callsRxJava1MethodOnBaseImplementationWithTypeConversion() {
|
||||
|
||||
when(backingRepo.existsById(any(Publisher.class))).thenReturn(Mono.just(true));
|
||||
|
||||
Single<Long> ids = Single.just(1L);
|
||||
|
||||
RxJava1ConvertingRepository repository = factory.getRepository(RxJava1ConvertingRepository.class);
|
||||
repository.existsById(ids);
|
||||
|
||||
verify(backingRepo, times(1)).existsById(any(Publisher.class));
|
||||
}
|
||||
|
||||
@Test // DATACMNS-988, DATACMNS-1154
|
||||
void callsRxJava2MethodOnBaseImplementationWithExactArguments() {
|
||||
@@ -118,14 +90,6 @@ class ReactiveWrapperRepositoryFactorySupportUnitTests {
|
||||
verify(backingRepo, times(1)).deleteById(id);
|
||||
}
|
||||
|
||||
interface RxJava1ConvertingRepository extends Repository<Object, Long> {
|
||||
|
||||
Single<Boolean> existsById(Single<Long> id);
|
||||
|
||||
Single<Boolean> existsById(Serializable id);
|
||||
|
||||
Single<Boolean> existsById(Long id);
|
||||
}
|
||||
|
||||
interface RxJava2ConvertingRepository extends Repository<Object, Long> {
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ package org.springframework.data.repository.query;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
import rx.Single;
|
||||
import io.reactivex.rxjava3.core.Single;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -19,12 +19,12 @@ import static org.assertj.core.api.Assertions.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import io.reactivex.Flowable;
|
||||
import io.reactivex.rxjava3.core.Observable;
|
||||
import io.reactivex.rxjava3.core.Single;
|
||||
import lombok.Getter;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.test.StepVerifier;
|
||||
import rx.Observable;
|
||||
import rx.Single;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
@@ -241,7 +241,7 @@ class ResultProcessorUnitTests {
|
||||
|
||||
assertThat(result).isInstanceOf(Single.class);
|
||||
|
||||
Object content = ((Single<Object>) result).toBlocking().value();
|
||||
Object content = ((Single<Object>) result).blockingGet();
|
||||
|
||||
assertThat(content).isInstanceOf(Sample.class);
|
||||
}
|
||||
@@ -288,7 +288,7 @@ class ResultProcessorUnitTests {
|
||||
|
||||
assertThat(result).isInstanceOf(Observable.class);
|
||||
|
||||
List<Object> content = ((Observable<Object>) result).toList().toBlocking().single();
|
||||
List<Object> content = ((Observable<Object>) result).toList().blockingGet();
|
||||
|
||||
assertThat(content).isNotEmpty();
|
||||
assertThat(content.get(0)).isInstanceOf(SampleProjection.class);
|
||||
|
||||
@@ -18,15 +18,15 @@ package org.springframework.data.repository.util;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
import static org.springframework.data.repository.util.QueryExecutionConverters.*;
|
||||
|
||||
import io.reactivex.rxjava3.core.Completable;
|
||||
import io.reactivex.rxjava3.core.Observable;
|
||||
import io.reactivex.rxjava3.core.Single;
|
||||
import io.vavr.collection.Seq;
|
||||
import io.vavr.control.Try;
|
||||
import io.vavr.control.Try.Failure;
|
||||
import lombok.Value;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import rx.Completable;
|
||||
import rx.Observable;
|
||||
import rx.Single;
|
||||
import scala.Option;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -26,9 +26,6 @@ import kotlinx.coroutines.reactive.ReactiveFlowKt;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.test.StepVerifier;
|
||||
import rx.Completable;
|
||||
import rx.Observable;
|
||||
import rx.Single;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.reactivestreams.Publisher;
|
||||
@@ -50,14 +47,6 @@ class ReactiveWrapperConvertersUnitTests {
|
||||
assertThat(ReactiveWrapperConverters.supports(Object.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void shouldSupportRxJava1Types() {
|
||||
|
||||
assertThat(ReactiveWrapperConverters.supports(Single.class)).isTrue();
|
||||
assertThat(ReactiveWrapperConverters.supports(Observable.class)).isTrue();
|
||||
assertThat(ReactiveWrapperConverters.supports(Completable.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void shouldSupportRxJava2Types() {
|
||||
|
||||
@@ -99,13 +88,6 @@ class ReactiveWrapperConvertersUnitTests {
|
||||
assertThat(ReactiveWrapperConverters.toWrapper(foo, Mono.class)).isSameAs(foo);
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void toWrapperShouldConvertMonoToRxJava1Single() {
|
||||
|
||||
Mono<String> foo = Mono.just("foo");
|
||||
assertThat(ReactiveWrapperConverters.toWrapper(foo, Single.class)).isInstanceOf(Single.class);
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void toWrapperShouldConvertMonoToRxJava2Single() {
|
||||
|
||||
@@ -245,22 +227,6 @@ class ReactiveWrapperConvertersUnitTests {
|
||||
assertThat(map.next().block()).isEqualTo(1L);
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void shouldMapRxJava1Single() {
|
||||
|
||||
Single<String> foo = Single.just("foo");
|
||||
Single<Long> map = ReactiveWrapperConverters.map(foo, source -> 1L);
|
||||
assertThat(map.toBlocking().value()).isEqualTo(1L);
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void shouldMapRxJava1Observable() {
|
||||
|
||||
Observable<String> foo = Observable.just("foo");
|
||||
Observable<Long> map = ReactiveWrapperConverters.map(foo, source -> 1L);
|
||||
assertThat(map.toBlocking().first()).isEqualTo(1L);
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void shouldMapRxJava2Single() {
|
||||
|
||||
|
||||
@@ -21,8 +21,6 @@ import io.reactivex.Completable;
|
||||
import io.reactivex.Flowable;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import rx.Observable;
|
||||
import rx.Single;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
@@ -43,10 +41,8 @@ class ReactiveWrappersUnitTests {
|
||||
|
||||
assertThat(ReactiveWrappers.isNoValueType(Mono.class)).isFalse();
|
||||
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();
|
||||
assertThat(ReactiveWrappers.isNoValueType(io.reactivex.Maybe.class)).isFalse();
|
||||
@@ -65,10 +61,8 @@ class ReactiveWrappersUnitTests {
|
||||
|
||||
assertThat(ReactiveWrappers.isSingleValueType(Mono.class)).isTrue();
|
||||
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();
|
||||
assertThat(ReactiveWrappers.isSingleValueType(io.reactivex.Completable.class)).isFalse();
|
||||
@@ -89,10 +83,8 @@ class ReactiveWrappersUnitTests {
|
||||
|
||||
assertThat(ReactiveWrappers.isMultiValueType(Mono.class)).isFalse();
|
||||
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();
|
||||
assertThat(ReactiveWrappers.isSingleValueType(io.reactivex.Completable.class)).isFalse();
|
||||
|
||||
@@ -18,6 +18,8 @@ package org.springframework.data.repository.kotlin
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import io.reactivex.rxjava3.core.Observable
|
||||
import io.reactivex.rxjava3.core.Single
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.flow.toList
|
||||
@@ -34,8 +36,6 @@ import org.springframework.data.repository.reactive.ReactiveCrudRepository
|
||||
import org.springframework.data.repository.sample.User
|
||||
import reactor.core.publisher.Flux
|
||||
import reactor.core.publisher.Mono
|
||||
import rx.Observable
|
||||
import rx.Single
|
||||
|
||||
/**
|
||||
* Unit tests for Coroutine repositories.
|
||||
|
||||
Reference in New Issue
Block a user