From e5c634c8f6f519f395092baf2947a85ce2e4509b Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Fri, 16 Jun 2017 11:35:09 +0200 Subject: [PATCH] DATAMONGO-1718 - Polishing. Add test and hand over Object.class as placeholder for required domain type. Original Pull Request: #469 --- .../data/mongodb/core/MongoTemplate.java | 2 +- .../data/mongodb/core/MongoTemplateTests.java | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 116e0d5d3..5a4c3457d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -1499,7 +1499,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { */ @Override public List findAllAndRemove(Query query, String collectionName) { - return findAllAndRemove(query, null, collectionName); + return (List) findAllAndRemove(query, Object.class, collectionName); } /* diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java index fe1d068c8..3ca84fe20 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java @@ -3264,6 +3264,28 @@ public class MongoTemplateTests { assertThat(loaded.getValue(), instanceOf(decimal128Type)); } + /** + * @see DATAMONGO-1718 + */ + @Test + public void findAndRemoveAllWithoutExplicitDomainTypeShouldRemoveAndReturnEntitiesCorrectly() { + + Sample jon = new Sample("1", "jon snow"); + Sample bran = new Sample("2", "bran stark"); + Sample rickon = new Sample("3", "rickon stark"); + + template.save(jon); + template.save(bran); + template.save(rickon); + + List result = template.findAllAndRemove(query(where("field").regex(".*stark$")), + template.determineCollectionName(Sample.class)); + + assertThat(result, hasSize(2)); + assertThat(result, containsInAnyOrder(bran, rickon)); + assertThat(template.count(new BasicQuery("{}"), template.determineCollectionName(Sample.class)), is(equalTo(1L))); + } + static class TypeWithNumbers { @Id String id; @@ -3435,6 +3457,27 @@ public class MongoTemplateTests { this.id = id; this.field = field; } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + Sample sample = (Sample) o; + + if (id != null ? !id.equals(sample.id) : sample.id != null) + return false; + return field != null ? field.equals(sample.field) : sample.field == null; + } + + @Override + public int hashCode() { + int result = id != null ? id.hashCode() : 0; + result = 31 * result + (field != null ? field.hashCode() : 0); + return result; + } } static class TestClass {