From 7183e4fa3028828d310ae9af3568efc91f668445 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 20 Nov 2017 08:43:54 +0100 Subject: [PATCH 1/2] DATAMONGO-1823 - Prepare issue branch. --- pom.xml | 2 +- spring-data-mongodb-benchmarks/pom.xml | 2 +- spring-data-mongodb-cross-store/pom.xml | 4 ++-- spring-data-mongodb-distribution/pom.xml | 2 +- spring-data-mongodb/pom.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 25a7ba08f5..f18ac6d06f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 2.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-1823-SNAPSHOT pom Spring Data MongoDB diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml index 9baccaa905..9b0705645d 100644 --- a/spring-data-mongodb-benchmarks/pom.xml +++ b/spring-data-mongodb-benchmarks/pom.xml @@ -7,7 +7,7 @@ org.springframework.data spring-data-mongodb-parent - 2.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-1823-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml index 8ba393d38b..2f06fe5ad0 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.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-1823-SNAPSHOT ../pom.xml @@ -49,7 +49,7 @@ org.springframework.data spring-data-mongodb - 2.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-1823-SNAPSHOT diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index e5c865ea08..aa886335a3 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.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-1823-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 41b711f7c8..79336bcf27 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.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-1823-SNAPSHOT ../pom.xml From c12f85663e8351a4f4825f111dd612a014610fd5 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 20 Nov 2017 09:15:12 +0100 Subject: [PATCH 2/2] DATAMONGO-1823 - Fix emitting ApplicationEvents for finder methods. --- .../data/mongodb/core/MongoTemplate.java | 7 +++++- .../event/ApplicationContextEventTests.java | 24 ++++++++++++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) 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 67b1cdba86..2e2e6076d1 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 @@ -2813,10 +2813,15 @@ public T doWith(@Nullable Document object) { Class typeToRead = targetType.isInterface() || targetType.isAssignableFrom(entityType) ? entityType : targetType; + + if (null != object) { + maybeEmitEvent(new AfterLoadEvent(object, targetType, collectionName)); + } + Object source = reader.read(typeToRead, object); Object result = targetType.isInterface() ? projectionFactory.createProjection(targetType, source) : source; - if (result == null) { + if (result != null) { maybeEmitEvent(new AfterConvertEvent<>(object, result, collectionName)); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java index a6631da3fb..03d616c647 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java @@ -19,10 +19,12 @@ import static org.hamcrest.core.Is.*; import static org.hamcrest.core.IsEqual.*; import static org.junit.Assert.*; -import static org.springframework.data.mongodb.core.DocumentTestUtils.assertTypeHint; +import static org.springframework.data.mongodb.core.DocumentTestUtils.*; import static org.springframework.data.mongodb.core.query.Criteria.*; import static org.springframework.data.mongodb.core.query.Query.*; +import lombok.Data; + import java.net.UnknownHostException; import java.util.Arrays; import java.util.LinkedHashMap; @@ -46,8 +48,6 @@ import com.mongodb.MongoClient; import com.mongodb.WriteConcern; -import lombok.Data; - /** * Integration test for Mapping Events. * @@ -390,6 +390,24 @@ public void publishesAfterLoadAndAfterConvertEventsForLazyLoadingMapOfDBRef() th is(equalTo(RELATED_COLLECTION_NAME))); } + @Test // DATAMONGO-1823 + public void publishesAfterConvertEventForFindQueriesUsingProjections() { + + PersonPojoStringId entity = new PersonPojoStringId("1", "Text"); + template.insert(entity); + + template.query(PersonPojoStringId.class).matching(query(where("id").is(entity.getId()))).all(); + + assertThat(simpleMappingEventListener.onAfterLoadEvents.size(), is(1)); + assertThat(simpleMappingEventListener.onAfterLoadEvents.get(0).getCollectionName(), is(COLLECTION_NAME)); + + assertThat(simpleMappingEventListener.onBeforeConvertEvents.size(), is(1)); + assertThat(simpleMappingEventListener.onBeforeConvertEvents.get(0).getCollectionName(), is(COLLECTION_NAME)); + + assertThat(simpleMappingEventListener.onAfterConvertEvents.size(), is(1)); + assertThat(simpleMappingEventListener.onAfterConvertEvents.get(0).getCollectionName(), is(COLLECTION_NAME)); + } + private void comparePersonAndDocument(PersonPojoStringId p, PersonPojoStringId p2, org.bson.Document document) { assertEquals(p.getId(), p2.getId());