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 d513ddd19..fb0330d5a 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 class SimpleReactiveMongoRepository implement */ @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 class SimpleReactiveMongoRepository implement */ @Override public Flux findAll(Example example) { + + Assert.notNull(example, "Example must not be null!"); + return findAll(example, Sort.unsorted()); } @@ -327,6 +333,19 @@ public class SimpleReactiveMongoRepository implement .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 152472636..d4d6c5aa1 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 class SimpleReactiveMongoRepositoryTests implements BeanClassLoaderAware, } @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 class SimpleReactiveMongoRepositoryTests implements BeanClassLoaderAware, 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 class SimpleReactiveMongoRepositoryTests implements BeanClassLoaderAware, 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() {