From 9f1448df448d85d1e49b71412f1d2d9ae4d25f2c Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 27 Sep 2021 15:32:46 +0200 Subject: [PATCH] Drop support for RxJava 1 and 2. Closes: #3839 --- spring-data-mongodb/pom.xml | 23 +- .../ReactiveMongoRepositoryFactoryBean.java | 1 - ...onvertingReactiveMongoRepositoryTests.java | 236 +++--------------- ...sitoryConfigurationExtensionUnitTests.java | 4 +- .../custom/CustomReactiveMongoRepository.java | 4 +- 5 files changed, 39 insertions(+), 229 deletions(-) diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 2c78ce3e6..edda8c017 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -122,27 +122,6 @@ true - - io.reactivex - rxjava - ${rxjava} - true - - - - io.reactivex - rxjava-reactive-streams - ${rxjava-reactive-streams} - true - - - - io.reactivex.rxjava2 - rxjava - ${rxjava2} - true - - io.reactivex.rxjava3 rxjava @@ -228,6 +207,7 @@ provided true + org.glassfish jakarta.el @@ -236,7 +216,6 @@ true - jakarta.enterprise jakarta.enterprise.cdi-api diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactoryBean.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactoryBean.java index 6536983a7..d5b3134c1 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactoryBean.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactoryBean.java @@ -38,7 +38,6 @@ import org.springframework.util.Assert; * @author Christoph Strobl * @since 2.0 * @see org.springframework.data.repository.reactive.ReactiveSortingRepository - * @see org.springframework.data.repository.reactive.RxJava2SortingRepository * @see org.springframework.data.repository.reactive.RxJava3SortingRepository */ public class ReactiveMongoRepositoryFactoryBean, S, ID extends Serializable> diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ConvertingReactiveMongoRepositoryTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ConvertingReactiveMongoRepositoryTests.java index cf2dc6a8d..f18bcbbab 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ConvertingReactiveMongoRepositoryTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ConvertingReactiveMongoRepositoryTests.java @@ -17,17 +17,16 @@ package org.springframework.data.mongodb.repository; import static org.assertj.core.api.Assertions.*; -import io.reactivex.Flowable; -import io.reactivex.Maybe; -import io.reactivex.observers.TestObserver; +import io.reactivex.rxjava3.observers.TestObserver; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.Single; import io.reactivex.rxjava3.subscribers.TestSubscriber; import lombok.Data; import lombok.NoArgsConstructor; +import org.springframework.data.repository.reactive.RxJava3SortingRepository; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import rx.Observable; -import rx.Single; import java.util.Arrays; import java.util.List; @@ -46,7 +45,6 @@ import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.repository.config.EnableReactiveMongoRepositories; import org.springframework.data.repository.reactive.ReactiveSortingRepository; -import org.springframework.data.repository.reactive.RxJava2SortingRepository; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; @@ -61,8 +59,6 @@ public class ConvertingReactiveMongoRepositoryTests { @EnableReactiveMongoRepositories( includeFilters = { @Filter(value = ReactivePersonRepostitory.class, type = FilterType.ASSIGNABLE_TYPE), - @Filter(value = RxJava1PersonRepostitory.class, type = FilterType.ASSIGNABLE_TYPE), - @Filter(value = RxJava2PersonRepostitory.class, type = FilterType.ASSIGNABLE_TYPE), @Filter(value = RxJava3PersonRepostitory.class, type = FilterType.ASSIGNABLE_TYPE), @Filter(value = MixedReactivePersonRepostitory.class, type = FilterType.ASSIGNABLE_TYPE) }, considerNestedRepositories = true) @@ -71,8 +67,6 @@ public class ConvertingReactiveMongoRepositoryTests { @Autowired MixedReactivePersonRepostitory reactiveRepository; @Autowired ReactivePersonRepostitory reactivePersonRepostitory; - @Autowired RxJava1PersonRepostitory rxJava1PersonRepostitory; - @Autowired RxJava2PersonRepostitory rxJava2PersonRepostitory; @Autowired RxJava3PersonRepostitory rxJava3PersonRepostitory; ReactivePerson dave, oliver, carter, boyd, stefan, leroi, alicia; @@ -106,162 +100,24 @@ public class ConvertingReactiveMongoRepositoryTests { StepVerifier.create(reactivePersonRepostitory.findByLastname(boyd.getLastname())).expectNext(boyd).verifyComplete(); } - @Test // DATAMONGO-1444 - public void simpleRxJava1MethodsShouldWork() { - - rxJava1PersonRepostitory.existsById(dave.getId()) // - .test() // - .awaitTerminalEvent() // - .assertValue(true) // - .assertNoErrors() // - .assertCompleted(); - } - - @Test // DATAMONGO-1444 - public void existsWithSingleRxJava1IdMethodsShouldWork() { - - rxJava1PersonRepostitory.existsById(Single.just(dave.getId())) // - .test() // - .awaitTerminalEvent() // - .assertValue(true) // - .assertNoErrors() // - .assertCompleted(); - } - - @Test // DATAMONGO-1444 - public void singleRxJava1QueryMethodShouldWork() { - - rxJava1PersonRepostitory.findByFirstnameAndLastname(dave.getFirstname(), dave.getLastname()) // - .test() // - .awaitTerminalEvent() // - .assertValue(dave) // - .assertNoErrors() // - .assertCompleted(); - } - - @Test // DATAMONGO-1444 - public void singleProjectedRxJava1QueryMethodShouldWork() { - - List people = rxJava1PersonRepostitory.findProjectedByLastname(carter.getLastname()) // - .test() // - .awaitTerminalEvent() // - .assertValueCount(1) // - .assertNoErrors() // - .assertCompleted() // - .getOnNextEvents(); - - ProjectedPerson projectedPerson = people.get(0); - assertThat(projectedPerson.getFirstname()).isEqualTo(carter.getFirstname()); - } - - @Test // DATAMONGO-1444 - public void observableRxJava1QueryMethodShouldWork() { - - rxJava1PersonRepostitory.findByLastname(boyd.getLastname()) // - .test() // - .awaitTerminalEvent() // - .assertValue(boyd) // - .assertNoErrors() // - .assertCompleted() // - .getOnNextEvents(); - } - - @Test // DATAMONGO-1610 - public void simpleRxJava2MethodsShouldWork() { - - TestObserver testObserver = rxJava2PersonRepostitory.existsById(dave.getId()).test(); - - testObserver.awaitTerminalEvent(); - testObserver.assertComplete(); - testObserver.assertNoErrors(); - testObserver.assertValue(true); - } - - @Test // DATAMONGO-1610 - public void existsWithSingleRxJava2IdMethodsShouldWork() { - - TestObserver testObserver = rxJava2PersonRepostitory.existsById(io.reactivex.Single.just(dave.getId())) - .test(); - - testObserver.awaitTerminalEvent(); - testObserver.assertComplete(); - testObserver.assertNoErrors(); - testObserver.assertValue(true); - } - - @Test // DATAMONGO-1610 - public void flowableRxJava2QueryMethodShouldWork() { - - io.reactivex.subscribers.TestSubscriber testSubscriber = rxJava2PersonRepostitory - .findByFirstnameAndLastname(dave.getFirstname(), dave.getLastname()).test(); - - testSubscriber.awaitTerminalEvent(); - testSubscriber.assertComplete(); - testSubscriber.assertNoErrors(); - testSubscriber.assertValue(dave); - } - - @Test // DATAMONGO-1610 - public void singleProjectedRxJava2QueryMethodShouldWork() { - - TestObserver testObserver = rxJava2PersonRepostitory - .findProjectedByLastname(Maybe.just(carter.getLastname())).test(); - - testObserver.awaitTerminalEvent(); - testObserver.assertComplete(); - testObserver.assertNoErrors(); - - testObserver.assertValue(actual -> { - assertThat(actual.getFirstname()).isEqualTo(carter.getFirstname()); - return true; - }); - } - - @Test // DATAMONGO-1610 - public void observableProjectedRxJava2QueryMethodShouldWork() { - - TestObserver testObserver = rxJava2PersonRepostitory - .findProjectedByLastname(Single.just(carter.getLastname())).test(); - - testObserver.awaitTerminalEvent(); - testObserver.assertComplete(); - testObserver.assertNoErrors(); - - testObserver.assertValue(actual -> { - assertThat(actual.getFirstname()).isEqualTo(carter.getFirstname()); - return true; - }); - } - - @Test // DATAMONGO-1610 - public void maybeRxJava2QueryMethodShouldWork() { - - TestObserver testObserver = rxJava2PersonRepostitory.findByLastname(boyd.getLastname()).test(); - - testObserver.awaitTerminalEvent(); - testObserver.assertComplete(); - testObserver.assertNoErrors(); - testObserver.assertValue(boyd); - } - @Test // DATAMONGO-2558 - public void simpleRxJava3MethodsShouldWork() { + public void simpleRxJava3MethodsShouldWork() throws InterruptedException { TestObserver testObserver = rxJava3PersonRepostitory.existsById(dave.getId()).test(); - testObserver.awaitTerminalEvent(); + testObserver.await(); testObserver.assertComplete(); testObserver.assertNoErrors(); testObserver.assertValue(true); } @Test // DATAMONGO-2558 - public void existsWithSingleRxJava3IdMethodsShouldWork() { + public void existsWithSingleRxJava3IdMethodsShouldWork() throws InterruptedException { - TestObserver testObserver = rxJava3PersonRepostitory.existsById(io.reactivex.Single.just(dave.getId())) + TestObserver testObserver = rxJava3PersonRepostitory.existsById(Single.just(dave.getId())) .test(); - testObserver.awaitTerminalEvent(); + testObserver.await(); testObserver.assertComplete(); testObserver.assertNoErrors(); testObserver.assertValue(true); @@ -323,17 +179,17 @@ public class ConvertingReactiveMongoRepositoryTests { testObserver.assertValue(boyd); } - @Test // DATAMONGO-1444 - public void mixedRepositoryShouldWork() { - - reactiveRepository.findByLastname(boyd.getLastname()) // - .test() // - .awaitTerminalEvent() // - .assertValue(boyd) // - .assertNoErrors() // - .assertCompleted() // - .getOnNextEvents(); - } +// @Test // DATAMONGO-1444 +// public void mixedRepositoryShouldWork() { +// +// reactiveRepository.findByLastname(boyd.getLastname()) // +// .test() // +// .awaitTerminalEvent() // +// .assertValue(boyd) // +// .assertNoErrors() // +// .assertCompleted() // +// .getOnNextEvents(); +// } @Test // DATAMONGO-1444 public void shouldFindOneBySingleOfLastName() { @@ -352,50 +208,26 @@ public class ConvertingReactiveMongoRepositoryTests { .verifyComplete(); } - @Test // DATAMONGO-1444 - public void shouldFindByPublisherOfLastNameInAndAgeGreater() { - - List people = reactiveRepository - .findByLastnameInAndAgeGreaterThan(Flux.just(carter.getLastname(), dave.getLastname()), 41).test() // - .awaitTerminalEvent() // - .assertValueCount(2) // - .assertNoErrors() // - .assertCompleted() // - .getOnNextEvents(); - - assertThat(people).contains(carter, dave); - } +// @Test // DATAMONGO-1444 +// public void shouldFindByPublisherOfLastNameInAndAgeGreater() { +// +// List people = reactiveRepository +// .findByLastnameInAndAgeGreaterThan(Flux.just(carter.getLastname(), dave.getLastname()), 41).test() // +// .awaitTerminalEvent() // +// .assertValueCount(2) // +// .assertNoErrors() // +// .assertCompleted() // +// .getOnNextEvents(); +// +// assertThat(people).contains(carter, dave); +// } interface ReactivePersonRepostitory extends ReactiveSortingRepository { Publisher findByLastname(String lastname); } - interface RxJava1PersonRepostitory extends org.springframework.data.repository.Repository { - - Observable findByFirstnameAndLastname(String firstname, String lastname); - - Single findByLastname(String lastname); - - Single findProjectedByLastname(String lastname); - - Single existsById(String id); - - Single existsById(Single id); - } - - interface RxJava2PersonRepostitory extends RxJava2SortingRepository { - - Flowable findByFirstnameAndLastname(String firstname, String lastname); - - Maybe findByLastname(String lastname); - - io.reactivex.Single findProjectedByLastname(Maybe lastname); - - io.reactivex.Observable findProjectedByLastname(Single lastname); - } - - interface RxJava3PersonRepostitory extends RxJava2SortingRepository { + interface RxJava3PersonRepostitory extends RxJava3SortingRepository { io.reactivex.rxjava3.core.Flowable findByFirstnameAndLastname(String firstname, String lastname); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/ReactiveMongoRepositoryConfigurationExtensionUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/ReactiveMongoRepositoryConfigurationExtensionUnitTests.java index 0897369c9..7f771bf1b 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/ReactiveMongoRepositoryConfigurationExtensionUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/ReactiveMongoRepositoryConfigurationExtensionUnitTests.java @@ -34,7 +34,7 @@ import org.springframework.data.repository.config.AnnotationRepositoryConfigurat import org.springframework.data.repository.config.RepositoryConfiguration; import org.springframework.data.repository.config.RepositoryConfigurationSource; import org.springframework.data.repository.reactive.ReactiveCrudRepository; -import org.springframework.data.repository.reactive.RxJava2CrudRepository; +import org.springframework.data.repository.reactive.RxJava3CrudRepository; /** * Unit tests for {@link ReactiveMongoRepositoryConfigurationExtension}. @@ -108,7 +108,7 @@ public class ReactiveMongoRepositoryConfigurationExtensionUnitTests { interface SampleRepository extends ReactiveCrudRepository {} - interface UnannotatedRepository extends RxJava2CrudRepository {} + interface UnannotatedRepository extends RxJava3CrudRepository {} interface StoreRepository extends ReactiveMongoRepository {} } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/custom/CustomReactiveMongoRepository.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/custom/CustomReactiveMongoRepository.java index 003a1589b..b1f16fd0f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/custom/CustomReactiveMongoRepository.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/custom/CustomReactiveMongoRepository.java @@ -16,12 +16,12 @@ package org.springframework.data.mongodb.repository.custom; import org.springframework.data.mongodb.repository.User; -import org.springframework.data.repository.reactive.RxJava2CrudRepository; +import org.springframework.data.repository.reactive.RxJava3CrudRepository; /** * @author Mark Paluch */ public interface CustomReactiveMongoRepository - extends RxJava2CrudRepository, CustomReactiveMongoRepositoryCustom { + extends RxJava3CrudRepository, CustomReactiveMongoRepositoryCustom { }