From ee4df3a25b681e32297f3b6c0fe31a798bba1f88 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Wed, 24 Sep 2014 13:04:23 +0200 Subject: [PATCH 1/2] DATAMONGO-1058 - DBRef should respect explicit field name. Prepare issue branch. --- pom.xml | 2 +- spring-data-mongodb-cross-store/pom.xml | 4 ++-- spring-data-mongodb-distribution/pom.xml | 2 +- spring-data-mongodb-log4j/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 75745189ed..8781e0b02e 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 1.7.0.BUILD-SNAPSHOT + 1.7.0.DATAMONGO-1058-SNAPSHOT pom Spring Data MongoDB diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml index 40e8a0f253..f16135be24 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 - 1.7.0.BUILD-SNAPSHOT + 1.7.0.DATAMONGO-1058-SNAPSHOT ../pom.xml @@ -48,7 +48,7 @@ org.springframework.data spring-data-mongodb - 1.7.0.BUILD-SNAPSHOT + 1.7.0.DATAMONGO-1058-SNAPSHOT diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index 13110137b6..67c486a51a 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 - 1.7.0.BUILD-SNAPSHOT + 1.7.0.DATAMONGO-1058-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-log4j/pom.xml b/spring-data-mongodb-log4j/pom.xml index 6ff09e4577..5fa9d704a4 100644 --- a/spring-data-mongodb-log4j/pom.xml +++ b/spring-data-mongodb-log4j/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 1.7.0.BUILD-SNAPSHOT + 1.7.0.DATAMONGO-1058-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index bfcacd66eb..210ba4403e 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -11,7 +11,7 @@ org.springframework.data spring-data-mongodb-parent - 1.7.0.BUILD-SNAPSHOT + 1.7.0.DATAMONGO-1058-SNAPSHOT ../pom.xml From 62636176ffc68f8723c4e8e6135ec172a42a88da Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Wed, 24 Sep 2014 13:38:16 +0200 Subject: [PATCH 2/2] DATAMONGO-1058 - DBRef should respect explicit field name. We now use property.getFieldName() for mapping DbRefs. This assures we also capture explicitly defined names set via @Field. --- .../core/convert/MappingMongoConverter.java | 2 +- .../data/mongodb/core/MongoTemplateTests.java | 1 + .../MappingMongoConverterUnitTests.java | 28 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java index 2790dd5b87..cb3e1c1a2d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java @@ -284,7 +284,7 @@ public void doWithPersistentProperty(MongoPersistentProperty prop) { public void doWithAssociation(Association association) { final MongoPersistentProperty property = association.getInverse(); - Object value = dbo.get(property.getName()); + Object value = dbo.get(property.getFieldName()); if (value == null) { return; 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 f937da2535..a6076cb2f9 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 @@ -2791,6 +2791,7 @@ static class DocumentWithDBRefCollection { @Id public String id; + @Field("db_ref_list")/** @see DATAMONGO-1058 */ @org.springframework.data.mongodb.core.mapping.DBRef// public List dbRefAnnotatedList; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java index 434d4bb4f7..0cdb405ade 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java @@ -50,6 +50,7 @@ import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.aop.framework.ProxyFactory; import org.springframework.beans.factory.annotation.Value; @@ -1853,6 +1854,21 @@ public void rejectsBasicDbListToBeConvertedIntoComplexType() { converter.read(Item.class, source); } + /** + * @see DATAMONGO-1058 + */ + @Test + public void readShouldRespectExplicitFieldNameForDbRef() { + + BasicDBObject source = new BasicDBObject(); + source.append("explict-name-for-db-ref", new DBRef(mock(DB.class), "foo", "1")); + + converter.read(ClassWithExplicitlyNamedDBRefProperty.class, source); + + verify(resolver, times(1)).resolveDbRef(Mockito.any(MongoPersistentProperty.class), Mockito.any(DBRef.class), + Mockito.any(DbRefResolverCallback.class), Mockito.any(DbRefProxyHandler.class)); + } + static class GenericType { T content; } @@ -2102,4 +2118,16 @@ class ClassWithTextScoreProperty { @TextScore Float score; } + + class ClassWithExplicitlyNamedDBRefProperty { + + @Field("explict-name-for-db-ref")// + @org.springframework.data.mongodb.core.mapping.DBRef// + ClassWithIntId dbRefProperty; + + public ClassWithIntId getDbRefProperty() { + return dbRefProperty; + } + + } }