summaryrefslogtreecommitdiff
path: root/core/src/test
diff options
context:
space:
mode:
authorChristoph Büscher <christoph@elastic.co>2016-03-29 18:45:07 +0200
committerChristoph Büscher <christoph@elastic.co>2016-04-15 17:13:01 +0200
commitfbd558382d0bb96acb7986f48297c645d1a70c41 (patch)
treef2071331ed3a5563426beb8f05250ec95d58bf99 /core/src/test
parent068df5f8aa5642432c77962768b17046a86ddbc4 (diff)
Clean up QueryParseContext and don't hold it inside QueryRewrite/ShardContext
This change cleans up a few things in QueryParseContext and QueryShardContext that make it hard to reason about the state of these context objects and are thus error prone and should be simplified. Currently the parser that used in QueryParseContext can be set and reset any time from the outside, which makes reasoning about it hard. This change makes the parser a mandatory constructor argument removes ability to later set a different ParseFieldMatcher. If none is provided at construction time, the one set inside the parser is used. If a ParseFieldMatcher is specified at construction time, it is implicitely set on the parser that is beeing used. The ParseFieldMatcher is only kept inside the parser. Also currently the QueryShardContext historically holds an inner QueryParseContext (in the super class QueryRewriteContext), that is mainly used to hold the parser and parseFieldMatcher. For that reason, the parser can also be reset, which leads to the same problems as above. This change removes the QueryParseContext from QueryRewriteContext and removes the ability to reset or retrieve it from the QueryShardContext. Instead, `QueryRewriteContext#newParseContext(parser)` can be used to create new parse contexts with the given parser from a shard context when needed.
Diffstat (limited to 'core/src/test')
-rw-r--r--core/src/test/java/org/elasticsearch/index/query/AbstractQueryTestCase.java15
-rw-r--r--core/src/test/java/org/elasticsearch/index/query/GeoShapeQueryBuilderTests.java4
-rw-r--r--core/src/test/java/org/elasticsearch/index/query/support/InnerHitBuilderTests.java26
-rw-r--r--core/src/test/java/org/elasticsearch/index/query/support/InnerHitsBuilderTests.java4
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/AggregationCollectorTests.java4
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/AggregatorParsingTests.java24
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/BaseAggregationTestCase.java4
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/BasePipelineAggregationTestCase.java6
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoHashGridParserTests.java24
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/significant/SignificanceHeuristicTests.java8
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java4
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/pipeline/moving/avg/MovAvgTests.java4
-rw-r--r--core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java5
-rw-r--r--core/src/test/java/org/elasticsearch/search/highlight/HighlightBuilderTests.java24
-rw-r--r--core/src/test/java/org/elasticsearch/search/rescore/QueryRescoreBuilderTests.java25
-rw-r--r--core/src/test/java/org/elasticsearch/search/searchafter/SearchAfterBuilderTests.java7
-rw-r--r--core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java4
-rw-r--r--core/src/test/java/org/elasticsearch/search/sort/FieldSortBuilderTests.java7
-rw-r--r--core/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java138
-rw-r--r--core/src/test/java/org/elasticsearch/search/sort/ScoreSortBuilderTests.java9
-rw-r--r--core/src/test/java/org/elasticsearch/search/sort/ScriptSortBuilderTests.java22
-rw-r--r--core/src/test/java/org/elasticsearch/search/sort/SortBuilderTests.java4
-rw-r--r--core/src/test/java/org/elasticsearch/search/sort/SortParserTests.java165
-rw-r--r--core/src/test/java/org/elasticsearch/search/suggest/AbstractSuggestionBuilderTestCase.java9
-rw-r--r--core/src/test/java/org/elasticsearch/search/suggest/SuggestBuilderTests.java7
-rw-r--r--core/src/test/java/org/elasticsearch/search/suggest/phrase/DirectCandidateGeneratorTests.java47
-rw-r--r--core/src/test/java/org/elasticsearch/search/suggest/phrase/SmoothingModelTestCase.java6
27 files changed, 232 insertions, 374 deletions
diff --git a/core/src/test/java/org/elasticsearch/index/query/AbstractQueryTestCase.java b/core/src/test/java/org/elasticsearch/index/query/AbstractQueryTestCase.java
index aa6aa51982..0f373d3664 100644
--- a/core/src/test/java/org/elasticsearch/index/query/AbstractQueryTestCase.java
+++ b/core/src/test/java/org/elasticsearch/index/query/AbstractQueryTestCase.java
@@ -524,9 +524,7 @@ public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>>
}
private QueryBuilder<?> parseQuery(XContentParser parser, ParseFieldMatcher matcher) throws IOException {
- QueryParseContext context = createParseContext();
- context.reset(parser);
- context.parseFieldMatcher(matcher);
+ QueryParseContext context = createParseContext(parser, matcher);
QueryBuilder<?> parseInnerQueryBuilder = context.parseInnerQueryBuilder();
assertNull(parser.nextToken());
return parseInnerQueryBuilder;
@@ -728,19 +726,14 @@ public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>>
* @return a new {@link QueryShardContext} based on the base test index and queryParserService
*/
protected static QueryShardContext createShardContext() {
- QueryShardContext queryCreationContext = new QueryShardContext(queryShardContext);
- queryCreationContext.reset();
- queryCreationContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
- return queryCreationContext;
+ return new QueryShardContext(queryShardContext);
}
/**
* @return a new {@link QueryParseContext} based on the base test index and queryParserService
*/
- protected static QueryParseContext createParseContext() {
- QueryParseContext queryParseContext = new QueryParseContext(indicesQueriesRegistry);
- queryParseContext.reset(null);
- queryParseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
+ protected static QueryParseContext createParseContext(XContentParser parser, ParseFieldMatcher matcher) {
+ QueryParseContext queryParseContext = new QueryParseContext(indicesQueriesRegistry, parser, matcher);
return queryParseContext;
}
diff --git a/core/src/test/java/org/elasticsearch/index/query/GeoShapeQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/GeoShapeQueryBuilderTests.java
index b4e0e0f18c..b335cfabb6 100644
--- a/core/src/test/java/org/elasticsearch/index/query/GeoShapeQueryBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/index/query/GeoShapeQueryBuilderTests.java
@@ -256,12 +256,12 @@ public class GeoShapeQueryBuilderTests extends AbstractQueryTestCase<GeoShapeQue
// do this until we get one without a shape
} while (sqb.shape() != null);
try {
- sqb.toQuery(queryShardContext());
+ sqb.toQuery(createShardContext());
fail();
} catch (UnsupportedOperationException e) {
assertEquals("query must be rewritten first", e.getMessage());
}
- QueryBuilder<?> rewrite = sqb.rewrite(queryShardContext());
+ QueryBuilder<?> rewrite = sqb.rewrite(createShardContext());
GeoShapeQueryBuilder geoShapeQueryBuilder = new GeoShapeQueryBuilder(GEO_SHAPE_FIELD_NAME, indexedShapeToReturn);
geoShapeQueryBuilder.strategy(sqb.strategy());
geoShapeQueryBuilder.relation(sqb.relation());
diff --git a/core/src/test/java/org/elasticsearch/index/query/support/InnerHitBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/support/InnerHitBuilderTests.java
index d3d9c5f7cd..e85baee232 100644
--- a/core/src/test/java/org/elasticsearch/index/query/support/InnerHitBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/index/query/support/InnerHitBuilderTests.java
@@ -18,6 +18,17 @@
*/
package org.elasticsearch.index.query.support;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.sameInstance;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Supplier;
+
import org.elasticsearch.common.ParseFieldMatcher;
import org.elasticsearch.common.io.stream.BytesStreamOutput;
import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
@@ -46,17 +57,6 @@ import org.elasticsearch.test.ESTestCase;
import org.junit.AfterClass;
import org.junit.BeforeClass;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Supplier;
-
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.not;
-import static org.hamcrest.Matchers.sameInstance;
-
public class InnerHitBuilderTests extends ESTestCase {
private static final int NUMBER_OF_TESTBUILDERS = 20;
@@ -86,8 +86,6 @@ public class InnerHitBuilderTests extends ESTestCase {
}
public void testFromAndToXContent() throws Exception {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
for (int runs = 0; runs < NUMBER_OF_TESTBUILDERS; runs++) {
InnerHitBuilder innerHit = randomInnerHits();
XContentBuilder builder = XContentFactory.contentBuilder(randomFrom(XContentType.values()));
@@ -97,7 +95,7 @@ public class InnerHitBuilderTests extends ESTestCase {
innerHit.toXContent(builder, ToXContent.EMPTY_PARAMS);
XContentParser parser = XContentHelper.createParser(builder.bytes());
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.EMPTY);
InnerHitBuilder secondInnerHits = InnerHitBuilder.fromXContent(context);
assertThat(innerHit, not(sameInstance(secondInnerHits)));
assertThat(innerHit, equalTo(secondInnerHits));
diff --git a/core/src/test/java/org/elasticsearch/index/query/support/InnerHitsBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/support/InnerHitsBuilderTests.java
index 533416d918..c095573b5a 100644
--- a/core/src/test/java/org/elasticsearch/index/query/support/InnerHitsBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/index/query/support/InnerHitsBuilderTests.java
@@ -72,8 +72,6 @@ public class InnerHitsBuilderTests extends ESTestCase {
}
public void testFromAndToXContent() throws Exception {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
for (int runs = 0; runs < NUMBER_OF_TESTBUILDERS; runs++) {
InnerHitsBuilder innerHits = randomInnerHits();
XContentBuilder builder = XContentFactory.contentBuilder(randomFrom(XContentType.values()));
@@ -83,7 +81,7 @@ public class InnerHitsBuilderTests extends ESTestCase {
innerHits.toXContent(builder, ToXContent.EMPTY_PARAMS);
XContentParser parser = XContentHelper.createParser(builder.bytes());
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.EMPTY);
parser.nextToken();
InnerHitsBuilder secondInnerHits = InnerHitsBuilder.fromXContent(context);
assertThat(innerHits, not(sameInstance(secondInnerHits)));
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/AggregationCollectorTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/AggregationCollectorTests.java
index a1a6bc830e..f2b16c3e3e 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/AggregationCollectorTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/AggregationCollectorTests.java
@@ -63,9 +63,7 @@ public class AggregationCollectorTests extends ESSingleNodeTestCase {
AggregatorParsers parser = getInstanceFromNode(AggregatorParsers.class);
IndicesQueriesRegistry queriesRegistry = getInstanceFromNode(IndicesQueriesRegistry.class);
XContentParser aggParser = JsonXContent.jsonXContent.createParser(agg);
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(aggParser);
- parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, aggParser, ParseFieldMatcher.STRICT);
aggParser.nextToken();
SearchContext searchContext = createSearchContext(index);
AggregationContext aggContext = new AggregationContext(searchContext);
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorParsingTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorParsingTests.java
index 12cfd10c29..a7b8ed064b 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorParsingTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorParsingTests.java
@@ -210,9 +210,7 @@ public class AggregatorParsingTests extends ESTestCase {
.endObject().string();
try {
XContentParser parser = XContentFactory.xContent(source).createParser(source);
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
aggParsers.parseAggregators(parseContext);
fail();
@@ -246,9 +244,7 @@ public class AggregatorParsingTests extends ESTestCase {
.endObject().string();
try {
XContentParser parser = XContentFactory.xContent(source).createParser(source);
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
aggParsers.parseAggregators(parseContext);
fail();
@@ -286,9 +282,7 @@ public class AggregatorParsingTests extends ESTestCase {
.endObject().string();
try {
XContentParser parser = XContentFactory.xContent(source).createParser(source);
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
aggParsers.parseAggregators(parseContext);
fail();
@@ -314,9 +308,7 @@ public class AggregatorParsingTests extends ESTestCase {
.endObject().string();
try {
XContentParser parser = XContentFactory.xContent(source).createParser(source);
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
aggParsers.parseAggregators(parseContext);
fail();
@@ -344,9 +336,7 @@ public class AggregatorParsingTests extends ESTestCase {
.endObject().string();
try {
XContentParser parser = XContentFactory.xContent(source).createParser(source);
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
aggParsers.parseAggregators(parseContext);
fail();
@@ -374,9 +364,7 @@ public class AggregatorParsingTests extends ESTestCase {
.endObject().string();
try {
XContentParser parser = XContentFactory.xContent(source).createParser(source);
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
aggParsers.parseAggregators(parseContext);
fail();
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/BaseAggregationTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/BaseAggregationTestCase.java
index 3833d59ef3..5e5dc92393 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/BaseAggregationTestCase.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/BaseAggregationTestCase.java
@@ -225,9 +225,7 @@ public abstract class BaseAggregationTestCase<AB extends AggregatorBuilder<AB>>
factoriesBuilder.toXContent(builder, ToXContent.EMPTY_PARAMS);
XContentBuilder shuffled = shuffleXContent(builder, Collections.emptySet());
XContentParser parser = XContentFactory.xContent(shuffled.bytes()).createParser(shuffled.bytes());
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
assertSame(XContentParser.Token.FIELD_NAME, parser.nextToken());
assertEquals(testAgg.name, parser.currentName());
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/BasePipelineAggregationTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/BasePipelineAggregationTestCase.java
index 4c9311bb11..29db7aee5e 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/BasePipelineAggregationTestCase.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/BasePipelineAggregationTestCase.java
@@ -227,9 +227,9 @@ public abstract class BasePipelineAggregationTestCase<AF extends PipelineAggrega
factoriesBuilder.toXContent(builder, ToXContent.EMPTY_PARAMS);
XContentBuilder shuffled = shuffleXContent(builder, Collections.emptySet());
XContentParser parser = XContentFactory.xContent(shuffled.bytes()).createParser(shuffled.bytes());
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
+ String contentString = factoriesBuilder.toString();
+ logger.info("Content string: {}", contentString);
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
assertSame(XContentParser.Token.FIELD_NAME, parser.nextToken());
assertEquals(testAgg.name(), parser.currentName());
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoHashGridParserTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoHashGridParserTests.java
index b47227ceb0..9f2ecfec3e 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoHashGridParserTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoHashGridParserTests.java
@@ -23,16 +23,18 @@ import org.elasticsearch.common.ParsingException;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.common.xcontent.json.JsonXContent;
import org.elasticsearch.index.query.QueryParseContext;
+import org.elasticsearch.indices.query.IndicesQueriesRegistry;
import org.elasticsearch.test.ESTestCase;
public class GeoHashGridParserTests extends ESTestCase {
+ private static final IndicesQueriesRegistry mockRegistry = new IndicesQueriesRegistry();
+
public void testParseValidFromInts() throws Exception {
int precision = randomIntBetween(1, 12);
XContentParser stParser = JsonXContent.jsonXContent.createParser(
"{\"field\":\"my_loc\", \"precision\":" + precision + ", \"size\": 500, \"shard_size\": 550}");
- QueryParseContext parseContext = new QueryParseContext(null);
- parseContext.reset(stParser);
- parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
+ QueryParseContext parseContext = new QueryParseContext(mockRegistry,
+ stParser, ParseFieldMatcher.STRICT);
XContentParser.Token token = stParser.nextToken();
assertSame(XContentParser.Token.START_OBJECT, token);
GeoHashGridParser parser = new GeoHashGridParser();
@@ -44,9 +46,7 @@ public class GeoHashGridParserTests extends ESTestCase {
int precision = randomIntBetween(1, 12);
XContentParser stParser = JsonXContent.jsonXContent.createParser(
"{\"field\":\"my_loc\", \"precision\":\"" + precision + "\", \"size\": \"500\", \"shard_size\": \"550\"}");
- QueryParseContext parseContext = new QueryParseContext(null);
- parseContext.reset(stParser);
- parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
+ QueryParseContext parseContext = new QueryParseContext(mockRegistry, stParser, ParseFieldMatcher.STRICT);
XContentParser.Token token = stParser.nextToken();
assertSame(XContentParser.Token.START_OBJECT, token);
GeoHashGridParser parser = new GeoHashGridParser();
@@ -56,9 +56,7 @@ public class GeoHashGridParserTests extends ESTestCase {
public void testParseErrorOnNonIntPrecision() throws Exception {
XContentParser stParser = JsonXContent.jsonXContent.createParser("{\"field\":\"my_loc\", \"precision\":\"2.0\"}");
- QueryParseContext parseContext = new QueryParseContext(null);
- parseContext.reset(stParser);
- parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
+ QueryParseContext parseContext = new QueryParseContext(mockRegistry, stParser, ParseFieldMatcher.STRICT);
XContentParser.Token token = stParser.nextToken();
assertSame(XContentParser.Token.START_OBJECT, token);
GeoHashGridParser parser = new GeoHashGridParser();
@@ -72,9 +70,7 @@ public class GeoHashGridParserTests extends ESTestCase {
public void testParseErrorOnBooleanPrecision() throws Exception {
XContentParser stParser = JsonXContent.jsonXContent.createParser("{\"field\":\"my_loc\", \"precision\":false}");
- QueryParseContext parseContext = new QueryParseContext(null);
- parseContext.reset(stParser);
- parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
+ QueryParseContext parseContext = new QueryParseContext(mockRegistry, stParser, ParseFieldMatcher.STRICT);
XContentParser.Token token = stParser.nextToken();
assertSame(XContentParser.Token.START_OBJECT, token);
GeoHashGridParser parser = new GeoHashGridParser();
@@ -88,9 +84,7 @@ public class GeoHashGridParserTests extends ESTestCase {
public void testParseErrorOnPrecisionOutOfRange() throws Exception {
XContentParser stParser = JsonXContent.jsonXContent.createParser("{\"field\":\"my_loc\", \"precision\":\"13\"}");
- QueryParseContext parseContext = new QueryParseContext(null);
- parseContext.reset(stParser);
- parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
+ QueryParseContext parseContext = new QueryParseContext(mockRegistry, stParser, ParseFieldMatcher.STRICT);
XContentParser.Token token = stParser.nextToken();
assertSame(XContentParser.Token.START_OBJECT, token);
GeoHashGridParser parser = new GeoHashGridParser();
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/significant/SignificanceHeuristicTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/significant/SignificanceHeuristicTests.java
index 14b408ca40..02094f4faf 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/significant/SignificanceHeuristicTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/significant/SignificanceHeuristicTests.java
@@ -249,9 +249,7 @@ public class SignificanceHeuristicTests extends ESTestCase {
IndicesQueriesRegistry registry = new IndicesQueriesRegistry();
try {
XContentParser stParser = JsonXContent.jsonXContent.createParser("{\"field\":\"text\", " + faultyHeuristicDefinition + ",\"min_doc_count\":200}");
- QueryParseContext parseContext = new QueryParseContext(registry);
- parseContext.reset(stParser);
- parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
+ QueryParseContext parseContext = new QueryParseContext(registry, stParser, ParseFieldMatcher.STRICT);
stParser.nextToken();
new SignificantTermsParser(heuristicParserMapper, registry).parse("testagg", parseContext);
fail();
@@ -272,9 +270,7 @@ public class SignificanceHeuristicTests extends ESTestCase {
private SignificanceHeuristic parseSignificanceHeuristic(SignificanceHeuristicParserMapper heuristicParserMapper,
SearchContext searchContext, XContentParser stParser) throws IOException {
IndicesQueriesRegistry registry = new IndicesQueriesRegistry();
- QueryParseContext parseContext = new QueryParseContext(registry);
- parseContext.reset(stParser);
- parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
+ QueryParseContext parseContext = new QueryParseContext(registry, stParser, ParseFieldMatcher.STRICT);
stParser.nextToken();
SignificantTermsAggregatorBuilder aggregatorFactory = (SignificantTermsAggregatorBuilder) new SignificantTermsParser(
heuristicParserMapper, registry).parse("testagg", parseContext);
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java
index bd84853d93..00bb04dde9 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java
@@ -173,9 +173,7 @@ public class TopHitsTests extends BaseAggregationTestCase<TopHitsAggregatorBuild
"}";
try {
XContentParser parser = XContentFactory.xContent(source).createParser(source);
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
aggParsers.parseAggregators(parseContext);
fail();
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/moving/avg/MovAvgTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/moving/avg/MovAvgTests.java
index e4d134b8e3..0bfebf0807 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/moving/avg/MovAvgTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/moving/avg/MovAvgTests.java
@@ -107,9 +107,7 @@ public class MovAvgTests extends BasePipelineAggregationTestCase<MovAvgPipelineA
" }" +
"}";
XContentParser parser = XContentFactory.xContent(json).createParser(json);
- QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
assertSame(XContentParser.Token.FIELD_NAME, parser.nextToken());
assertEquals(expected.name(), parser.currentName());
diff --git a/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java b/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java
index 30f6aa1787..3df4e88e87 100644
--- a/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java
@@ -450,7 +450,6 @@ public class SearchSourceBuilderTests extends ESTestCase {
private void assertParseSearchSource(SearchSourceBuilder testBuilder, BytesReference searchSourceAsBytes) throws IOException {
XContentParser parser = XContentFactory.xContent(searchSourceAsBytes).createParser(searchSourceAsBytes);
QueryParseContext parseContext = createParseContext(parser);
- parseContext.reset(parser);
if (randomBoolean()) {
parser.nextToken(); // sometimes we move it on the START_OBJECT to test the embedded case
}
@@ -461,9 +460,7 @@ public class SearchSourceBuilderTests extends ESTestCase {
}
private static QueryParseContext createParseContext(XContentParser parser) {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.reset(parser);
- context.parseFieldMatcher(parseFieldMatcher);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, parseFieldMatcher);
return context;
}
diff --git a/core/src/test/java/org/elasticsearch/search/highlight/HighlightBuilderTests.java b/core/src/test/java/org/elasticsearch/search/highlight/HighlightBuilderTests.java
index 322e6e2c9a..bc674c19a8 100644
--- a/core/src/test/java/org/elasticsearch/search/highlight/HighlightBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/search/highlight/HighlightBuilderTests.java
@@ -143,8 +143,6 @@ public class HighlightBuilderTests extends ESTestCase {
* creates random highlighter, renders it to xContent and back to new instance that should be equal to original
*/
public void testFromXContent() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
for (int runs = 0; runs < NUMBER_OF_TESTBUILDERS; runs++) {
HighlightBuilder highlightBuilder = randomHighlighterBuilder();
XContentBuilder builder = XContentFactory.contentBuilder(randomFrom(XContentType.values()));
@@ -155,7 +153,7 @@ public class HighlightBuilderTests extends ESTestCase {
XContentBuilder shuffled = shuffleXContent(builder, Collections.emptySet());
XContentParser parser = XContentHelper.createParser(shuffled.bytes());
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.EMPTY);
parser.nextToken();
HighlightBuilder secondHighlightBuilder;
try {
@@ -194,10 +192,9 @@ public class HighlightBuilderTests extends ESTestCase {
}
}
- private <T extends Throwable> T expectParseThrows(Class<T> exceptionClass, String highlightElement) throws IOException {
+ private static <T extends Throwable> T expectParseThrows(Class<T> exceptionClass, String highlightElement) throws IOException {
XContentParser parser = XContentFactory.xContent(highlightElement).createParser(highlightElement);
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
return expectThrows(exceptionClass, () -> HighlightBuilder.fromXContent(context));
}
@@ -401,14 +398,13 @@ public class HighlightBuilderTests extends ESTestCase {
* adds a simple json test for this.
*/
public void testParsingTagsSchema() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
+
String highlightElement = "{\n" +
" \"tags_schema\" : \"styled\"\n" +
"}\n";
XContentParser parser = XContentFactory.xContent(highlightElement).createParser(highlightElement);
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.EMPTY);
HighlightBuilder highlightBuilder = HighlightBuilder.fromXContent(context);
assertArrayEquals("setting tags_schema 'styled' should alter pre_tags", HighlightBuilder.DEFAULT_STYLED_PRE_TAG,
highlightBuilder.preTags());
@@ -420,7 +416,7 @@ public class HighlightBuilderTests extends ESTestCase {
"}\n";
parser = XContentFactory.xContent(highlightElement).createParser(highlightElement);
- context.reset(parser);
+ context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.EMPTY);
highlightBuilder = HighlightBuilder.fromXContent(context);
assertArrayEquals("setting tags_schema 'default' should alter pre_tags", HighlightBuilder.DEFAULT_PRE_TAGS,
highlightBuilder.preTags());
@@ -438,26 +434,24 @@ public class HighlightBuilderTests extends ESTestCase {
* test parsing empty highlight or empty fields blocks
*/
public void testParsingEmptyStructure() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
String highlightElement = "{ }";
XContentParser parser = XContentFactory.xContent(highlightElement).createParser(highlightElement);
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.EMPTY);
HighlightBuilder highlightBuilder = HighlightBuilder.fromXContent(context);
assertEquals("expected plain HighlightBuilder", new HighlightBuilder(), highlightBuilder);
highlightElement = "{ \"fields\" : { } }";
parser = XContentFactory.xContent(highlightElement).createParser(highlightElement);
- context.reset(parser);
+ context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.EMPTY);
highlightBuilder = HighlightBuilder.fromXContent(context);
assertEquals("defining no field should return plain HighlightBuilder", new HighlightBuilder(), highlightBuilder);
highlightElement = "{ \"fields\" : { \"foo\" : { } } }";
parser = XContentFactory.xContent(highlightElement).createParser(highlightElement);
- context.reset(parser);
+ context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.EMPTY);
highlightBuilder = HighlightBuilder.fromXContent(context);
assertEquals("expected HighlightBuilder with field", new HighlightBuilder().field(new Field("foo")), highlightBuilder);
}
diff --git a/core/src/test/java/org/elasticsearch/search/rescore/QueryRescoreBuilderTests.java b/core/src/test/java/org/elasticsearch/search/rescore/QueryRescoreBuilderTests.java
index 102b4850bd..1b221e3199 100644
--- a/core/src/test/java/org/elasticsearch/search/rescore/QueryRescoreBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/search/rescore/QueryRescoreBuilderTests.java
@@ -130,8 +130,6 @@ public class QueryRescoreBuilderTests extends ESTestCase {
* creates random rescorer, renders it to xContent and back to new instance that should be equal to original
*/
public void testFromXContent() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
for (int runs = 0; runs < NUMBER_OF_TESTBUILDERS; runs++) {
RescoreBuilder<?> rescoreBuilder = randomRescoreBuilder();
XContentBuilder builder = XContentFactory.contentBuilder(randomFrom(XContentType.values()));
@@ -143,7 +141,7 @@ public class QueryRescoreBuilderTests extends ESTestCase {
XContentParser parser = XContentHelper.createParser(shuffled.bytes());
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
parser.nextToken();
RescoreBuilder<?> secondRescoreBuilder = RescoreBuilder.parseFromXContent(context);
assertNotSame(rescoreBuilder, secondRescoreBuilder);
@@ -188,14 +186,12 @@ public class QueryRescoreBuilderTests extends ESTestCase {
* test parsing exceptions for incorrect rescorer syntax
*/
public void testUnknownFieldsExpection() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
String rescoreElement = "{\n" +
" \"window_size\" : 20,\n" +
" \"bad_rescorer_name\" : { }\n" +
"}\n";
- prepareContext(context, rescoreElement);
+ QueryParseContext context = createContext(rescoreElement);
try {
RescoreBuilder.parseFromXContent(context);
fail("expected a parsing exception");
@@ -206,7 +202,7 @@ public class QueryRescoreBuilderTests extends ESTestCase {
rescoreElement = "{\n" +
" \"bad_fieldName\" : 20\n" +
"}\n";
- prepareContext(context, rescoreElement);
+ context = createContext(rescoreElement);
try {
RescoreBuilder.parseFromXContent(context);
fail("expected a parsing exception");
@@ -218,7 +214,7 @@ public class QueryRescoreBuilderTests extends ESTestCase {
" \"window_size\" : 20,\n" +
" \"query\" : [ ]\n" +
"}\n";
- prepareContext(context, rescoreElement);
+ context = createContext(rescoreElement);
try {
RescoreBuilder.parseFromXContent(context);
fail("expected a parsing exception");
@@ -227,7 +223,7 @@ public class QueryRescoreBuilderTests extends ESTestCase {
}
rescoreElement = "{ }";
- prepareContext(context, rescoreElement);
+ context = createContext(rescoreElement);
try {
RescoreBuilder.parseFromXContent(context);
fail("expected a parsing exception");
@@ -239,7 +235,7 @@ public class QueryRescoreBuilderTests extends ESTestCase {
" \"window_size\" : 20,\n" +
" \"query\" : { \"bad_fieldname\" : 1.0 } \n" +
"}\n";
- prepareContext(context, rescoreElement);
+ context = createContext(rescoreElement);
try {
RescoreBuilder.parseFromXContent(context);
fail("expected a parsing exception");
@@ -251,7 +247,7 @@ public class QueryRescoreBuilderTests extends ESTestCase {
" \"window_size\" : 20,\n" +
" \"query\" : { \"rescore_query\" : { \"unknown_queryname\" : { } } } \n" +
"}\n";
- prepareContext(context, rescoreElement);
+ context = createContext(rescoreElement);
try {
RescoreBuilder.parseFromXContent(context);
fail("expected a parsing exception");
@@ -263,18 +259,19 @@ public class QueryRescoreBuilderTests extends ESTestCase {
" \"window_size\" : 20,\n" +
" \"query\" : { \"rescore_query\" : { \"match_all\" : { } } } \n"
+ "}\n";
- prepareContext(context, rescoreElement);
+ context = createContext(rescoreElement);
RescoreBuilder.parseFromXContent(context);
}
/**
* create a new parser from the rescorer string representation and reset context with it
*/
- private static void prepareContext(QueryParseContext context, String rescoreElement) throws IOException {
+ private static QueryParseContext createContext(String rescoreElement) throws IOException {
XContentParser parser = XContentFactory.xContent(rescoreElement).createParser(rescoreElement);
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
// move to first token, this is where the internal fromXContent
assertTrue(parser.nextToken() == XContentParser.Token.START_OBJECT);
+ return context;
}
private static RescoreBuilder<?> mutate(RescoreBuilder<?> original) throws IOException {
diff --git a/core/src/test/java/org/elasticsearch/search/searchafter/SearchAfterBuilderTests.java b/core/src/test/java/org/elasticsearch/search/searchafter/SearchAfterBuilderTests.java
index d15c88dc82..14bf8eac7e 100644
--- a/core/src/test/java/org/elasticsearch/search/searchafter/SearchAfterBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/search/searchafter/SearchAfterBuilderTests.java
@@ -25,7 +25,6 @@ import org.elasticsearch.common.io.stream.BytesStreamOutput;
import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
import org.elasticsearch.common.io.stream.StreamInput;
-import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -212,8 +211,6 @@ public class SearchAfterBuilderTests extends ESTestCase {
}
public void testFromXContent() throws Exception {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
for (int runs = 0; runs < 20; runs++) {
SearchAfterBuilder searchAfterBuilder = randomJsonSearchFromBuilder();
XContentBuilder builder = XContentFactory.contentBuilder(randomFrom(XContentType.values()));
@@ -224,7 +221,7 @@ public class SearchAfterBuilderTests extends ESTestCase {
searchAfterBuilder.innerToXContent(builder);
builder.endObject();
XContentParser parser = XContentHelper.createParser(builder.bytes());
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
parser.nextToken();
parser.nextToken();
parser.nextToken();
@@ -234,7 +231,7 @@ public class SearchAfterBuilderTests extends ESTestCase {
assertEquals(searchAfterBuilder.hashCode(), secondSearchAfterBuilder.hashCode());
}
}
-
+
public void testWithNullArray() throws Exception {
SearchAfterBuilder builder = new SearchAfterBuilder();
try {
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 d25abd12f3..fecc048f29 100644
--- a/core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java
+++ b/core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java
@@ -21,6 +21,7 @@ package org.elasticsearch.search.sort;
import org.apache.lucene.search.SortField;
import org.apache.lucene.util.Accountable;
+import org.elasticsearch.common.ParseFieldMatcher;
import org.elasticsearch.common.io.stream.BytesStreamOutput;
import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
@@ -141,8 +142,7 @@ public abstract class AbstractSortTestCase<T extends SortBuilder<T>> extends EST
String elementName = itemParser.currentName();
itemParser.nextToken();
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.reset(itemParser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, itemParser, ParseFieldMatcher.STRICT);
T parsedItem = fromXContent(context, elementName);
assertNotSame(testItem, parsedItem);
assertEquals(testItem, parsedItem);
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 1ea2180f5e..5ca9aef658 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.ParseFieldMatcher;
import org.elasticsearch.common.ParsingException;
-import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.query.QueryParseContext;
@@ -109,10 +108,8 @@ public class FieldSortBuilderTests extends AbstractSortTestCase<FieldSortBuilder
assertEquals(builder.getFieldName(), sortField.getField());
}
}
-
+
public void testReverseOptionFails() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
String json = "{ \"post_date\" : {\"reverse\" : true} },\n";
XContentParser parser = XContentFactory.xContent(json).createParser(json);
@@ -121,7 +118,7 @@ public class FieldSortBuilderTests extends AbstractSortTestCase<FieldSortBuilder
parser.nextToken();
parser.nextToken();
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
try {
FieldSortBuilder.fromXContent(context, "");
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 f13518dc3f..87fd183f1c 100644
--- a/core/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java
@@ -22,21 +22,26 @@ package org.elasticsearch.search.sort;
import org.apache.lucene.search.SortField;
import org.elasticsearch.ElasticsearchParseException;
+import org.elasticsearch.common.ParseFieldMatcher;
import org.elasticsearch.common.ParsingException;
import org.elasticsearch.common.bytes.BytesArray;
import org.elasticsearch.common.geo.GeoDistance;
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.unit.DistanceUnit;
+import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentHelper;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.mapper.MappedFieldType;
import org.elasticsearch.index.mapper.geo.GeoPointFieldMapper;
import org.elasticsearch.index.query.QueryParseContext;
+import org.elasticsearch.indices.query.IndicesQueriesRegistry;
import org.elasticsearch.test.geo.RandomGeoGenerator;
import java.io.IOException;
import java.util.Arrays;
+import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
+
public class GeoDistanceSortBuilderTests extends AbstractSortTestCase<GeoDistanceSortBuilder> {
@Override
@@ -215,8 +220,7 @@ public class GeoDistanceSortBuilderTests extends AbstractSortTestCase<GeoDistanc
XContentParser itemParser = XContentHelper.createParser(new BytesArray(json));
itemParser.nextToken();
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.reset(itemParser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, itemParser, ParseFieldMatcher.STRICT);
try {
GeoDistanceSortBuilder.fromXContent(context, "");
@@ -237,8 +241,7 @@ public class GeoDistanceSortBuilderTests extends AbstractSortTestCase<GeoDistanc
XContentParser itemParser = XContentHelper.createParser(new BytesArray(json));
itemParser.nextToken();
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.reset(itemParser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, itemParser, ParseFieldMatcher.STRICT);
try {
GeoDistanceSortBuilder.fromXContent(context, "");
@@ -255,14 +258,13 @@ public class GeoDistanceSortBuilderTests extends AbstractSortTestCase<GeoDistanc
XContentParser itemParser = XContentHelper.createParser(new BytesArray(json));
itemParser.nextToken();
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.reset(itemParser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, itemParser, ParseFieldMatcher.STRICT);
try {
GeoDistanceSortBuilder item = GeoDistanceSortBuilder.fromXContent(context, "");
item.ignoreMalformed(false);
item.build(createMockShardContext());
-
+
fail("adding reverse sorting option should fail with an exception");
} catch (ElasticsearchParseException e) {
assertEquals("illegal latitude value [269.384765625] for [GeoDistanceSort] for field [reverse].", e.getMessage());
@@ -284,8 +286,7 @@ public class GeoDistanceSortBuilderTests extends AbstractSortTestCase<GeoDistanc
XContentParser itemParser = XContentHelper.createParser(new BytesArray(json));
itemParser.nextToken();
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.reset(itemParser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, itemParser, ParseFieldMatcher.STRICT);
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> GeoDistanceSortBuilder.fromXContent(context, ""));
assertEquals("sort_mode [sum] isn't supported for sorting by geo distance", e.getMessage());
@@ -311,8 +312,7 @@ public class GeoDistanceSortBuilderTests extends AbstractSortTestCase<GeoDistanc
XContentParser itemParser = XContentHelper.createParser(new BytesArray(json));
itemParser.nextToken();
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.reset(itemParser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, itemParser, ParseFieldMatcher.STRICT);
GeoDistanceSortBuilder result = GeoDistanceSortBuilder.fromXContent(context, json);
assertEquals("[-19.700583312660456, -2.8225036337971687, "
@@ -323,6 +323,122 @@ public class GeoDistanceSortBuilderTests extends AbstractSortTestCase<GeoDistanc
+ "-39.03717711567879, 44.74099852144718]", Arrays.toString(result.points()));
}
+ public void testGeoDistanceSortParserManyPointsNoException() throws Exception {
+ XContentBuilder sortBuilder = jsonBuilder();
+ sortBuilder.startObject();
+ sortBuilder.startArray("location");
+ sortBuilder.startArray().value(1.2).value(3).endArray().startArray().value(5).value(6).endArray();
+ sortBuilder.endArray();
+ sortBuilder.field("order", "desc");
+ sortBuilder.field("unit", "km");
+ sortBuilder.field("mode", "max");
+ sortBuilder.endObject();
+ parse(sortBuilder);
+
+ sortBuilder = jsonBuilder();
+ sortBuilder.startObject();
+ sortBuilder.startArray("location");
+ sortBuilder.value(new GeoPoint(1.2, 3)).value(new GeoPoint(1.2, 3));
+ sortBuilder.endArray();
+ sortBuilder.field("order", "desc");
+ sortBuilder.field("unit", "km");
+ sortBuilder.field("mode", "max");
+ sortBuilder.endObject();
+ parse(sortBuilder);
+
+ sortBuilder = jsonBuilder();
+ sortBuilder.startObject();
+ sortBuilder.startArray("location");
+ sortBuilder.value("1,2").value("3,4");
+ sortBuilder.endArray();
+ sortBuilder.field("order", "desc");
+ sortBuilder.field("unit", "km");
+ sortBuilder.field("mode", "max");
+ sortBuilder.endObject();
+ parse(sortBuilder);
+
+ sortBuilder = jsonBuilder();
+ sortBuilder.startObject();
+ sortBuilder.startArray("location");
+ sortBuilder.value("s3y0zh7w1z0g").value("s6wjr4et3f8v");
+ sortBuilder.endArray();
+ sortBuilder.field("order", "desc");
+ sortBuilder.field("unit", "km");
+ sortBuilder.field("mode", "max");
+ sortBuilder.endObject();
+ parse(sortBuilder);
+
+ sortBuilder = jsonBuilder();
+ sortBuilder.startObject();
+ sortBuilder.startArray("location");
+ sortBuilder.value(1.2).value(3);
+ sortBuilder.endArray();
+ sortBuilder.field("order", "desc");
+ sortBuilder.field("unit", "km");
+ sortBuilder.field("mode", "max");
+ sortBuilder.endObject();
+ parse(sortBuilder);
+
+ sortBuilder = jsonBuilder();
+ sortBuilder.startObject();
+ sortBuilder.field("location", new GeoPoint(1, 2));
+ sortBuilder.field("order", "desc");
+ sortBuilder.field("unit", "km");
+ sortBuilder.field("mode", "max");
+ sortBuilder.endObject();
+ parse(sortBuilder);
+
+ sortBuilder = jsonBuilder();
+ sortBuilder.startObject();
+ sortBuilder.field("location", "1,2");
+ sortBuilder.field("order", "desc");
+ sortBuilder.field("unit", "km");
+ sortBuilder.field("mode", "max");
+ sortBuilder.endObject();
+ parse(sortBuilder);
+
+ sortBuilder = jsonBuilder();
+ sortBuilder.startObject();
+ sortBuilder.field("location", "s3y0zh7w1z0g");
+ sortBuilder.field("order", "desc");
+ sortBuilder.field("unit", "km");
+ sortBuilder.field("mode", "max");
+ sortBuilder.endObject();
+ parse(sortBuilder);
+
+ sortBuilder = jsonBuilder();
+ sortBuilder.startObject();
+ sortBuilder.startArray("location");
+ sortBuilder.value(new GeoPoint(1, 2)).value("s3y0zh7w1z0g").startArray().value(1).value(2).endArray().value("1,2");
+ sortBuilder.endArray();
+ sortBuilder.field("order", "desc");
+ sortBuilder.field("unit", "km");
+ sortBuilder.field("mode", "max");
+ sortBuilder.endObject();
+ parse(sortBuilder);
+ }
+
+ public void testGeoDistanceSortDeprecatedSortModeException() throws Exception {
+ XContentBuilder sortBuilder = jsonBuilder();
+ sortBuilder.startObject();
+ sortBuilder.startArray("location");
+ sortBuilder.startArray().value(1.2).value(3).endArray().startArray().value(5).value(6).endArray();
+ sortBuilder.endArray();
+ sortBuilder.field("order", "desc");
+ sortBuilder.field("unit", "km");
+ sortBuilder.field("sort_mode", "max");
+ sortBuilder.endObject();
+ IllegalArgumentException ex = expectThrows(IllegalArgumentException.class, () -> parse(sortBuilder));
+ assertEquals("Deprecated field [sort_mode] used, expected [mode] instead", ex.getMessage());
+ }
+
+ private static GeoDistanceSortBuilder parse(XContentBuilder sortBuilder) throws Exception {
+ XContentParser parser = XContentHelper.createParser(sortBuilder.bytes());
+ QueryParseContext parseContext = new QueryParseContext(new IndicesQueriesRegistry(), parser, ParseFieldMatcher.STRICT);
+ parser.nextToken();
+ return GeoDistanceSortBuilder.fromXContent(parseContext, null);
+ }
+
@Override
protected GeoDistanceSortBuilder fromXContent(QueryParseContext context, String fieldName) throws IOException {
return GeoDistanceSortBuilder.fromXContent(context, fieldName);
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 2a99c8318d..142a88c403 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.ParseFieldMatcher;
import org.elasticsearch.common.ParsingException;
-import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.query.QueryParseContext;
@@ -67,8 +66,6 @@ public class ScoreSortBuilderTests extends AbstractSortTestCase<ScoreSortBuilder
* instead of the `reverse` field that we render in toXContent
*/
public void testParseOrder() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
SortOrder order = randomBoolean() ? SortOrder.ASC : SortOrder.DESC;
String scoreSortString = "{ \"_score\": { \"order\": \""+ order.toString() +"\" }}";
XContentParser parser = XContentFactory.xContent(scoreSortString).createParser(scoreSortString);
@@ -77,14 +74,12 @@ public class ScoreSortBuilderTests extends AbstractSortTestCase<ScoreSortBuilder
parser.nextToken();
parser.nextToken();
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
ScoreSortBuilder scoreSort = ScoreSortBuilder.fromXContent(context, "_score");
assertEquals(order, scoreSort.order());
}
public void testReverseOptionFails() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
String json = "{ \"_score\": { \"reverse\": true }}";
XContentParser parser = XContentFactory.xContent(json).createParser(json);
// need to skip until parser is located on second START_OBJECT
@@ -92,7 +87,7 @@ public class ScoreSortBuilderTests extends AbstractSortTestCase<ScoreSortBuilder
parser.nextToken();
parser.nextToken();
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.EMPTY);
try {
ScoreSortBuilder.fromXContent(context, "_score");
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 0e04dc9e4d..a1a24632f0 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.ParseFieldMatcher;
import org.elasticsearch.common.ParsingException;
-import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.query.QueryParseContext;
@@ -160,8 +159,6 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild
}
public void testParseJson() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
String scriptSort = "{\n" +
"\"_script\" : {\n" +
"\"type\" : \"number\",\n" +
@@ -179,7 +176,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild
parser.nextToken();
parser.nextToken();
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
ScriptSortBuilder builder = ScriptSortBuilder.fromXContent(context, null);
assertEquals("doc['field_name'].value * factor", builder.script().getScript());
assertNull(builder.script().getLang());
@@ -193,8 +190,6 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild
}
public void testParseJsonOldStyle() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
String scriptSort = "{\n" +
"\"_script\" : {\n" +
"\"type\" : \"number\",\n" +
@@ -210,7 +205,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild
parser.nextToken();
parser.nextToken();
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
ScriptSortBuilder builder = ScriptSortBuilder.fromXContent(context, null);
assertEquals("doc['field_name'].value * factor", builder.script().getScript());
assertNull(builder.script().getLang());
@@ -224,23 +219,19 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild
}
public void testParseBadFieldNameExceptions() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
String scriptSort = "{\"_script\" : {" + "\"bad_field\" : \"number\"" + "} }";
XContentParser parser = XContentFactory.xContent(scriptSort).createParser(scriptSort);
parser.nextToken();
parser.nextToken();
parser.nextToken();
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
exceptionRule.expect(ParsingException.class);
exceptionRule.expectMessage("failed to parse field [bad_field]");
ScriptSortBuilder.fromXContent(context, null);
}
public void testParseBadFieldNameExceptionsOnStartObject() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
String scriptSort = "{\"_script\" : {" + "\"bad_field\" : { \"order\" : \"asc\" } } }";
XContentParser parser = XContentFactory.xContent(scriptSort).createParser(scriptSort);
@@ -248,23 +239,20 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild
parser.nextToken();
parser.nextToken();
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
exceptionRule.expect(ParsingException.class);
exceptionRule.expectMessage("failed to parse field [bad_field]");
ScriptSortBuilder.fromXContent(context, null);
}
public void testParseUnexpectedToken() throws IOException {
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
-
String scriptSort = "{\"_script\" : {" + "\"script\" : [ \"order\" : \"asc\" ] } }";
XContentParser parser = XContentFactory.xContent(scriptSort).createParser(scriptSort);
parser.nextToken();
parser.nextToken();
parser.nextToken();
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, parser, ParseFieldMatcher.STRICT);
exceptionRule.expect(ParsingException.class);
exceptionRule.expectMessage("unexpected token [START_ARRAY]");
ScriptSortBuilder.fromXContent(context, null);
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 61447d8add..f31158ff34 100644
--- a/core/src/test/java/org/elasticsearch/search/sort/SortBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/search/sort/SortBuilderTests.java
@@ -19,6 +19,7 @@ x * Licensed to Elasticsearch under one or more contributor
package org.elasticsearch.search.sort;
+import org.elasticsearch.common.ParseFieldMatcher;
import org.elasticsearch.common.bytes.BytesArray;
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
@@ -236,8 +237,7 @@ public class SortBuilderTests extends ESTestCase {
private static List<SortBuilder<?>> parseSort(String jsonString) throws IOException {
XContentParser itemParser = XContentHelper.createParser(new BytesArray(jsonString));
- QueryParseContext context = new QueryParseContext(indicesQueriesRegistry);
- context.reset(itemParser);
+ QueryParseContext context = new QueryParseContext(indicesQueriesRegistry, itemParser, ParseFieldMatcher.STRICT);
assertEquals(XContentParser.Token.START_OBJECT, itemParser.nextToken());
assertEquals(XContentParser.Token.FIELD_NAME, itemParser.nextToken());
diff --git a/core/src/test/java/org/elasticsearch/search/sort/SortParserTests.java b/core/src/test/java/org/elasticsearch/search/sort/SortParserTests.java
deleted file mode 100644
index a5ef892bf1..0000000000
--- a/core/src/test/java/org/elasticsearch/search/sort/SortParserTests.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * 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.search.sort;
-
-import org.elasticsearch.common.ParseFieldMatcher;
-import org.elasticsearch.common.geo.GeoPoint;
-import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.common.xcontent.XContentBuilder;
-import org.elasticsearch.common.xcontent.XContentHelper;
-import org.elasticsearch.common.xcontent.XContentParser;
-import org.elasticsearch.index.IndexService;
-import org.elasticsearch.index.query.QueryParseContext;
-import org.elasticsearch.test.ESSingleNodeTestCase;
-import org.elasticsearch.test.TestSearchContext;
-
-import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
-
-public class SortParserTests extends ESSingleNodeTestCase {
- public void testGeoDistanceSortParserManyPointsNoException() throws Exception {
- XContentBuilder mapping = jsonBuilder();
- mapping.startObject().startObject("type").startObject("properties").startObject("location").field("type", "geo_point").endObject().endObject().endObject().endObject();
- IndexService indexService = createIndex("testidx", Settings.builder().build(), "type", mapping);
- TestSearchContext context = (TestSearchContext) createSearchContext(indexService);
- context.getQueryShardContext().setTypes("type");
-
- XContentBuilder sortBuilder = jsonBuilder();
- sortBuilder.startObject();
- sortBuilder.startArray("location");
- sortBuilder.startArray().value(1.2).value(3).endArray().startArray().value(5).value(6).endArray();
- sortBuilder.endArray();
- sortBuilder.field("order", "desc");
- sortBuilder.field("unit", "km");
- sortBuilder.field("mode", "max");
- sortBuilder.endObject();
- parse(context, sortBuilder);
-
- sortBuilder = jsonBuilder();
- sortBuilder.startObject();
- sortBuilder.startArray("location");
- sortBuilder.value(new GeoPoint(1.2, 3)).value(new GeoPoint(1.2, 3));
- sortBuilder.endArray();
- sortBuilder.field("order", "desc");
- sortBuilder.field("unit", "km");
- sortBuilder.field("mode", "max");
- sortBuilder.endObject();
- parse(context, sortBuilder);
-
- sortBuilder = jsonBuilder();
- sortBuilder.startObject();
- sortBuilder.startArray("location");
- sortBuilder.value("1,2").value("3,4");
- sortBuilder.endArray();
- sortBuilder.field("order", "desc");
- sortBuilder.field("unit", "km");
- sortBuilder.field("mode", "max");
- sortBuilder.endObject();
- parse(context, sortBuilder);
-
- sortBuilder = jsonBuilder();
- sortBuilder.startObject();
- sortBuilder.startArray("location");
- sortBuilder.value("s3y0zh7w1z0g").value("s6wjr4et3f8v");
- sortBuilder.endArray();
- sortBuilder.field("order", "desc");
- sortBuilder.field("unit", "km");
- sortBuilder.field("mode", "max");
- sortBuilder.endObject();
- parse(context, sortBuilder);
-
- sortBuilder = jsonBuilder();
- sortBuilder.startObject();
- sortBuilder.startArray("location");
- sortBuilder.value(1.2).value(3);
- sortBuilder.endArray();
- sortBuilder.field("order", "desc");
- sortBuilder.field("unit", "km");
- sortBuilder.field("mode", "max");
- sortBuilder.endObject();
- parse(context, sortBuilder);
-
- sortBuilder = jsonBuilder();
- sortBuilder.startObject();
- sortBuilder.field("location", new GeoPoint(1, 2));
- sortBuilder.field("order", "desc");
- sortBuilder.field("unit", "km");
- sortBuilder.field("mode", "max");
- sortBuilder.endObject();
- parse(context, sortBuilder);
-
- sortBuilder = jsonBuilder();
- sortBuilder.startObject();
- sortBuilder.field("location", "1,2");
- sortBuilder.field("order", "desc");
- sortBuilder.field("unit", "km");
- sortBuilder.field("mode", "max");
- sortBuilder.endObject();
- parse(context, sortBuilder);
-
- sortBuilder = jsonBuilder();
- sortBuilder.startObject();
- sortBuilder.field("location", "s3y0zh7w1z0g");
- sortBuilder.field("order", "desc");
- sortBuilder.field("unit", "km");
- sortBuilder.field("mode", "max");
- sortBuilder.endObject();
- parse(context, sortBuilder);
-
- sortBuilder = jsonBuilder();
- sortBuilder.startObject();
- sortBuilder.startArray("location");
- sortBuilder.value(new GeoPoint(1, 2)).value("s3y0zh7w1z0g").startArray().value(1).value(2).endArray().value("1,2");
- sortBuilder.endArray();
- sortBuilder.field("order", "desc");
- sortBuilder.field("unit", "km");
- sortBuilder.field("mode", "max");
- sortBuilder.endObject();
- parse(context, sortBuilder);
- }
-
- public void testGeoDistanceSortDeprecatedSortModeException() throws Exception {
- XContentBuilder mapping = jsonBuilder();
- mapping.startObject().startObject("type").startObject("properties").startObject("location").field("type", "geo_point").endObject().endObject().endObject().endObject();
- IndexService indexService = createIndex("testidx", Settings.builder().build(), "type", mapping);
- TestSearchContext context = (TestSearchContext) createSearchContext(indexService);
- context.getQueryShardContext().setTypes("type");
-
- XContentBuilder sortBuilder = jsonBuilder();
- sortBuilder.startObject();
- sortBuilder.startArray("location");
- sortBuilder.startArray().value(1.2).value(3).endArray().startArray().value(5).value(6).endArray();
- sortBuilder.endArray();
- sortBuilder.field("order", "desc");
- sortBuilder.field("unit", "km");
- sortBuilder.field("sort_mode", "max");
- sortBuilder.endObject();
- IllegalArgumentException ex = expectThrows(IllegalArgumentException.class, () -> parse(context, sortBuilder));
- assertEquals("Deprecated field [sort_mode] used, expected [mode] instead", ex.getMessage());
- }
-
- protected void parse(TestSearchContext context, XContentBuilder sortBuilder) throws Exception {
- QueryParseContext parseContext = context.getQueryShardContext().parseContext();
- XContentParser parser = XContentHelper.createParser(sortBuilder.bytes());
- parseContext.reset(parser);
- parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
- parser.nextToken();
- GeoDistanceSortBuilder.fromXContent(parseContext, null);
- }
-}
diff --git a/core/src/test/java/org/elasticsearch/search/suggest/AbstractSuggestionBuilderTestCase.java b/core/src/test/java/org/elasticsearch/search/suggest/AbstractSuggestionBuilderTestCase.java
index ccf8700af0..710f001a27 100644
--- a/core/src/test/java/org/elasticsearch/search/suggest/AbstractSuggestionBuilderTestCase.java
+++ b/core/src/test/java/org/elasticsearch/search/suggest/AbstractSuggestionBuilderTestCase.java
@@ -146,8 +146,6 @@ public abstract class AbstractSuggestionBuilderTestCase<SB extends SuggestionBui
* instance that should be equal to original
*/
public void testFromXContent() throws IOException {
- QueryParseContext context = new QueryParseContext(null);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
for (int runs = 0; runs < NUMBER_OF_TESTBUILDERS; runs++) {
SB suggestionBuilder = randomTestBuilder();
XContentBuilder xContentBuilder = XContentFactory.contentBuilder(randomFrom(XContentType.values()));
@@ -160,7 +158,7 @@ public abstract class AbstractSuggestionBuilderTestCase<SB extends SuggestionBui
XContentBuilder shuffled = shuffleXContent(xContentBuilder, shuffleProtectedFields());
XContentParser parser = XContentHelper.createParser(shuffled.bytes());
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
// we need to skip the start object and the name, those will be parsed by outer SuggestBuilder
parser.nextToken();
@@ -227,9 +225,8 @@ public abstract class AbstractSuggestionBuilderTestCase<SB extends SuggestionBui
}
protected static QueryParseContext newParseContext(final String xcontent) throws IOException {
- final QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
- parseContext.reset(XContentFactory.xContent(xcontent).createParser(xcontent));
- parseContext.parseFieldMatcher(parseFieldMatcher);
+ XContentParser parser = XContentFactory.xContent(xcontent).createParser(xcontent);
+ final QueryParseContext parseContext = new QueryParseContext(queriesRegistry, parser, parseFieldMatcher);
return parseContext;
}
}
diff --git a/core/src/test/java/org/elasticsearch/search/suggest/SuggestBuilderTests.java b/core/src/test/java/org/elasticsearch/search/suggest/SuggestBuilderTests.java
index 2ce075cc60..77dc2e01b5 100644
--- a/core/src/test/java/org/elasticsearch/search/suggest/SuggestBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/search/suggest/SuggestBuilderTests.java
@@ -22,7 +22,6 @@ package org.elasticsearch.search.suggest;
import org.elasticsearch.common.ParseFieldMatcher;
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
import org.elasticsearch.common.io.stream.StreamInput;
-import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -30,6 +29,7 @@ import org.elasticsearch.common.xcontent.XContentHelper;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryParseContext;
+import org.elasticsearch.indices.query.IndicesQueriesRegistry;
import org.elasticsearch.search.suggest.completion.CompletionSuggesterBuilderTests;
import org.elasticsearch.search.suggest.completion.WritableTestCase;
import org.elasticsearch.search.suggest.phrase.PhraseSuggestionBuilderTests;
@@ -69,8 +69,6 @@ public class SuggestBuilderTests extends WritableTestCase<SuggestBuilder> {
* creates random suggestion builder, renders it to xContent and back to new instance that should be equal to original
*/
public void testFromXContent() throws IOException {
- QueryParseContext context = new QueryParseContext(null);
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
for (int runs = 0; runs < NUMBER_OF_RUNS; runs++) {
SuggestBuilder suggestBuilder = createTestModel();
XContentBuilder xContentBuilder = XContentFactory.contentBuilder(randomFrom(XContentType.values()));
@@ -79,8 +77,7 @@ public class SuggestBuilderTests extends WritableTestCase<SuggestBuilder> {
}
suggestBuilder.toXContent(xContentBuilder, ToXContent.EMPTY_PARAMS);
XContentParser parser = XContentHelper.createParser(xContentBuilder.bytes());
- context.reset(parser);
-
+ QueryParseContext context = new QueryParseContext(new IndicesQueriesRegistry(), parser, ParseFieldMatcher.STRICT);
SuggestBuilder secondSuggestBuilder = SuggestBuilder.fromXContent(context, suggesters);
assertNotSame(suggestBuilder, secondSuggestBuilder);
assertEquals(suggestBuilder, secondSuggestBuilder);
diff --git a/core/src/test/java/org/elasticsearch/search/suggest/phrase/DirectCandidateGeneratorTests.java b/core/src/test/java/org/elasticsearch/search/suggest/phrase/DirectCandidateGeneratorTests.java
index b0fc550968..a3a5ea01c3 100644
--- a/core/src/test/java/org/elasticsearch/search/suggest/phrase/DirectCandidateGeneratorTests.java
+++ b/core/src/test/java/org/elasticsearch/search/suggest/phrase/DirectCandidateGeneratorTests.java
@@ -23,7 +23,6 @@ import org.elasticsearch.common.ParseFieldMatcher;
import org.elasticsearch.common.ParsingException;
import org.elasticsearch.common.io.stream.BytesStreamOutput;
import org.elasticsearch.common.io.stream.StreamInput;
-import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -41,6 +40,7 @@ import static org.hamcrest.Matchers.equalTo;
public class DirectCandidateGeneratorTests extends ESTestCase{
+ private static final IndicesQueriesRegistry mockRegistry = new IndicesQueriesRegistry();
private static final int NUMBER_OF_RUNS = 20;
@@ -110,8 +110,6 @@ public class DirectCandidateGeneratorTests extends ESTestCase{
* creates random candidate generator, renders it to xContent and back to new instance that should be equal to original
*/
public void testFromXContent() throws IOException {
- QueryParseContext context = new QueryParseContext(new IndicesQueriesRegistry());
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
for (int runs = 0; runs < NUMBER_OF_RUNS; runs++) {
DirectCandidateGeneratorBuilder generator = randomCandidateGenerator();
XContentBuilder builder = XContentFactory.contentBuilder(randomFrom(XContentType.values()));
@@ -121,7 +119,7 @@ public class DirectCandidateGeneratorTests extends ESTestCase{
generator.toXContent(builder, ToXContent.EMPTY_PARAMS);
XContentParser parser = XContentHelper.createParser(builder.bytes());
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(mockRegistry, parser, ParseFieldMatcher.STRICT);
parser.nextToken();
DirectCandidateGeneratorBuilder secondGenerator = DirectCandidateGeneratorBuilder.fromXContent(context);
assertNotSame(generator, secondGenerator);
@@ -152,43 +150,38 @@ public class DirectCandidateGeneratorTests extends ESTestCase{
* test that bad xContent throws exception
*/
public void testIllegalXContent() throws IOException {
- QueryParseContext context = new QueryParseContext(new IndicesQueriesRegistry());
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
-
// test missing fieldname
String directGenerator = "{ }";
- XContentParser parser = XContentFactory.xContent(directGenerator).createParser(directGenerator);
- context.reset(parser);
- Exception e = expectThrows(IllegalArgumentException.class, () -> DirectCandidateGeneratorBuilder.fromXContent(context));
- assertEquals("[direct_generator] expects exactly one field parameter, but found []", e.getMessage());
+ assertIllegalXContent(directGenerator, IllegalArgumentException.class,
+ "[direct_generator] expects exactly one field parameter, but found []");
// test two fieldnames
directGenerator = "{ \"field\" : \"f1\", \"field\" : \"f2\" }";
- parser = XContentFactory.xContent(directGenerator).createParser(directGenerator);
- context.reset(parser);
- e = expectThrows(IllegalArgumentException.class, () -> DirectCandidateGeneratorBuilder.fromXContent(context));
- assertEquals("[direct_generator] expects exactly one field parameter, but found [f2, f1]", e.getMessage());
+ assertIllegalXContent(directGenerator, IllegalArgumentException.class,
+ "[direct_generator] expects exactly one field parameter, but found [f2, f1]");
// test unknown field
directGenerator = "{ \"unknown_param\" : \"f1\" }";
- parser = XContentFactory.xContent(directGenerator).createParser(directGenerator);
- context.reset(parser);
- e = expectThrows(IllegalArgumentException.class, () -> DirectCandidateGeneratorBuilder.fromXContent(context));
- assertEquals("[direct_generator] unknown field [unknown_param], parser not found", e.getMessage());
+ assertIllegalXContent(directGenerator, IllegalArgumentException.class,
+ "[direct_generator] unknown field [unknown_param], parser not found");
// test bad value for field (e.g. size expects an int)
directGenerator = "{ \"size\" : \"xxl\" }";
- parser = XContentFactory.xContent(directGenerator).createParser(directGenerator);
- context.reset(parser);
- e = expectThrows(ParsingException.class, () -> DirectCandidateGeneratorBuilder.fromXContent(context));
- assertEquals("[direct_generator] failed to parse field [size]", e.getMessage());
+ assertIllegalXContent(directGenerator, ParsingException.class,
+ "[direct_generator] failed to parse field [size]");
// test unexpected token
directGenerator = "{ \"size\" : [ \"xxl\" ] }";
- parser = XContentFactory.xContent(directGenerator).createParser(directGenerator);
- context.reset(parser);
- e = expectThrows(IllegalArgumentException.class, () -> DirectCandidateGeneratorBuilder.fromXContent(context));
- assertEquals("[direct_generator] size doesn't support values of type: START_ARRAY", e.getMessage());
+ assertIllegalXContent(directGenerator, IllegalArgumentException.class,
+ "[direct_generator] size doesn't support values of type: START_ARRAY");
+ }
+
+ private static void assertIllegalXContent(String directGenerator, Class<? extends Exception> exceptionClass, String exceptionMsg)
+ throws IOException {
+ XContentParser parser = XContentFactory.xContent(directGenerator).createParser(directGenerator);
+ QueryParseContext context = new QueryParseContext(mockRegistry, parser, ParseFieldMatcher.STRICT);
+ Exception e = expectThrows(exceptionClass, () -> DirectCandidateGeneratorBuilder.fromXContent(context));
+ assertEquals(exceptionMsg, e.getMessage());
}
/**
diff --git a/core/src/test/java/org/elasticsearch/search/suggest/phrase/SmoothingModelTestCase.java b/core/src/test/java/org/elasticsearch/search/suggest/phrase/SmoothingModelTestCase.java
index c91e157178..1731ddd7c4 100644
--- a/core/src/test/java/org/elasticsearch/search/suggest/phrase/SmoothingModelTestCase.java
+++ b/core/src/test/java/org/elasticsearch/search/suggest/phrase/SmoothingModelTestCase.java
@@ -36,7 +36,6 @@ import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.lucene.BytesRefs;
-import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -93,9 +92,6 @@ public abstract class SmoothingModelTestCase extends ESTestCase {
* Test that creates new smoothing model from a random test smoothing model and checks both for equality
*/
public void testFromXContent() throws IOException {
- QueryParseContext context = new QueryParseContext(new IndicesQueriesRegistry());
- context.parseFieldMatcher(new ParseFieldMatcher(Settings.EMPTY));
-
SmoothingModel testModel = createTestModel();
XContentBuilder contentBuilder = XContentFactory.contentBuilder(randomFrom(XContentType.values()));
if (randomBoolean()) {
@@ -105,7 +101,7 @@ public abstract class SmoothingModelTestCase extends ESTestCase {
testModel.innerToXContent(contentBuilder, ToXContent.EMPTY_PARAMS);
contentBuilder.endObject();
XContentParser parser = XContentHelper.createParser(contentBuilder.bytes());
- context.reset(parser);
+ QueryParseContext context = new QueryParseContext(new IndicesQueriesRegistry(), parser, ParseFieldMatcher.STRICT);
parser.nextToken(); // go to start token, real parsing would do that in the outer element parser
SmoothingModel parsedModel = fromXContent(context);
assertNotSame(testModel, parsedModel);