diff options
author | Christoph Büscher <christoph@elastic.co> | 2017-06-29 17:10:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-29 17:10:20 +0200 |
commit | 927111c91dac5e3cef868eead3cfe8fd4075bee5 (patch) | |
tree | d1879782d7d0c5a44323e211d44e5f5bbfc87913 /core/src/test/java/org/elasticsearch | |
parent | 22ff76da0c7eaaadfb4f5127770bdeba9eb0e6ac (diff) |
Remove QueryParseContext from parsing QueryBuilders (#25448)
Currently QueryParseContext is only a thin wrapper around an XContentParser that
adds little functionality of its own. I provides helpers for long deprecated
field names which can be removed and two helper methods that can be made static
and moved to other classes. This is a first step in helping to remove
QueryParseContext entirely.
Diffstat (limited to 'core/src/test/java/org/elasticsearch')
15 files changed, 131 insertions, 115 deletions
diff --git a/core/src/test/java/org/elasticsearch/action/search/MultiSearchRequestTests.java b/core/src/test/java/org/elasticsearch/action/search/MultiSearchRequestTests.java index 35210ec70e..b2903e24de 100644 --- a/core/src/test/java/org/elasticsearch/action/search/MultiSearchRequestTests.java +++ b/core/src/test/java/org/elasticsearch/action/search/MultiSearchRequestTests.java @@ -27,7 +27,6 @@ import org.elasticsearch.common.xcontent.NamedXContentRegistry; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.MatchAllQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.action.search.RestMultiSearchAction; import org.elasticsearch.test.ESTestCase; @@ -182,6 +181,6 @@ public class MultiSearchRequestTests extends ESTestCase { @Override protected NamedXContentRegistry xContentRegistry() { return new NamedXContentRegistry(singletonList(new NamedXContentRegistry.Entry(QueryBuilder.class, - new ParseField(MatchAllQueryBuilder.NAME), (p, c) -> MatchAllQueryBuilder.fromXContent((QueryParseContext) c)))); + new ParseField(MatchAllQueryBuilder.NAME), (p, c) -> MatchAllQueryBuilder.fromXContent(p)))); } } diff --git a/core/src/test/java/org/elasticsearch/index/query/InnerHitBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/InnerHitBuilderTests.java index 20b0fc1e16..78975bf7b1 100644 --- a/core/src/test/java/org/elasticsearch/index/query/InnerHitBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/InnerHitBuilderTests.java @@ -123,8 +123,7 @@ public class InnerHitBuilderTests extends ESTestCase { //fields is printed out as an object but parsed into a List where order matters, we disable shuffling XContentBuilder shuffled = shuffleXContent(builder, "fields"); XContentParser parser = createParser(shuffled); - QueryParseContext context = new QueryParseContext(parser); - InnerHitBuilder secondInnerHits = InnerHitBuilder.fromXContent(context); + InnerHitBuilder secondInnerHits = InnerHitBuilder.fromXContent(parser); assertThat(innerHit, not(sameInstance(secondInnerHits))); assertThat(innerHit, equalTo(secondInnerHits)); assertThat(innerHit.hashCode(), equalTo(secondInnerHits.hashCode())); diff --git a/core/src/test/java/org/elasticsearch/index/query/QueryParseContextTests.java b/core/src/test/java/org/elasticsearch/index/query/QueryParseContextTests.java index 3f8837fe74..5bd6a8a582 100644 --- a/core/src/test/java/org/elasticsearch/index/query/QueryParseContextTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/QueryParseContextTests.java @@ -36,6 +36,7 @@ import org.junit.BeforeClass; import java.io.IOException; import static java.util.Collections.emptyList; +import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder; public class QueryParseContextTests extends ESTestCase { private static NamedXContentRegistry xContentRegistry; @@ -64,40 +65,11 @@ public class QueryParseContextTests extends ESTestCase { this.threadContext.close(); } - public void testParseTopLevelBuilder() throws IOException { - QueryBuilder query = new MatchQueryBuilder("foo", "bar"); - String requestBody = "{ \"query\" : " + query.toString() + "}"; - try (XContentParser parser = createParser(JsonXContent.jsonXContent, requestBody)) { - QueryParseContext context = new QueryParseContext(parser); - QueryBuilder actual = context.parseTopLevelQueryBuilder(); - assertEquals(query, actual); - } - } - - public void testParseTopLevelBuilderEmptyObject() throws IOException { - String requestBody = "{}"; - try (XContentParser parser = createParser(JsonXContent.jsonXContent, requestBody)) { - QueryParseContext context = new QueryParseContext(parser); - QueryBuilder query = context.parseTopLevelQueryBuilder(); - assertNull(query); - } - } - - public void testParseTopLevelBuilderUnknownParameter() throws IOException { - String requestBody = "{ \"foo\" : \"bar\"}"; - try (XContentParser parser = createParser(JsonXContent.jsonXContent, requestBody)) { - QueryParseContext context = new QueryParseContext(parser); - ParsingException exception = expectThrows(ParsingException.class, () -> context.parseTopLevelQueryBuilder()); - assertEquals("request does not support [foo]", exception.getMessage()); - } - } - public void testParseInnerQueryBuilder() throws IOException { QueryBuilder query = new MatchQueryBuilder("foo", "bar"); String source = query.toString(); try (XContentParser parser = createParser(JsonXContent.jsonXContent, source)) { - QueryParseContext context = new QueryParseContext(parser); - QueryBuilder actual = context.parseInnerQueryBuilder(); + QueryBuilder actual = parseInnerQueryBuilder(parser); assertEquals(query, actual); } } @@ -107,29 +79,26 @@ public class QueryParseContextTests extends ESTestCase { try (XContentParser parser = createParser(JsonXContent.jsonXContent, source)) { parser.nextToken(); parser.nextToken(); // don't start with START_OBJECT to provoke exception - QueryParseContext context = new QueryParseContext(parser); - ParsingException exception = expectThrows(ParsingException.class, () -> context.parseInnerQueryBuilder()); + ParsingException exception = expectThrows(ParsingException.class, () -> parseInnerQueryBuilder(parser)); assertEquals("[_na] query malformed, must start with start_object", exception.getMessage()); } source = "{}"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, source)) { - QueryParseContext context = new QueryParseContext(parser); - IllegalArgumentException exception = expectThrows(IllegalArgumentException.class, () -> context.parseInnerQueryBuilder()); + IllegalArgumentException exception = expectThrows(IllegalArgumentException.class, () -> parseInnerQueryBuilder(parser)); assertEquals("query malformed, empty clause found at [1:2]", exception.getMessage()); } source = "{ \"foo\" : \"bar\" }"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, source)) { QueryParseContext context = new QueryParseContext(parser); - ParsingException exception = expectThrows(ParsingException.class, () -> context.parseInnerQueryBuilder()); + ParsingException exception = expectThrows(ParsingException.class, () -> parseInnerQueryBuilder(parser)); assertEquals("[foo] query malformed, no start_object after query name", exception.getMessage()); } source = "{ \"foo\" : {} }"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, source)) { - QueryParseContext context = new QueryParseContext(parser); - ParsingException exception = expectThrows(ParsingException.class, () -> context.parseInnerQueryBuilder()); + ParsingException exception = expectThrows(ParsingException.class, () -> parseInnerQueryBuilder(parser)); assertEquals("no [query] registered for [foo]", exception.getMessage()); } } diff --git a/core/src/test/java/org/elasticsearch/index/query/QueryStringQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/QueryStringQueryBuilderTests.java index 038eadeff7..c32eb42573 100644 --- a/core/src/test/java/org/elasticsearch/index/query/QueryStringQueryBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/QueryStringQueryBuilderTests.java @@ -65,6 +65,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder; import static org.elasticsearch.index.query.QueryBuilders.queryStringQuery; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertBooleanSubQuery; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertDisjunctionSubQuery; @@ -521,7 +522,7 @@ public class QueryStringQueryBuilderTests extends AbstractQueryTestCase<QueryStr } builder.endObject(); - QueryBuilder queryBuilder = new QueryParseContext(createParser(builder)).parseInnerQueryBuilder(); + QueryBuilder queryBuilder = parseInnerQueryBuilder(createParser(builder)); TooComplexToDeterminizeException e = expectThrows(TooComplexToDeterminizeException.class, () -> queryBuilder.toQuery(createShardContext())); assertThat(e.getMessage(), containsString("Determinizing [ac]*")); @@ -545,8 +546,7 @@ public class QueryStringQueryBuilderTests extends AbstractQueryTestCase<QueryStr } builder.endObject(); - QueryStringQueryBuilder queryBuilder = (QueryStringQueryBuilder) new QueryParseContext(createParser(builder)) - .parseInnerQueryBuilder(); + QueryStringQueryBuilder queryBuilder = (QueryStringQueryBuilder) parseInnerQueryBuilder(createParser(builder)); assertFalse(queryBuilder.enablePositionIncrements()); } diff --git a/core/src/test/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilderTests.java index 90d11efb11..bfc8e2dc8d 100644 --- a/core/src/test/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilderTests.java @@ -20,6 +20,7 @@ package org.elasticsearch.index.query.functionscore; import com.fasterxml.jackson.core.JsonParseException; + import org.apache.lucene.index.Term; import org.apache.lucene.search.MatchAllDocsQuery; import org.apache.lucene.search.Query; @@ -40,7 +41,6 @@ import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.AbstractQueryBuilder; import org.elasticsearch.index.query.MatchAllQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.RandomQueryBuilder; import org.elasticsearch.index.query.TermQueryBuilder; import org.elasticsearch.index.query.WrapperQueryBuilder; @@ -796,9 +796,9 @@ public class FunctionScoreQueryBuilderTests extends AbstractQueryTestCase<Functi return NAME; } - public static RandomScoreFunctionBuilder fromXContent(QueryParseContext parseContext) + public static RandomScoreFunctionBuilder fromXContent(XContentParser parser) throws IOException, ParsingException { - RandomScoreFunctionBuilder builder = RandomScoreFunctionBuilder.fromXContent(parseContext); + RandomScoreFunctionBuilder builder = RandomScoreFunctionBuilder.fromXContent(parser); RandomScoreFunctionBuilderWithFixedSeed replacement = new RandomScoreFunctionBuilderWithFixedSeed(); if (builder.getSeed() != null) { replacement.seed(builder.getSeed()); diff --git a/core/src/test/java/org/elasticsearch/index/query/plugin/DummyQueryBuilder.java b/core/src/test/java/org/elasticsearch/index/query/plugin/DummyQueryBuilder.java index 5b6ea96dc3..cbd76877ce 100644 --- a/core/src/test/java/org/elasticsearch/index/query/plugin/DummyQueryBuilder.java +++ b/core/src/test/java/org/elasticsearch/index/query/plugin/DummyQueryBuilder.java @@ -25,7 +25,6 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.AbstractQueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.index.query.plugin.DummyQueryParserPlugin.DummyQuery; @@ -51,8 +50,8 @@ public class DummyQueryBuilder extends AbstractQueryBuilder<DummyQueryBuilder> { builder.startObject(NAME).endObject(); } - public static DummyQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException { - XContentParser.Token token = parseContext.parser().nextToken(); + public static DummyQueryBuilder fromXContent(XContentParser parser) throws IOException { + XContentParser.Token token = parser.nextToken(); assert token == XContentParser.Token.END_OBJECT; return new DummyQueryBuilder(); } diff --git a/core/src/test/java/org/elasticsearch/rest/action/RestActionsTests.java b/core/src/test/java/org/elasticsearch/rest/action/RestActionsTests.java new file mode 100644 index 0000000000..7272243e3c --- /dev/null +++ b/core/src/test/java/org/elasticsearch/rest/action/RestActionsTests.java @@ -0,0 +1,82 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.elasticsearch.rest.action; + +import org.elasticsearch.common.ParsingException; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.xcontent.NamedXContentRegistry; +import org.elasticsearch.common.xcontent.XContentParser; +import org.elasticsearch.common.xcontent.json.JsonXContent; +import org.elasticsearch.index.query.MatchQueryBuilder; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.search.SearchModule; +import org.elasticsearch.test.ESTestCase; +import org.junit.AfterClass; +import org.junit.BeforeClass; + +import java.io.IOException; + +import static java.util.Collections.emptyList; + +public class RestActionsTests extends ESTestCase { + + private static NamedXContentRegistry xContentRegistry; + + @BeforeClass + public static void init() { + xContentRegistry = new NamedXContentRegistry(new SearchModule(Settings.EMPTY, false, emptyList()).getNamedXContents()); + } + + @AfterClass + public static void cleanup() { + xContentRegistry = null; + } + + public void testParseTopLevelBuilder() throws IOException { + QueryBuilder query = new MatchQueryBuilder("foo", "bar"); + String requestBody = "{ \"query\" : " + query.toString() + "}"; + try (XContentParser parser = createParser(JsonXContent.jsonXContent, requestBody)) { + QueryBuilder actual = RestActions.getQueryContent(parser); + assertEquals(query, actual); + } + } + + public void testParseTopLevelBuilderEmptyObject() throws IOException { + String requestBody = "{}"; + try (XContentParser parser = createParser(JsonXContent.jsonXContent, requestBody)) { + QueryBuilder query = RestActions.getQueryContent(parser); + assertNull(query); + } + } + + public void testParseTopLevelBuilderUnknownParameter() throws IOException { + String requestBody = "{ \"foo\" : \"bar\"}"; + try (XContentParser parser = createParser(JsonXContent.jsonXContent, requestBody)) { + ParsingException exception = expectThrows(ParsingException.class, () -> RestActions.getQueryContent(parser)); + assertEquals("request does not support [foo]", exception.getMessage()); + } + } + + @Override + protected NamedXContentRegistry xContentRegistry() { + return xContentRegistry; + } + +} diff --git a/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilderTests.java b/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilderTests.java index 2d1fb3d986..b49a211a1c 100644 --- a/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilderTests.java @@ -43,7 +43,6 @@ import org.elasticsearch.index.mapper.TextFieldMapper; import org.elasticsearch.index.query.IdsQueryBuilder; import org.elasticsearch.index.query.MatchAllQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.index.query.TermQueryBuilder; import org.elasticsearch.search.SearchModule; @@ -138,11 +137,10 @@ public class HighlightBuilderTests extends ESTestCase { } XContentParser parser = createParser(shuffled); - QueryParseContext context = new QueryParseContext(parser); parser.nextToken(); HighlightBuilder secondHighlightBuilder; try { - secondHighlightBuilder = HighlightBuilder.fromXContent(context); + secondHighlightBuilder = HighlightBuilder.fromXContent(parser); } catch (RuntimeException e) { throw new RuntimeException("Error parsing " + highlightBuilder, e); } @@ -179,8 +177,7 @@ public class HighlightBuilderTests extends ESTestCase { private <T extends Throwable> T expectParseThrows(Class<T> exceptionClass, String highlightElement) throws IOException { XContentParser parser = createParser(JsonXContent.jsonXContent, highlightElement); - QueryParseContext context = new QueryParseContext(parser); - return expectThrows(exceptionClass, () -> HighlightBuilder.fromXContent(context)); + return expectThrows(exceptionClass, () -> HighlightBuilder.fromXContent(parser)); } /** @@ -390,8 +387,7 @@ public class HighlightBuilderTests extends ESTestCase { "}\n"; XContentParser parser = createParser(JsonXContent.jsonXContent, highlightElement); - QueryParseContext context = new QueryParseContext(parser); - HighlightBuilder highlightBuilder = HighlightBuilder.fromXContent(context); + HighlightBuilder highlightBuilder = HighlightBuilder.fromXContent(parser); assertArrayEquals("setting tags_schema 'styled' should alter pre_tags", HighlightBuilder.DEFAULT_STYLED_PRE_TAG, highlightBuilder.preTags()); assertArrayEquals("setting tags_schema 'styled' should alter post_tags", HighlightBuilder.DEFAULT_STYLED_POST_TAGS, @@ -402,8 +398,7 @@ public class HighlightBuilderTests extends ESTestCase { "}\n"; parser = createParser(JsonXContent.jsonXContent, highlightElement); - context = new QueryParseContext(parser); - highlightBuilder = HighlightBuilder.fromXContent(context); + highlightBuilder = HighlightBuilder.fromXContent(parser); assertArrayEquals("setting tags_schema 'default' should alter pre_tags", HighlightBuilder.DEFAULT_PRE_TAGS, highlightBuilder.preTags()); assertArrayEquals("setting tags_schema 'default' should alter post_tags", HighlightBuilder.DEFAULT_POST_TAGS, @@ -423,22 +418,19 @@ public class HighlightBuilderTests extends ESTestCase { String highlightElement = "{ }"; XContentParser parser = createParser(JsonXContent.jsonXContent, highlightElement); - QueryParseContext context = new QueryParseContext(parser); - HighlightBuilder highlightBuilder = HighlightBuilder.fromXContent(context); + HighlightBuilder highlightBuilder = HighlightBuilder.fromXContent(parser); assertEquals("expected plain HighlightBuilder", new HighlightBuilder(), highlightBuilder); highlightElement = "{ \"fields\" : { } }"; parser = createParser(JsonXContent.jsonXContent, highlightElement); - context = new QueryParseContext(parser); - highlightBuilder = HighlightBuilder.fromXContent(context); + highlightBuilder = HighlightBuilder.fromXContent(parser); assertEquals("defining no field should return plain HighlightBuilder", new HighlightBuilder(), highlightBuilder); highlightElement = "{ \"fields\" : { \"foo\" : { } } }"; parser = createParser(JsonXContent.jsonXContent, highlightElement); - context = new QueryParseContext(parser); - highlightBuilder = HighlightBuilder.fromXContent(context); + highlightBuilder = HighlightBuilder.fromXContent(parser); assertEquals("expected HighlightBuilder with field", new HighlightBuilder().field(new Field("foo")), highlightBuilder); } diff --git a/core/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java b/core/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java index 7a0e10af99..f1a890f786 100644 --- a/core/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java +++ b/core/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java @@ -40,7 +40,6 @@ import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.index.query.RandomQueryBuilder; import org.elasticsearch.index.shard.ShardId; @@ -50,6 +49,7 @@ import org.elasticsearch.search.AbstractSearchTestCase; import java.io.IOException; import java.util.Base64; +import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder; import static org.elasticsearch.index.query.QueryBuilders.termQuery; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; @@ -165,7 +165,7 @@ public class ShardSearchTransportRequestTests extends AbstractSearchTestCase { public QueryBuilder aliasFilter(IndexMetaData indexMetaData, String... aliasNames) { CheckedFunction<byte[], QueryBuilder, IOException> filterParser = bytes -> { try (XContentParser parser = XContentFactory.xContent(bytes).createParser(xContentRegistry(), bytes)) { - return new QueryParseContext(parser).parseInnerQueryBuilder(); + return parseInnerQueryBuilder(parser); } }; return ShardSearchRequest.parseAliasFilter(filterParser, indexMetaData, aliasNames); diff --git a/core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java b/core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java index 8e6b9f45cc..106c3eb05a 100644 --- a/core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java @@ -45,13 +45,11 @@ import org.elasticsearch.index.mapper.ObjectMapper.Nested; import org.elasticsearch.index.query.IdsQueryBuilder; import org.elasticsearch.index.query.MatchAllQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.index.query.TermQueryBuilder; import org.elasticsearch.index.shard.ShardId; import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache; import org.elasticsearch.script.MockScriptEngine; -import org.elasticsearch.script.ScriptContext; import org.elasticsearch.script.ScriptEngine; import org.elasticsearch.script.ScriptModule; import org.elasticsearch.script.ScriptService; @@ -63,7 +61,6 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import java.io.IOException; -import java.nio.file.Path; import java.util.Collections; import java.util.Map; import java.util.function.Function; @@ -106,7 +103,7 @@ public abstract class AbstractSortTestCase<T extends SortBuilder<T>> extends EST protected abstract T mutate(T original) throws IOException; /** Parse the sort from xContent. Just delegate to the SortBuilder's static fromXContent method. */ - protected abstract T fromXContent(QueryParseContext context, String fieldName) throws IOException; + protected abstract T fromXContent(XContentParser parser, String fieldName) throws IOException; /** * Test that creates new sort from a random test sort and checks both for equality @@ -131,8 +128,7 @@ public abstract class AbstractSortTestCase<T extends SortBuilder<T>> extends EST String elementName = itemParser.currentName(); itemParser.nextToken(); - QueryParseContext context = new QueryParseContext(itemParser); - T parsedItem = fromXContent(context, elementName); + T parsedItem = fromXContent(itemParser, elementName); assertNotSame(testItem, parsedItem); assertEquals(testItem, parsedItem); assertEquals(testItem.hashCode(), parsedItem.hashCode()); @@ -241,7 +237,7 @@ public abstract class AbstractSortTestCase<T extends SortBuilder<T>> extends EST private T copy(T original) throws IOException { /* The cast below is required to make Java 9 happy. Java 8 infers the T in copyWriterable to be the same as AbstractSortTestCase's * T but Java 9 infers it to be SortBuilder. */ - return (T) copyWriteable(original, namedWriteableRegistry, + return copyWriteable(original, namedWriteableRegistry, namedWriteableRegistry.getReader(SortBuilder.class, original.getWriteableName())); } } diff --git a/core/src/test/java/org/elasticsearch/search/sort/FieldSortBuilderTests.java b/core/src/test/java/org/elasticsearch/search/sort/FieldSortBuilderTests.java index 57e79ce98c..eda187d916 100644 --- a/core/src/test/java/org/elasticsearch/search/sort/FieldSortBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/sort/FieldSortBuilderTests.java @@ -22,7 +22,6 @@ package org.elasticsearch.search.sort; import org.apache.lucene.search.SortField; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.json.JsonXContent; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.DocValueFormat; import java.io.IOException; @@ -133,10 +132,8 @@ public class FieldSortBuilderTests extends AbstractSortTestCase<FieldSortBuilder parser.nextToken(); parser.nextToken(); - QueryParseContext context = new QueryParseContext(parser); - try { - FieldSortBuilder.fromXContent(context, ""); + FieldSortBuilder.fromXContent(parser, ""); fail("adding reverse sorting option should fail with an exception"); } catch (IllegalArgumentException e) { // all good @@ -145,7 +142,7 @@ public class FieldSortBuilderTests extends AbstractSortTestCase<FieldSortBuilder @Override - protected FieldSortBuilder fromXContent(QueryParseContext context, String fieldName) throws IOException { - return FieldSortBuilder.fromXContent(context, fieldName); + protected FieldSortBuilder fromXContent(XContentParser parser, String fieldName) throws IOException { + return FieldSortBuilder.fromXContent(parser, fieldName); } } diff --git a/core/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java b/core/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java index 99ab42c6e4..007695886c 100644 --- a/core/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java @@ -32,7 +32,6 @@ import org.elasticsearch.index.mapper.GeoPointFieldMapper; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.query.GeoValidationMethod; import org.elasticsearch.index.query.MatchAllQueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.test.geo.RandomGeoGenerator; @@ -206,9 +205,8 @@ public class GeoDistanceSortBuilderTests extends AbstractSortTestCase<GeoDistanc XContentParser itemParser = createParser(JsonXContent.jsonXContent, json); itemParser.nextToken(); - QueryParseContext context = new QueryParseContext(itemParser); - - IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> GeoDistanceSortBuilder.fromXContent(context, "")); + IllegalArgumentException e = expectThrows(IllegalArgumentException.class, + () -> GeoDistanceSortBuilder.fromXContent(itemParser, "")); assertEquals("sort_mode [sum] isn't supported for sorting by geo distance", e.getMessage()); } @@ -231,9 +229,7 @@ public class GeoDistanceSortBuilderTests extends AbstractSortTestCase<GeoDistanc XContentParser itemParser = createParser(JsonXContent.jsonXContent, json); itemParser.nextToken(); - QueryParseContext context = new QueryParseContext(itemParser); - - GeoDistanceSortBuilder result = GeoDistanceSortBuilder.fromXContent(context, json); + GeoDistanceSortBuilder result = GeoDistanceSortBuilder.fromXContent(itemParser, json); assertEquals("[-19.700583312660456, -2.8225036337971687, " + "31.537466906011105, -74.63590376079082, " + "43.71844606474042, -5.548660643398762, " @@ -353,14 +349,13 @@ public class GeoDistanceSortBuilderTests extends AbstractSortTestCase<GeoDistanc private GeoDistanceSortBuilder parse(XContentBuilder sortBuilder) throws Exception { XContentParser parser = createParser(sortBuilder); - QueryParseContext parseContext = new QueryParseContext(parser); parser.nextToken(); - return GeoDistanceSortBuilder.fromXContent(parseContext, null); + return GeoDistanceSortBuilder.fromXContent(parser, null); } @Override - protected GeoDistanceSortBuilder fromXContent(QueryParseContext context, String fieldName) throws IOException { - return GeoDistanceSortBuilder.fromXContent(context, fieldName); + protected GeoDistanceSortBuilder fromXContent(XContentParser parser, String fieldName) throws IOException { + return GeoDistanceSortBuilder.fromXContent(parser, fieldName); } public void testCommonCaseIsOptimized() throws IOException { diff --git a/core/src/test/java/org/elasticsearch/search/sort/ScoreSortBuilderTests.java b/core/src/test/java/org/elasticsearch/search/sort/ScoreSortBuilderTests.java index 1d4389c4e3..5e6d49f5e1 100644 --- a/core/src/test/java/org/elasticsearch/search/sort/ScoreSortBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/sort/ScoreSortBuilderTests.java @@ -23,7 +23,6 @@ package org.elasticsearch.search.sort; import org.apache.lucene.search.SortField; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.json.JsonXContent; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.DocValueFormat; import java.io.IOException; @@ -67,8 +66,7 @@ public class ScoreSortBuilderTests extends AbstractSortTestCase<ScoreSortBuilder parser.nextToken(); parser.nextToken(); - QueryParseContext context = new QueryParseContext(parser); - ScoreSortBuilder scoreSort = ScoreSortBuilder.fromXContent(context, "_score"); + ScoreSortBuilder scoreSort = ScoreSortBuilder.fromXContent(parser, "_score"); assertEquals(order, scoreSort.order()); } @@ -80,10 +78,8 @@ public class ScoreSortBuilderTests extends AbstractSortTestCase<ScoreSortBuilder parser.nextToken(); parser.nextToken(); - QueryParseContext context = new QueryParseContext(parser); - try { - ScoreSortBuilder.fromXContent(context, "_score"); + ScoreSortBuilder.fromXContent(parser, "_score"); fail("adding reverse sorting option should fail with an exception"); } catch (IllegalArgumentException e) { // all good @@ -97,7 +93,7 @@ public class ScoreSortBuilderTests extends AbstractSortTestCase<ScoreSortBuilder } @Override - protected ScoreSortBuilder fromXContent(QueryParseContext context, String fieldName) throws IOException { - return ScoreSortBuilder.fromXContent(context, fieldName); + protected ScoreSortBuilder fromXContent(XContentParser parser, String fieldName) throws IOException { + return ScoreSortBuilder.fromXContent(parser, fieldName); } } diff --git a/core/src/test/java/org/elasticsearch/search/sort/ScriptSortBuilderTests.java b/core/src/test/java/org/elasticsearch/search/sort/ScriptSortBuilderTests.java index 121085f34d..345991c265 100644 --- a/core/src/test/java/org/elasticsearch/search/sort/ScriptSortBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/sort/ScriptSortBuilderTests.java @@ -23,7 +23,6 @@ package org.elasticsearch.search.sort; import org.apache.lucene.search.SortField; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.json.JsonXContent; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptType; import org.elasticsearch.search.DocValueFormat; @@ -171,8 +170,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild parser.nextToken(); parser.nextToken(); - QueryParseContext context = new QueryParseContext(parser); - ScriptSortBuilder builder = ScriptSortBuilder.fromXContent(context, null); + ScriptSortBuilder builder = ScriptSortBuilder.fromXContent(parser, null); assertEquals("doc['field_name'].value * factor", builder.script().getIdOrCode()); assertEquals(Script.DEFAULT_SCRIPT_LANG, builder.script().getLang()); assertEquals(1.1, builder.script().getParams().get("factor")); @@ -197,8 +195,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild parser.nextToken(); parser.nextToken(); - QueryParseContext context = new QueryParseContext(parser); - ScriptSortBuilder builder = ScriptSortBuilder.fromXContent(context, null); + ScriptSortBuilder builder = ScriptSortBuilder.fromXContent(parser, null); assertEquals("doc['field_name'].value", builder.script().getIdOrCode()); assertEquals(Script.DEFAULT_SCRIPT_LANG, builder.script().getLang()); assertEquals(builder.script().getParams(), Collections.emptyMap()); @@ -217,8 +214,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild parser.nextToken(); parser.nextToken(); - QueryParseContext context = new QueryParseContext(parser); - Exception e = expectThrows(IllegalArgumentException.class, () -> ScriptSortBuilder.fromXContent(context, null)); + Exception e = expectThrows(IllegalArgumentException.class, () -> ScriptSortBuilder.fromXContent(parser, null)); assertEquals("[_script] unknown field [bad_field], parser not found", e.getMessage()); } @@ -230,8 +226,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild parser.nextToken(); parser.nextToken(); - QueryParseContext context = new QueryParseContext(parser); - Exception e = expectThrows(IllegalArgumentException.class, () -> ScriptSortBuilder.fromXContent(context, null)); + Exception e = expectThrows(IllegalArgumentException.class, () -> ScriptSortBuilder.fromXContent(parser, null)); assertEquals("[_script] unknown field [bad_field], parser not found", e.getMessage()); } @@ -242,8 +237,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild parser.nextToken(); parser.nextToken(); - QueryParseContext context = new QueryParseContext(parser); - Exception e = expectThrows(IllegalArgumentException.class, () -> ScriptSortBuilder.fromXContent(context, null)); + Exception e = expectThrows(IllegalArgumentException.class, () -> ScriptSortBuilder.fromXContent(parser, null)); assertEquals("[_script] script doesn't support values of type: START_ARRAY", e.getMessage()); } @@ -258,7 +252,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild } @Override - protected ScriptSortBuilder fromXContent(QueryParseContext context, String fieldName) throws IOException { - return ScriptSortBuilder.fromXContent(context, fieldName); + protected ScriptSortBuilder fromXContent(XContentParser parser, String fieldName) throws IOException { + return ScriptSortBuilder.fromXContent(parser, fieldName); } } diff --git a/core/src/test/java/org/elasticsearch/search/sort/SortBuilderTests.java b/core/src/test/java/org/elasticsearch/search/sort/SortBuilderTests.java index b1a6af88de..252c55d841 100644 --- a/core/src/test/java/org/elasticsearch/search/sort/SortBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/sort/SortBuilderTests.java @@ -27,7 +27,6 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.json.JsonXContent; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.SearchModule; import org.elasticsearch.test.ESTestCase; import org.junit.AfterClass; @@ -237,12 +236,11 @@ public class SortBuilderTests extends ESTestCase { private List<SortBuilder<?>> parseSort(String jsonString) throws IOException { XContentParser itemParser = createParser(JsonXContent.jsonXContent, jsonString); - QueryParseContext context = new QueryParseContext(itemParser); assertEquals(XContentParser.Token.START_OBJECT, itemParser.nextToken()); assertEquals(XContentParser.Token.FIELD_NAME, itemParser.nextToken()); assertEquals("sort", itemParser.currentName()); itemParser.nextToken(); - return SortBuilder.fromXContent(context); + return SortBuilder.fromXContent(itemParser); } } |