Browse Source

DATAMONGO-1718 - Polishing.

Add test and hand over Object.class as placeholder for required domain type.

Original Pull Request: #469
pull/482/head
Christoph Strobl 9 years ago
parent
commit
e5c634c8f6
  1. 2
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java
  2. 43
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java

2
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java

@ -1499,7 +1499,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { @@ -1499,7 +1499,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware {
*/
@Override
public <T> List<T> findAllAndRemove(Query query, String collectionName) {
return findAllAndRemove(query, null, collectionName);
return (List<T>) findAllAndRemove(query, Object.class, collectionName);
}
/*

43
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java

@ -3264,6 +3264,28 @@ public class MongoTemplateTests { @@ -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<Sample> 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 { @@ -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 {

Loading…
Cancel
Save