mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-03 09:29:11 +00:00
Query DSL: Remove duplicate code in AndQueryParser
When parsing inner array of filters, AndQueryParser seems to check for correct "filters" field name but then does the same kind of operation in the `else` branch of the stament. This seems like it can be removed.
This commit is contained in:
parent
397a4305ad
commit
14ce6c36c6
@ -73,12 +73,6 @@ public class AndQueryParser extends BaseQueryParser<AndQueryBuilder> {
|
|||||||
QueryBuilder filter = parseContext.parseInnerFilterToQueryBuilder();
|
QueryBuilder filter = parseContext.parseInnerFilterToQueryBuilder();
|
||||||
queries.add(filter);
|
queries.add(filter);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
queriesFound = true;
|
|
||||||
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
|
|
||||||
QueryBuilder filter = parseContext.parseInnerFilterToQueryBuilder();
|
|
||||||
queries.add(filter);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else if (token.isValue()) {
|
} else if (token.isValue()) {
|
||||||
if ("_name".equals(currentFieldName)) {
|
if ("_name".equals(currentFieldName)) {
|
||||||
|
@ -31,6 +31,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.*;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.equalTo;
|
import static org.hamcrest.CoreMatchers.equalTo;
|
||||||
import static org.hamcrest.CoreMatchers.instanceOf;
|
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||||
import static org.hamcrest.CoreMatchers.nullValue;
|
import static org.hamcrest.CoreMatchers.nullValue;
|
||||||
@ -116,4 +118,38 @@ public class AndQueryBuilderTest extends BaseQueryTestCase<AndQueryBuilder> {
|
|||||||
}
|
}
|
||||||
assertValidate(andQuery, totalExpectedErrors);
|
assertValidate(andQuery, totalExpectedErrors);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testParsingToplevelArray() throws IOException {
|
||||||
|
QueryParseContext context = createParseContext();
|
||||||
|
String queryString = "{ \"and\" : [ { \"match_all\" : {} } ] }";
|
||||||
|
XContentParser parser = XContentFactory.xContent(queryString).createParser(queryString);
|
||||||
|
context.reset(parser);
|
||||||
|
assertThat(parser.nextToken(), is(XContentParser.Token.START_OBJECT));
|
||||||
|
assertThat(parser.nextToken(), is(XContentParser.Token.FIELD_NAME));
|
||||||
|
assertThat(parser.currentName(), is(AndQueryBuilder.NAME));
|
||||||
|
parser.nextToken();
|
||||||
|
AndQueryBuilder queryBuilder = (AndQueryBuilder) context.queryParser(AndQueryBuilder.NAME).fromXContent(context);
|
||||||
|
assertThat(queryBuilder.innerQueries().get(0), equalTo((QueryBuilder) new MatchAllQueryBuilder()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testParsingFiltersArray() throws IOException {
|
||||||
|
QueryParseContext context = createParseContext();
|
||||||
|
String queryString = "{ \"and\" : { \"filters\" : [ { \"match_all\" : {} } ], \"boost\" : 0.7 } }";
|
||||||
|
XContentParser parser = XContentFactory.xContent(queryString).createParser(queryString);
|
||||||
|
context.reset(parser);
|
||||||
|
assertQueryHeader(parser, AndQueryBuilder.NAME);
|
||||||
|
AndQueryBuilder queryBuilder = (AndQueryBuilder) context.queryParser(AndQueryBuilder.NAME).fromXContent(context);
|
||||||
|
assertThat(queryBuilder.innerQueries().get(0), equalTo((QueryBuilder) new MatchAllQueryBuilder()));
|
||||||
|
assertThat(queryBuilder.boost(), equalTo(0.7f));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=QueryParsingException.class)
|
||||||
|
public void testParsingExceptionNonFiltersElementArray() throws IOException {
|
||||||
|
QueryParseContext context = createParseContext();
|
||||||
|
String queryString = "{ \"and\" : { \"whatever_filters\" : [ { \"match_all\" : {} } ] } }";
|
||||||
|
XContentParser parser = XContentFactory.xContent(queryString).createParser(queryString);
|
||||||
|
context.reset(parser);
|
||||||
|
assertQueryHeader(parser, AndQueryBuilder.NAME);
|
||||||
|
context.queryParser(AndQueryBuilder.NAME).fromXContent(context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user