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)
This commit is contained in:
John Willemin
2016-03-02 21:46:34 -05:00
committed by Christoph Strobl
parent 6068f3243a
commit 119692c979
2 changed files with 24 additions and 1 deletions

View File

@@ -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

View File

@@ -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));
}
}