From 19879b8dabc2370e93a7008f0df78599c683db42 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Thu, 12 Jan 2012 12:23:51 +0100 Subject: [PATCH] DATAMONGO-376 - Fixed potential NPE in SpringDataMongodbSerializer. --- .../repository/support/QueryDslMongoRepository.java | 2 +- .../support/SpringDataMongodbSerializerUnitTests.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java index e0f42534e..8980ddabf 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java @@ -252,7 +252,7 @@ public class QueryDslMongoRepository extends SimpleM Path parent = metadata.getParent(); MongoPersistentEntity entity = mappingContext.getPersistentEntity(parent.getType()); MongoPersistentProperty property = entity.getPersistentProperty(metadata.getExpression().toString()); - return property.getFieldName(); + return property == null ? super.getKeyForPath(expr, metadata) : property.getFieldName(); } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializerUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializerUnitTests.java index 36ad6d5c9..1b36291f1 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializerUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializerUnitTests.java @@ -28,6 +28,7 @@ import org.springframework.data.mongodb.core.convert.MappingMongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.mapping.Field; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; +import org.springframework.data.mongodb.repository.QAddress; import org.springframework.data.mongodb.repository.QPerson; import org.springframework.data.mongodb.repository.support.QueryDslMongoRepository.SpringDataMongodbSerializer; @@ -87,6 +88,16 @@ public class SpringDataMongodbSerializerUnitTests { assertThat(value, is(reference)); } + /** + * @see DATAMONGO-376 + */ + @Test + public void returnsEmptyStringIfNoPathExpressionIsGiven() { + + QAddress address = QPerson.person.shippingAddresses.any(); + assertThat(serializer.getKeyForPath(address, address.getMetadata()), is("")); + } + class Address { String street; @Field("zip_code")