From d95407cf7d433c6272153e2c57d5552fc666de46 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 9 Jun 2017 11:18:32 +0200 Subject: [PATCH 1/3] DATAMONGO-1712 - Adopt to ReactiveCrudRepository.findById(Publisher) and existsById(Publisher). Prepare issue branch. --- pom.xml | 4 ++-- spring-data-mongodb-cross-store/pom.xml | 4 ++-- spring-data-mongodb-distribution/pom.xml | 2 +- spring-data-mongodb-log4j/pom.xml | 2 +- spring-data-mongodb/pom.xml | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index cb4e66d37e..a494ea4a18 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 2.0.0.BUILD-SNAPSHOT + 2.0.0.DATAMONGO-1712-SNAPSHOT pom Spring Data MongoDB @@ -28,7 +28,7 @@ multi spring-data-mongodb - 2.0.0.BUILD-SNAPSHOT + 2.0.0.DATACMNS-1063-SNAPSHOT 3.4.2 1.4.0 diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml index 4a49168713..0718404807 100644 --- a/spring-data-mongodb-cross-store/pom.xml +++ b/spring-data-mongodb-cross-store/pom.xml @@ -6,7 +6,7 @@ org.springframework.data spring-data-mongodb-parent - 2.0.0.BUILD-SNAPSHOT + 2.0.0.DATAMONGO-1712-SNAPSHOT ../pom.xml @@ -48,7 +48,7 @@ org.springframework.data spring-data-mongodb - 2.0.0.BUILD-SNAPSHOT + 2.0.0.DATAMONGO-1712-SNAPSHOT diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index 750ed23aa8..1525c1a460 100644 --- a/spring-data-mongodb-distribution/pom.xml +++ b/spring-data-mongodb-distribution/pom.xml @@ -13,7 +13,7 @@ org.springframework.data spring-data-mongodb-parent - 2.0.0.BUILD-SNAPSHOT + 2.0.0.DATAMONGO-1712-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-log4j/pom.xml b/spring-data-mongodb-log4j/pom.xml index 50d0a6454a..81a3536c69 100644 --- a/spring-data-mongodb-log4j/pom.xml +++ b/spring-data-mongodb-log4j/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 2.0.0.BUILD-SNAPSHOT + 2.0.0.DATAMONGO-1712-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 99ef83a54b..478f9b9a1f 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -11,7 +11,7 @@ org.springframework.data spring-data-mongodb-parent - 2.0.0.BUILD-SNAPSHOT + 2.0.0.DATAMONGO-1712-SNAPSHOT ../pom.xml From 4af2549aa028429017a5535ac83cac175b65381a Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 9 Jun 2017 11:30:19 +0200 Subject: [PATCH 2/3] DATAMONGO-1712 - Adopt to ReactiveCrudRepository.findById(Publisher) and existsById(Publisher). Related ticket: DATACMNS-1063. --- .../support/SimpleReactiveMongoRepository.java | 16 ++++++++-------- .../SimpleReactiveMongoRepositoryTests.java | 18 ++++++++++++++---- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java index 9560f9e6ab..d513ddd191 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java @@ -67,14 +67,14 @@ public Mono findById(ID id) { /* * (non-Javadoc) - * @see org.springframework.data.repository.reactive.ReactiveCrudRepository#findById(reactor.core.publisher.Mono) + * @see org.springframework.data.repository.reactive.ReactiveCrudRepository#findById(org.reactivestreams.Publisher) */ @Override - public Mono findById(Mono mono) { + public Mono findById(Publisher publisher) { - Assert.notNull(mono, "The given id must not be null!"); + Assert.notNull(publisher, "The given id must not be null!"); - return mono.flatMap( + return Mono.from(publisher).flatMap( id -> mongoOperations.findById(id, entityInformation.getJavaType(), entityInformation.getCollectionName())); } @@ -115,14 +115,14 @@ public Mono existsById(ID id) { /* * (non-Javadoc) - * @see org.springframework.data.repository.reactive.ReactiveCrudRepository#existsById(reactor.core.publisher.Mono) + * @see org.springframework.data.repository.reactive.ReactiveCrudRepository#existsById(org.reactivestreams.Publisher) */ @Override - public Mono existsById(Mono mono) { + public Mono existsById(Publisher publisher) { - Assert.notNull(mono, "The given id must not be null!"); + Assert.notNull(publisher, "The given id must not be null!"); - return mono.flatMap(id -> mongoOperations.exists(getIdQuery(id), entityInformation.getJavaType(), + return Mono.from(publisher).flatMap(id -> mongoOperations.exists(getIdQuery(id), entityInformation.getJavaType(), entityInformation.getCollectionName())); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/SimpleReactiveMongoRepositoryTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/SimpleReactiveMongoRepositoryTests.java index 660548a03e..1524726362 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/SimpleReactiveMongoRepositoryTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/SimpleReactiveMongoRepositoryTests.java @@ -119,28 +119,38 @@ public void existsByMonoOfIdShouldReturnTrueForExistingObject() { StepVerifier.create(repository.existsById(Mono.just(dave.id))).expectNext(true).verifyComplete(); } + @Test // DATAMONGO-1712 + public void existsByFlusOfIdShouldReturnTrueForExistingObject() { + StepVerifier.create(repository.existsById(Flux.just(dave.id, oliver.id))).expectNext(true).verifyComplete(); + } + @Test // DATAMONGO-1444 public void existsByEmptyMonoOfIdShouldReturnEmptyMono() { StepVerifier.create(repository.existsById(Mono.empty())).verifyComplete(); } @Test // DATAMONGO-1444 - public void findOneShouldReturnObject() { + public void findByIdShouldReturnObject() { StepVerifier.create(repository.findById(dave.id)).expectNext(dave).verifyComplete(); } @Test // DATAMONGO-1444 - public void findOneShouldCompleteWithoutValueForAbsentObject() { + public void findByIdShouldCompleteWithoutValueForAbsentObject() { StepVerifier.create(repository.findById("unknown")).verifyComplete(); } @Test // DATAMONGO-1444 - public void findOneByMonoOfIdShouldReturnTrueForExistingObject() { + public void findByIdByMonoOfIdShouldReturnTrueForExistingObject() { StepVerifier.create(repository.findById(Mono.just(dave.id))).expectNext(dave).verifyComplete(); } @Test // DATAMONGO-1444 - public void findOneByEmptyMonoOfIdShouldReturnEmptyMono() { + public void findByIdByFluxOfIdShouldReturnTrueForExistingObject() { + StepVerifier.create(repository.findById(Flux.just(dave.id, oliver.id))).expectNext(dave).verifyComplete(); + } + + @Test // DATAMONGO-1444 + public void findByIdByEmptyMonoOfIdShouldReturnEmptyMono() { StepVerifier.create(repository.findById(Mono.empty())).verifyComplete(); } From f0d43d3b3aa6cb4037843cf775d19df6adfc1f85 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 13 Jun 2017 10:33:58 +0200 Subject: [PATCH 3/3] DATAMONGO-1712 - Polishing. Follow ReactiveCrudRepository contract, fix spellin, update issue references and add deleteById(Publisher). Related ticket: DATACMNS-1063. --- .../SimpleReactiveMongoRepository.java | 19 +++++++++++++++++ .../SimpleReactiveMongoRepositoryTests.java | 21 +++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java index d513ddd191..fb0330d5ae 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java @@ -180,6 +180,9 @@ public Flux findAllById(Publisher ids) { */ @Override public Flux findAll(Sort sort) { + + Assert.notNull(sort, "Sort must not be null!"); + return findAll(new Query().with(sort)); } @@ -204,6 +207,9 @@ public Flux findAll(Example example, Sort sort) { */ @Override public Flux findAll(Example example) { + + Assert.notNull(example, "Example must not be null!"); + return findAll(example, Sort.unsorted()); } @@ -327,6 +333,19 @@ public Mono deleteById(ID id) { .remove(getIdQuery(id), entityInformation.getJavaType(), entityInformation.getCollectionName()).then(); } + /* + * (non-Javadoc) + * @see org.springframework.data.repository.reactive.ReactiveCrudRepository#deleteById(org.reactivestreams.Publisher) + */ + @Override + public Mono deleteById(Publisher publisher) { + + Assert.notNull(publisher, "Id must not be null!"); + + return Mono.from(publisher).flatMap(id -> mongoOperations.remove(getIdQuery(id), entityInformation.getJavaType(), + entityInformation.getCollectionName())).then(); + } + /* * (non-Javadoc) * @see org.springframework.data.repository.reactive.ReactiveCrudRepository#delete(java.lang.Object) diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/SimpleReactiveMongoRepositoryTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/SimpleReactiveMongoRepositoryTests.java index 1524726362..d4d6c5aa19 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/SimpleReactiveMongoRepositoryTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/SimpleReactiveMongoRepositoryTests.java @@ -120,7 +120,7 @@ public void existsByMonoOfIdShouldReturnTrueForExistingObject() { } @Test // DATAMONGO-1712 - public void existsByFlusOfIdShouldReturnTrueForExistingObject() { + public void existsByFluxOfIdShouldReturnTrueForExistingObject() { StepVerifier.create(repository.existsById(Flux.just(dave.id, oliver.id))).expectNext(true).verifyComplete(); } @@ -144,7 +144,7 @@ public void findByIdByMonoOfIdShouldReturnTrueForExistingObject() { StepVerifier.create(repository.findById(Mono.just(dave.id))).expectNext(dave).verifyComplete(); } - @Test // DATAMONGO-1444 + @Test // DATAMONGO-1712 public void findByIdByFluxOfIdShouldReturnTrueForExistingObject() { StepVerifier.create(repository.findById(Flux.just(dave.id, oliver.id))).expectNext(dave).verifyComplete(); } @@ -338,6 +338,23 @@ public void deleteByIdShouldRemoveEntity() { StepVerifier.create(repository.findById(dave.id)).verifyComplete(); } + @Test // DATAMONGO-1712 + public void deleteByIdUsingMonoShouldRemoveEntity() { + + StepVerifier.create(repository.deleteById(Mono.just(dave.id))).verifyComplete(); + + StepVerifier.create(repository.existsById(dave.id)).expectNext(false).verifyComplete(); + } + + @Test // DATAMONGO-1712 + public void deleteByIdUsingFluxShouldRemoveEntity() { + + StepVerifier.create(repository.deleteById(Flux.just(dave.id, oliver.id))).verifyComplete(); + + StepVerifier.create(repository.existsById(dave.id)).expectNext(false).verifyComplete(); + StepVerifier.create(repository.existsById(oliver.id)).expectNext(true).verifyComplete(); + } + @Test // DATAMONGO-1444 public void deleteShouldRemoveEntity() {