Browse Source

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)
pull/663/head
John Willemin 10 years ago committed by Christoph Strobl
parent
commit
f36baf2e37
  1. 7
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicQuery.java
  2. 18
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/BasicQueryUnitTests.java

7
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicQuery.java

@ -28,6 +28,7 @@ import com.mongodb.util.JSON; @@ -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 { @@ -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

18
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/BasicQueryUnitTests.java

@ -32,6 +32,7 @@ import com.mongodb.DBObject; @@ -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 { @@ -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));
}
}

Loading…
Cancel
Save