From 2354b66c763dd62561e239d55433d192f9fb4f6a Mon Sep 17 00:00:00 2001 From: John Willemin Date: Wed, 2 Mar 2016 21:46:34 -0500 Subject: [PATCH] DATAMONGO-1387 - Fix BasicQuery getFieldsObject() inconsistency. We changed BasicQuery to consider its parent getFieldsObject() when not given an explicit fields DBObject. Original Pull Request: #345 CLA: 165520160303021604 (John Willemin) --- .../data/mongodb/core/query/BasicQuery.java | 7 ++++++- .../core/query/BasicQueryUnitTests.java | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicQuery.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicQuery.java index ac36d0de7..f3e37d0a4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicQuery.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicQuery.java @@ -28,6 +28,7 @@ import com.mongodb.util.JSON; * @author Oliver Gierke * @author Christoph Strobl * @author Thomas Darimont + * @author John Willemin */ public class BasicQuery extends Query { @@ -70,7 +71,11 @@ public class BasicQuery extends Query { @Override public DBObject getFieldsObject() { - return fieldsObject; + if(fieldsObject != null) { + return fieldsObject; + } else { + return super.getFieldsObject(); + } } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/BasicQueryUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/BasicQueryUnitTests.java index 1890267c3..5c69e9851 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/BasicQueryUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/BasicQueryUnitTests.java @@ -32,6 +32,7 @@ import com.mongodb.DBObject; * * @author Oliver Gierke * @author Thomas Darimont + * @author John Willemin */ public class BasicQueryUnitTests { @@ -137,4 +138,21 @@ public class BasicQueryUnitTests { assertThat(query1, is(not(equalTo(query2)))); assertThat(query1.hashCode(), is(not(query2.hashCode()))); } + + /** + * @see DATAMONGO-1387 + */ + @Test + public void handlesFieldsIncludeCorrectly() { + + String qry = "{ \"name\" : \"Thomas\"}"; + + BasicQuery query1 = new BasicQuery(qry); + query1.fields().include("name"); + + DBObject fieldsObject = query1.getFieldsObject(); + fieldsObject.containsField("name"); + assertThat(query1.getFieldsObject(), notNullValue()); + assertThat(query1.getFieldsObject().containsField("name"), is(true)); + } }