Skip to content

Commit 0fef041

Browse files
Drop support for RxJava 1 and 2.
Closes: #3839
1 parent 73dbff1 commit 0fef041

File tree

5 files changed

+39
-229
lines changed

5 files changed

+39
-229
lines changed

Diff for: spring-data-mongodb/pom.xml

+1-22
Original file line numberDiff line numberDiff line change
@@ -122,27 +122,6 @@
122122
<optional>true</optional>
123123
</dependency>
124124

125-
<dependency>
126-
<groupId>io.reactivex</groupId>
127-
<artifactId>rxjava</artifactId>
128-
<version>${rxjava}</version>
129-
<optional>true</optional>
130-
</dependency>
131-
132-
<dependency>
133-
<groupId>io.reactivex</groupId>
134-
<artifactId>rxjava-reactive-streams</artifactId>
135-
<version>${rxjava-reactive-streams}</version>
136-
<optional>true</optional>
137-
</dependency>
138-
139-
<dependency>
140-
<groupId>io.reactivex.rxjava2</groupId>
141-
<artifactId>rxjava</artifactId>
142-
<version>${rxjava2}</version>
143-
<optional>true</optional>
144-
</dependency>
145-
146125
<dependency>
147126
<groupId>io.reactivex.rxjava3</groupId>
148127
<artifactId>rxjava</artifactId>
@@ -228,6 +207,7 @@
228207
<scope>provided</scope>
229208
<optional>true</optional>
230209
</dependency>
210+
231211
<dependency>
232212
<groupId>org.glassfish</groupId>
233213
<artifactId>jakarta.el</artifactId>
@@ -236,7 +216,6 @@
236216
<optional>true</optional>
237217
</dependency>
238218

239-
240219
<dependency>
241220
<groupId>jakarta.enterprise</groupId>
242221
<artifactId>jakarta.enterprise.cdi-api</artifactId>

Diff for: spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactoryBean.java

-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
* @author Christoph Strobl
3939
* @since 2.0
4040
* @see org.springframework.data.repository.reactive.ReactiveSortingRepository
41-
* @see org.springframework.data.repository.reactive.RxJava2SortingRepository
4241
* @see org.springframework.data.repository.reactive.RxJava3SortingRepository
4342
*/
4443
public class ReactiveMongoRepositoryFactoryBean<T extends Repository<S, ID>, S, ID extends Serializable>

Diff for: spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ConvertingReactiveMongoRepositoryTests.java

+34-202
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,16 @@
1717

1818
import static org.assertj.core.api.Assertions.*;
1919

20-
import io.reactivex.Flowable;
21-
import io.reactivex.Maybe;
22-
import io.reactivex.observers.TestObserver;
20+
import io.reactivex.rxjava3.observers.TestObserver;
21+
import io.reactivex.rxjava3.core.Observable;
22+
import io.reactivex.rxjava3.core.Single;
2323
import io.reactivex.rxjava3.subscribers.TestSubscriber;
2424
import lombok.Data;
2525
import lombok.NoArgsConstructor;
26+
import org.springframework.data.repository.reactive.RxJava3SortingRepository;
2627
import reactor.core.publisher.Flux;
2728
import reactor.core.publisher.Mono;
2829
import reactor.test.StepVerifier;
29-
import rx.Observable;
30-
import rx.Single;
3130

3231
import java.util.Arrays;
3332
import java.util.List;
@@ -46,7 +45,6 @@
4645
import org.springframework.data.mongodb.core.mapping.Document;
4746
import org.springframework.data.mongodb.repository.config.EnableReactiveMongoRepositories;
4847
import org.springframework.data.repository.reactive.ReactiveSortingRepository;
49-
import org.springframework.data.repository.reactive.RxJava2SortingRepository;
5048
import org.springframework.test.context.ContextConfiguration;
5149
import org.springframework.test.context.junit4.SpringRunner;
5250

@@ -61,8 +59,6 @@ public class ConvertingReactiveMongoRepositoryTests {
6159

6260
@EnableReactiveMongoRepositories(
6361
includeFilters = { @Filter(value = ReactivePersonRepostitory.class, type = FilterType.ASSIGNABLE_TYPE),
64-
@Filter(value = RxJava1PersonRepostitory.class, type = FilterType.ASSIGNABLE_TYPE),
65-
@Filter(value = RxJava2PersonRepostitory.class, type = FilterType.ASSIGNABLE_TYPE),
6662
@Filter(value = RxJava3PersonRepostitory.class, type = FilterType.ASSIGNABLE_TYPE),
6763
@Filter(value = MixedReactivePersonRepostitory.class, type = FilterType.ASSIGNABLE_TYPE) },
6864
considerNestedRepositories = true)
@@ -71,8 +67,6 @@ static class Config {}
7167

7268
@Autowired MixedReactivePersonRepostitory reactiveRepository;
7369
@Autowired ReactivePersonRepostitory reactivePersonRepostitory;
74-
@Autowired RxJava1PersonRepostitory rxJava1PersonRepostitory;
75-
@Autowired RxJava2PersonRepostitory rxJava2PersonRepostitory;
7670
@Autowired RxJava3PersonRepostitory rxJava3PersonRepostitory;
7771

7872
ReactivePerson dave, oliver, carter, boyd, stefan, leroi, alicia;
@@ -106,162 +100,24 @@ public void reactiveStreamsQueryMethodsShouldWork() {
106100
StepVerifier.create(reactivePersonRepostitory.findByLastname(boyd.getLastname())).expectNext(boyd).verifyComplete();
107101
}
108102

109-
@Test // DATAMONGO-1444
110-
public void simpleRxJava1MethodsShouldWork() {
111-
112-
rxJava1PersonRepostitory.existsById(dave.getId()) //
113-
.test() //
114-
.awaitTerminalEvent() //
115-
.assertValue(true) //
116-
.assertNoErrors() //
117-
.assertCompleted();
118-
}
119-
120-
@Test // DATAMONGO-1444
121-
public void existsWithSingleRxJava1IdMethodsShouldWork() {
122-
123-
rxJava1PersonRepostitory.existsById(Single.just(dave.getId())) //
124-
.test() //
125-
.awaitTerminalEvent() //
126-
.assertValue(true) //
127-
.assertNoErrors() //
128-
.assertCompleted();
129-
}
130-
131-
@Test // DATAMONGO-1444
132-
public void singleRxJava1QueryMethodShouldWork() {
133-
134-
rxJava1PersonRepostitory.findByFirstnameAndLastname(dave.getFirstname(), dave.getLastname()) //
135-
.test() //
136-
.awaitTerminalEvent() //
137-
.assertValue(dave) //
138-
.assertNoErrors() //
139-
.assertCompleted();
140-
}
141-
142-
@Test // DATAMONGO-1444
143-
public void singleProjectedRxJava1QueryMethodShouldWork() {
144-
145-
List<ProjectedPerson> people = rxJava1PersonRepostitory.findProjectedByLastname(carter.getLastname()) //
146-
.test() //
147-
.awaitTerminalEvent() //
148-
.assertValueCount(1) //
149-
.assertNoErrors() //
150-
.assertCompleted() //
151-
.getOnNextEvents();
152-
153-
ProjectedPerson projectedPerson = people.get(0);
154-
assertThat(projectedPerson.getFirstname()).isEqualTo(carter.getFirstname());
155-
}
156-
157-
@Test // DATAMONGO-1444
158-
public void observableRxJava1QueryMethodShouldWork() {
159-
160-
rxJava1PersonRepostitory.findByLastname(boyd.getLastname()) //
161-
.test() //
162-
.awaitTerminalEvent() //
163-
.assertValue(boyd) //
164-
.assertNoErrors() //
165-
.assertCompleted() //
166-
.getOnNextEvents();
167-
}
168-
169-
@Test // DATAMONGO-1610
170-
public void simpleRxJava2MethodsShouldWork() {
171-
172-
TestObserver<Boolean> testObserver = rxJava2PersonRepostitory.existsById(dave.getId()).test();
173-
174-
testObserver.awaitTerminalEvent();
175-
testObserver.assertComplete();
176-
testObserver.assertNoErrors();
177-
testObserver.assertValue(true);
178-
}
179-
180-
@Test // DATAMONGO-1610
181-
public void existsWithSingleRxJava2IdMethodsShouldWork() {
182-
183-
TestObserver<Boolean> testObserver = rxJava2PersonRepostitory.existsById(io.reactivex.Single.just(dave.getId()))
184-
.test();
185-
186-
testObserver.awaitTerminalEvent();
187-
testObserver.assertComplete();
188-
testObserver.assertNoErrors();
189-
testObserver.assertValue(true);
190-
}
191-
192-
@Test // DATAMONGO-1610
193-
public void flowableRxJava2QueryMethodShouldWork() {
194-
195-
io.reactivex.subscribers.TestSubscriber<ReactivePerson> testSubscriber = rxJava2PersonRepostitory
196-
.findByFirstnameAndLastname(dave.getFirstname(), dave.getLastname()).test();
197-
198-
testSubscriber.awaitTerminalEvent();
199-
testSubscriber.assertComplete();
200-
testSubscriber.assertNoErrors();
201-
testSubscriber.assertValue(dave);
202-
}
203-
204-
@Test // DATAMONGO-1610
205-
public void singleProjectedRxJava2QueryMethodShouldWork() {
206-
207-
TestObserver<ProjectedPerson> testObserver = rxJava2PersonRepostitory
208-
.findProjectedByLastname(Maybe.just(carter.getLastname())).test();
209-
210-
testObserver.awaitTerminalEvent();
211-
testObserver.assertComplete();
212-
testObserver.assertNoErrors();
213-
214-
testObserver.assertValue(actual -> {
215-
assertThat(actual.getFirstname()).isEqualTo(carter.getFirstname());
216-
return true;
217-
});
218-
}
219-
220-
@Test // DATAMONGO-1610
221-
public void observableProjectedRxJava2QueryMethodShouldWork() {
222-
223-
TestObserver<ProjectedPerson> testObserver = rxJava2PersonRepostitory
224-
.findProjectedByLastname(Single.just(carter.getLastname())).test();
225-
226-
testObserver.awaitTerminalEvent();
227-
testObserver.assertComplete();
228-
testObserver.assertNoErrors();
229-
230-
testObserver.assertValue(actual -> {
231-
assertThat(actual.getFirstname()).isEqualTo(carter.getFirstname());
232-
return true;
233-
});
234-
}
235-
236-
@Test // DATAMONGO-1610
237-
public void maybeRxJava2QueryMethodShouldWork() {
238-
239-
TestObserver<ReactivePerson> testObserver = rxJava2PersonRepostitory.findByLastname(boyd.getLastname()).test();
240-
241-
testObserver.awaitTerminalEvent();
242-
testObserver.assertComplete();
243-
testObserver.assertNoErrors();
244-
testObserver.assertValue(boyd);
245-
}
246-
247103
@Test // DATAMONGO-2558
248-
public void simpleRxJava3MethodsShouldWork() {
104+
public void simpleRxJava3MethodsShouldWork() throws InterruptedException {
249105

250106
TestObserver<Boolean> testObserver = rxJava3PersonRepostitory.existsById(dave.getId()).test();
251107

252-
testObserver.awaitTerminalEvent();
108+
testObserver.await();
253109
testObserver.assertComplete();
254110
testObserver.assertNoErrors();
255111
testObserver.assertValue(true);
256112
}
257113

258114
@Test // DATAMONGO-2558
259-
public void existsWithSingleRxJava3IdMethodsShouldWork() {
115+
public void existsWithSingleRxJava3IdMethodsShouldWork() throws InterruptedException {
260116

261-
TestObserver<Boolean> testObserver = rxJava3PersonRepostitory.existsById(io.reactivex.Single.just(dave.getId()))
117+
TestObserver<Boolean> testObserver = rxJava3PersonRepostitory.existsById(Single.just(dave.getId()))
262118
.test();
263119

264-
testObserver.awaitTerminalEvent();
120+
testObserver.await();
265121
testObserver.assertComplete();
266122
testObserver.assertNoErrors();
267123
testObserver.assertValue(true);
@@ -323,17 +179,17 @@ public void maybeRxJava3QueryMethodShouldWork() throws InterruptedException {
323179
testObserver.assertValue(boyd);
324180
}
325181

326-
@Test // DATAMONGO-1444
327-
public void mixedRepositoryShouldWork() {
328-
329-
reactiveRepository.findByLastname(boyd.getLastname()) //
330-
.test() //
331-
.awaitTerminalEvent() //
332-
.assertValue(boyd) //
333-
.assertNoErrors() //
334-
.assertCompleted() //
335-
.getOnNextEvents();
336-
}
182+
// @Test // DATAMONGO-1444
183+
// public void mixedRepositoryShouldWork() {
184+
//
185+
// reactiveRepository.findByLastname(boyd.getLastname()) //
186+
// .test() //
187+
// .awaitTerminalEvent() //
188+
// .assertValue(boyd) //
189+
// .assertNoErrors() //
190+
// .assertCompleted() //
191+
// .getOnNextEvents();
192+
// }
337193

338194
@Test // DATAMONGO-1444
339195
public void shouldFindOneBySingleOfLastName() {
@@ -352,50 +208,26 @@ public void shouldFindByObservableOfLastNameIn() {
352208
.verifyComplete();
353209
}
354210

355-
@Test // DATAMONGO-1444
356-
public void shouldFindByPublisherOfLastNameInAndAgeGreater() {
357-
358-
List<ReactivePerson> people = reactiveRepository
359-
.findByLastnameInAndAgeGreaterThan(Flux.just(carter.getLastname(), dave.getLastname()), 41).test() //
360-
.awaitTerminalEvent() //
361-
.assertValueCount(2) //
362-
.assertNoErrors() //
363-
.assertCompleted() //
364-
.getOnNextEvents();
365-
366-
assertThat(people).contains(carter, dave);
367-
}
211+
// @Test // DATAMONGO-1444
212+
// public void shouldFindByPublisherOfLastNameInAndAgeGreater() {
213+
//
214+
// List<ReactivePerson> people = reactiveRepository
215+
// .findByLastnameInAndAgeGreaterThan(Flux.just(carter.getLastname(), dave.getLastname()), 41).test() //
216+
// .awaitTerminalEvent() //
217+
// .assertValueCount(2) //
218+
// .assertNoErrors() //
219+
// .assertCompleted() //
220+
// .getOnNextEvents();
221+
//
222+
// assertThat(people).contains(carter, dave);
223+
// }
368224

369225
interface ReactivePersonRepostitory extends ReactiveSortingRepository<ReactivePerson, String> {
370226

371227
Publisher<ReactivePerson> findByLastname(String lastname);
372228
}
373229

374-
interface RxJava1PersonRepostitory extends org.springframework.data.repository.Repository<ReactivePerson, String> {
375-
376-
Observable<ReactivePerson> findByFirstnameAndLastname(String firstname, String lastname);
377-
378-
Single<ReactivePerson> findByLastname(String lastname);
379-
380-
Single<ProjectedPerson> findProjectedByLastname(String lastname);
381-
382-
Single<Boolean> existsById(String id);
383-
384-
Single<Boolean> existsById(Single<String> id);
385-
}
386-
387-
interface RxJava2PersonRepostitory extends RxJava2SortingRepository<ReactivePerson, String> {
388-
389-
Flowable<ReactivePerson> findByFirstnameAndLastname(String firstname, String lastname);
390-
391-
Maybe<ReactivePerson> findByLastname(String lastname);
392-
393-
io.reactivex.Single<ProjectedPerson> findProjectedByLastname(Maybe<String> lastname);
394-
395-
io.reactivex.Observable<ProjectedPerson> findProjectedByLastname(Single<String> lastname);
396-
}
397-
398-
interface RxJava3PersonRepostitory extends RxJava2SortingRepository<ReactivePerson, String> {
230+
interface RxJava3PersonRepostitory extends RxJava3SortingRepository<ReactivePerson, String> {
399231

400232
io.reactivex.rxjava3.core.Flowable<ReactivePerson> findByFirstnameAndLastname(String firstname, String lastname);
401233

Diff for: spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/ReactiveMongoRepositoryConfigurationExtensionUnitTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import org.springframework.data.repository.config.RepositoryConfiguration;
3535
import org.springframework.data.repository.config.RepositoryConfigurationSource;
3636
import org.springframework.data.repository.reactive.ReactiveCrudRepository;
37-
import org.springframework.data.repository.reactive.RxJava2CrudRepository;
37+
import org.springframework.data.repository.reactive.RxJava3CrudRepository;
3838

3939
/**
4040
* Unit tests for {@link ReactiveMongoRepositoryConfigurationExtension}.
@@ -108,7 +108,7 @@ static class Store {}
108108

109109
interface SampleRepository extends ReactiveCrudRepository<Sample, Long> {}
110110

111-
interface UnannotatedRepository extends RxJava2CrudRepository<Store, Long> {}
111+
interface UnannotatedRepository extends RxJava3CrudRepository<Store, Long> {}
112112

113113
interface StoreRepository extends ReactiveMongoRepository<Store, Long> {}
114114
}

Diff for: spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/custom/CustomReactiveMongoRepository.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
package org.springframework.data.mongodb.repository.custom;
1717

1818
import org.springframework.data.mongodb.repository.User;
19-
import org.springframework.data.repository.reactive.RxJava2CrudRepository;
19+
import org.springframework.data.repository.reactive.RxJava3CrudRepository;
2020

2121
/**
2222
* @author Mark Paluch
2323
*/
2424
public interface CustomReactiveMongoRepository
25-
extends RxJava2CrudRepository<User, String>, CustomReactiveMongoRepositoryCustom {
25+
extends RxJava3CrudRepository<User, String>, CustomReactiveMongoRepositoryCustom {
2626

2727
}

0 commit comments

Comments
 (0)