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 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..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 @@ -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())); } @@ -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 660548a03e..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 @@ -119,28 +119,38 @@ public void existsByMonoOfIdShouldReturnTrueForExistingObject() { StepVerifier.create(repository.existsById(Mono.just(dave.id))).expectNext(true).verifyComplete(); } + @Test // DATAMONGO-1712 + public void existsByFluxOfIdShouldReturnTrueForExistingObject() { + 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-1712 + public void findByIdByFluxOfIdShouldReturnTrueForExistingObject() { + StepVerifier.create(repository.findById(Flux.just(dave.id, oliver.id))).expectNext(dave).verifyComplete(); + } + @Test // DATAMONGO-1444 - public void findOneByEmptyMonoOfIdShouldReturnEmptyMono() { + public void findByIdByEmptyMonoOfIdShouldReturnEmptyMono() { StepVerifier.create(repository.findById(Mono.empty())).verifyComplete(); } @@ -328,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() {