From 533d21281e06e83535bc0630eecc152d3cf5fc48 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Tue, 13 Nov 2012 18:23:02 +0100 Subject: [PATCH] DATAMONGO-570 - Guard against null values in references. QueryMapper does not try to convert null values into DBRef objects anymore but returns the plain null value as is. --- .../data/mongodb/core/convert/QueryMapper.java | 2 +- .../mongodb/core/convert/QueryMapperUnitTests.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java index 279b93bd3..1df9f9be7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java @@ -263,7 +263,7 @@ public class QueryMapper { return result; } - return source instanceof DBRef ? source : converter.toDBRef(source, property); + return source == null || source instanceof DBRef ? source : converter.toDBRef(source, property); } /** diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java index 7478c276d..7c0f44525 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java @@ -335,6 +335,18 @@ public class QueryMapperUnitTests { assertThat(reference.containsField("$in"), is(true)); } + /** + * @see DATAMONGO-570 + */ + @Test + public void correctlyConvertsNullReference() { + + Query query = query(where("reference").is(null)); + DBObject object = mapper.getMappedObject(query.getQueryObject(), context.getPersistentEntity(WithDBRef.class)); + + assertThat(object.get("reference"), is(nullValue())); + } + class IdWrapper { Object id; }