committed by
Jens Schauder
parent
5a59e43745
commit
20a1220cd1
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user