Skip to content

Commit ca4db45

Browse files
christophstroblThomas Darimont
authored and
Thomas Darimont
committed
DATAMONGO-978 - Derived delete query should pass on type information.
We now pass on type information for derived delete queries to the according delete operation. This propagates the information correctly to the according Before and After events. Before this change the type would have been set to null in case of non collection like method return type. Original pull request: #199.
1 parent e0d0a5d commit ca4db45

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AbstractMongoQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ private Object deleteAndConvertResult(Query query, MongoEntityMetadata<?> metada
391391
return operations.findAllAndRemove(query, metadata.getJavaType());
392392
}
393393

394-
WriteResult writeResult = operations.remove(query, metadata.getCollectionName());
394+
WriteResult writeResult = operations.remove(query, metadata.getJavaType(), metadata.getCollectionName());
395395
return writeResult != null ? writeResult.getN() : 0L;
396396
}
397397
}
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
* @author Oliver Gierke
5555
*/
5656
@RunWith(MockitoJUnitRunner.class)
57-
public class AbstracMongoQueryUnitTests {
57+
public class AbstractMongoQueryUnitTests {
5858

5959
@Mock RepositoryMetadata metadataMock;
6060
@Mock MongoOperations mongoOperationsMock;
@@ -88,7 +88,8 @@ public void testDeleteExecutionCallsRemoveCorreclty() {
8888

8989
createQueryForMethod("deletePersonByLastname", String.class).setDeleteQuery(true).execute(new Object[] { "booh" });
9090

91-
verify(this.mongoOperationsMock, times(1)).remove(Matchers.any(Query.class), Matchers.eq("persons"));
91+
verify(this.mongoOperationsMock, times(1)).remove(Matchers.any(Query.class), Matchers.eq(Person.class),
92+
Matchers.eq("persons"));
9293
verify(this.mongoOperationsMock, times(0)).find(Matchers.any(Query.class), Matchers.any(Class.class),
9394
Matchers.anyString());
9495
}
@@ -122,19 +123,21 @@ public void testDeleteExecutionReturnsZeroWhenWriteResultIsNull() {
122123

123124
/**
124125
* @see DATAMONGO-566
126+
* @see DATAMONGO-978
125127
*/
126128
@Test
127129
public void testDeleteExecutionReturnsNrDocumentsDeletedFromWriteResult() {
128130

129131
when(writeResultMock.getN()).thenReturn(100);
130-
when(this.mongoOperationsMock.remove(Matchers.any(Query.class), Matchers.eq("persons")))
132+
when(this.mongoOperationsMock.remove(Matchers.any(Query.class), Matchers.eq(Person.class), Matchers.eq("persons")))
131133
.thenReturn(writeResultMock);
132134

133135
MongoQueryFake query = createQueryForMethod("deletePersonByLastname", String.class);
134136
query.setDeleteQuery(true);
135137

136138
assertThat(query.execute(new Object[] { "fake" }), is((Object) 100L));
137-
verify(this.mongoOperationsMock, times(1)).remove(Matchers.any(Query.class), Matchers.eq("persons"));
139+
verify(this.mongoOperationsMock, times(1)).remove(Matchers.any(Query.class), Matchers.eq(Person.class),
140+
Matchers.eq("persons"));
138141
}
139142

140143
private MongoQueryFake createQueryForMethod(String methodName, Class<?>... paramTypes) {

0 commit comments

Comments
 (0)