From f576c987ce2615f77a8de75741b0f5448229805f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20B=C3=BCscher?= Date: Mon, 3 Jul 2017 17:30:40 +0200 Subject: Remove QueryParseContext (#25486) QueryParseContext is currently only used as a wrapper for an XContentParser, so this change removes it entirely and changes the appropriate APIs that use it so far to only accept a parser instead. --- .../org/elasticsearch/common/ParsingException.java | 7 +- .../index/query/AbstractQueryBuilder.java | 1 - .../elasticsearch/index/query/IdsQueryBuilder.java | 2 +- .../elasticsearch/index/query/InnerHitBuilder.java | 2 +- .../index/query/MatchAllQueryBuilder.java | 2 +- .../index/query/MoreLikeThisQueryBuilder.java | 2 +- .../index/query/QueryParseContext.java | 37 ------- .../index/query/QueryRewriteContext.java | 7 -- .../index/query/TermsQueryBuilder.java | 2 +- .../rest/action/search/RestMultiSearchAction.java | 4 +- .../rest/action/search/RestSearchAction.java | 4 +- .../org/elasticsearch/search/SearchModule.java | 6 +- .../search/aggregations/AggregationBuilder.java | 9 +- .../search/aggregations/Aggregator.java | 6 +- .../search/aggregations/AggregatorFactories.java | 25 ++--- .../search/aggregations/InternalOrder.java | 4 +- .../AdjacencyMatrixAggregationBuilder.java | 48 +++++---- .../adjacency/AdjacencyMatrixAggregator.java | 6 +- .../bucket/filter/FilterAggregationBuilder.java | 6 +- .../bucket/filters/FiltersAggregationBuilder.java | 8 +- .../bucket/geogrid/GeoGridAggregationBuilder.java | 8 +- .../bucket/global/GlobalAggregationBuilder.java | 6 +- .../histogram/DateHistogramAggregationBuilder.java | 9 +- .../histogram/HistogramAggregationBuilder.java | 10 +- .../bucket/missing/MissingAggregationBuilder.java | 8 +- .../bucket/nested/NestedAggregationBuilder.java | 4 +- .../nested/ReverseNestedAggregationBuilder.java | 4 +- .../bucket/range/RangeAggregationBuilder.java | 11 +-- .../range/date/DateRangeAggregationBuilder.java | 11 +-- .../geodistance/GeoDistanceAggregationBuilder.java | 13 ++- .../bucket/range/ip/IpRangeAggregationBuilder.java | 11 +-- .../sampler/DiversifiedAggregationBuilder.java | 8 +- .../bucket/sampler/SamplerAggregationBuilder.java | 4 +- .../SignificantTermsAggregationBuilder.java | 32 +++--- .../SignificantTextAggregationBuilder.java | 34 +++---- .../bucket/significant/heuristics/GND.java | 4 +- .../bucket/significant/heuristics/JLHScore.java | 4 +- .../heuristics/NXYSignificanceHeuristic.java | 4 +- .../significant/heuristics/PercentageScore.java | 4 +- .../significant/heuristics/ScriptHeuristic.java | 4 +- .../heuristics/SignificanceHeuristicParser.java | 3 +- .../bucket/terms/TermsAggregationBuilder.java | 14 +-- .../bucket/terms/support/IncludeExclude.java | 6 +- .../metrics/avg/AvgAggregationBuilder.java | 8 +- .../cardinality/CardinalityAggregationBuilder.java | 8 +- .../geobounds/GeoBoundsAggregationBuilder.java | 8 +- .../geocentroid/GeoCentroidAggregationBuilder.java | 8 +- .../metrics/max/MaxAggregationBuilder.java | 8 +- .../metrics/min/MinAggregationBuilder.java | 8 +- .../PercentileRanksAggregationBuilder.java | 12 +-- .../percentiles/PercentilesAggregationBuilder.java | 12 +-- .../scripted/ScriptedMetricAggregationBuilder.java | 6 +- .../metrics/stats/StatsAggregationBuilder.java | 8 +- .../extended/ExtendedStatsAggregationBuilder.java | 8 +- .../metrics/sum/SumAggregationBuilder.java | 8 +- .../metrics/tophits/TopHitsAggregationBuilder.java | 14 ++- .../valuecount/ValueCountAggregationBuilder.java | 8 +- .../aggregations/pipeline/BucketHelpers.java | 9 +- .../aggregations/pipeline/PipelineAggregator.java | 9 +- .../bucketmetrics/BucketMetricsParser.java | 18 ++-- ...ercentilesBucketPipelineAggregationBuilder.java | 5 +- .../stats/extended/ExtendedStatsBucketParser.java | 3 +- .../BucketScriptPipelineAggregationBuilder.java | 8 +- .../BucketSelectorPipelineAggregationBuilder.java | 8 +- .../CumulativeSumPipelineAggregationBuilder.java | 4 +- .../DerivativePipelineAggregationBuilder.java | 8 +- .../movavg/MovAvgPipelineAggregationBuilder.java | 6 +- .../SerialDiffPipelineAggregationBuilder.java | 6 +- .../support/ValuesSourceParserHelper.java | 11 +-- .../search/builder/SearchSourceBuilder.java | 37 ++++--- .../search/collapse/CollapseBuilder.java | 7 +- .../search/fetch/StoredFieldsContext.java | 4 +- .../highlight/AbstractHighlighterBuilder.java | 7 +- .../fetch/subphase/highlight/HighlightBuilder.java | 9 +- .../search/rescore/QueryRescorerBuilder.java | 8 +- .../search/rescore/RescoreBuilder.java | 6 +- .../elasticsearch/search/slice/SliceBuilder.java | 9 +- .../search/sort/FieldSortBuilder.java | 5 +- .../search/sort/GeoDistanceSortBuilder.java | 3 +- .../search/sort/ScoreSortBuilder.java | 7 +- .../search/sort/ScriptSortBuilder.java | 7 +- .../completion/CompletionSuggestionBuilder.java | 2 +- .../completion/context/CategoryContextMapping.java | 5 +- .../completion/context/CategoryQueryContext.java | 6 +- .../suggest/completion/context/ContextMapping.java | 12 +-- .../completion/context/GeoContextMapping.java | 7 +- .../completion/context/GeoQueryContext.java | 4 +- .../index/query/AbstractQueryBuilderTests.java | 93 +++++++++++++++++ .../index/query/QueryParseContextTests.java | 110 --------------------- .../index/query/RangeQueryBuilderTests.java | 18 ++-- .../elasticsearch/search/SearchModuleTests.java | 12 ++- .../elasticsearch/search/SearchServiceTests.java | 3 +- .../aggregations/AggregationCollectorTests.java | 4 +- .../aggregations/AggregatorFactoriesTests.java | 20 ++-- .../BasePipelineAggregationTestCase.java | 4 +- .../search/aggregations/InternalOrderTests.java | 4 +- .../SignificantTermsSignificanceScoreIT.java | 80 +++++++-------- .../bucket/geogrid/GeoHashGridParserTests.java | 20 ++-- .../significant/SignificanceHeuristicTests.java | 9 +- .../search/aggregations/metrics/FiltersTests.java | 10 +- .../search/aggregations/metrics/TopHitsTests.java | 5 +- .../aggregations/support/IncludeExcludeTests.java | 11 +-- .../search/builder/SearchSourceBuilderTests.java | 36 +++---- .../search/collapse/CollapseBuilderTests.java | 4 +- .../search/rescore/QueryRescoreBuilderTests.java | 37 ++++--- .../search/slice/SliceBuilderTests.java | 4 +- .../completion/CategoryContextMappingTests.java | 40 ++++---- .../completion/CategoryQueryContextTests.java | 6 +- .../suggest/completion/GeoContextMappingTests.java | 15 +-- .../suggest/completion/GeoQueryContextTests.java | 6 +- .../suggest/completion/QueryContextTestCase.java | 5 +- .../support/MultiValuesSourceParser.java | 4 +- .../mustache/TransportSearchTemplateAction.java | 4 +- .../aggregations/ChildrenAggregationBuilder.java | 4 +- .../percolator/PercolateQueryBuilder.java | 2 +- .../percolator/PercolatorFieldMapper.java | 14 +-- .../index/reindex/RestReindexAction.java | 3 +- .../aggregations/BaseAggregationTestCase.java | 5 +- .../elasticsearch/test/AbstractQueryTestCase.java | 5 - 119 files changed, 574 insertions(+), 791 deletions(-) delete mode 100644 core/src/main/java/org/elasticsearch/index/query/QueryParseContext.java create mode 100644 core/src/test/java/org/elasticsearch/index/query/AbstractQueryBuilderTests.java delete mode 100644 core/src/test/java/org/elasticsearch/index/query/QueryParseContextTests.java diff --git a/core/src/main/java/org/elasticsearch/common/ParsingException.java b/core/src/main/java/org/elasticsearch/common/ParsingException.java index 5dc2c8a74e..dffea8db80 100644 --- a/core/src/main/java/org/elasticsearch/common/ParsingException.java +++ b/core/src/main/java/org/elasticsearch/common/ParsingException.java @@ -24,13 +24,14 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentLocation; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.rest.RestStatus; import java.io.IOException; /** - * Exception that can be used when parsing queries with a given {@link QueryParseContext}. + * Exception that can be used when parsing queries with a given {@link + * XContentParser}. * Can contain information about location of the error. */ public class ParsingException extends ElasticsearchException { @@ -57,7 +58,7 @@ public class ParsingException extends ElasticsearchException { /** * This constructor is provided for use in unit tests where a - * {@link QueryParseContext} may not be available + * {@link XContentParser} may not be available */ public ParsingException(int line, int col, String msg, Throwable cause) { super(msg, cause); diff --git a/core/src/main/java/org/elasticsearch/index/query/AbstractQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/AbstractQueryBuilder.java index 0ed05e299c..7db9fb3bb9 100644 --- a/core/src/main/java/org/elasticsearch/index/query/AbstractQueryBuilder.java +++ b/core/src/main/java/org/elasticsearch/index/query/AbstractQueryBuilder.java @@ -35,7 +35,6 @@ import org.elasticsearch.common.xcontent.NamedXContentRegistry.UnknownNamedObjec import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentLocation; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.common.xcontent.XContentParser.Token; import org.elasticsearch.common.xcontent.XContentType; import java.io.IOException; diff --git a/core/src/main/java/org/elasticsearch/index/query/IdsQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/IdsQueryBuilder.java index d4511ca83a..e7a5972dc2 100644 --- a/core/src/main/java/org/elasticsearch/index/query/IdsQueryBuilder.java +++ b/core/src/main/java/org/elasticsearch/index/query/IdsQueryBuilder.java @@ -138,7 +138,7 @@ public class IdsQueryBuilder extends AbstractQueryBuilder { builder.endObject(); } - private static ObjectParser PARSER = new ObjectParser<>(NAME, + private static ObjectParser PARSER = new ObjectParser<>(NAME, () -> new IdsQueryBuilder()); static { diff --git a/core/src/main/java/org/elasticsearch/index/query/InnerHitBuilder.java b/core/src/main/java/org/elasticsearch/index/query/InnerHitBuilder.java index fb0f2850c1..85c4fc0c59 100644 --- a/core/src/main/java/org/elasticsearch/index/query/InnerHitBuilder.java +++ b/core/src/main/java/org/elasticsearch/index/query/InnerHitBuilder.java @@ -53,7 +53,7 @@ public final class InnerHitBuilder extends ToXContentToBytes implements Writeabl public static final ParseField IGNORE_UNMAPPED = new ParseField("ignore_unmapped"); public static final QueryBuilder DEFAULT_INNER_HIT_QUERY = new MatchAllQueryBuilder(); - private static final ObjectParser PARSER = new ObjectParser<>("inner_hits", InnerHitBuilder::new); + private static final ObjectParser PARSER = new ObjectParser<>("inner_hits", InnerHitBuilder::new); static { PARSER.declareString(InnerHitBuilder::setName, NAME_FIELD); diff --git a/core/src/main/java/org/elasticsearch/index/query/MatchAllQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MatchAllQueryBuilder.java index 2f50aa731f..06561c6a83 100644 --- a/core/src/main/java/org/elasticsearch/index/query/MatchAllQueryBuilder.java +++ b/core/src/main/java/org/elasticsearch/index/query/MatchAllQueryBuilder.java @@ -58,7 +58,7 @@ public class MatchAllQueryBuilder extends AbstractQueryBuilder PARSER = new ObjectParser<>(NAME, MatchAllQueryBuilder::new); + private static final ObjectParser PARSER = new ObjectParser<>(NAME, MatchAllQueryBuilder::new); static { declareStandardFields(PARSER); diff --git a/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java index a4872b1244..b0147492c1 100644 --- a/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java +++ b/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java @@ -1202,7 +1202,7 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder { } @Override - protected QueryBuilder doRewrite(QueryRewriteContext queryRewriteContext) throws IOException { + protected QueryBuilder doRewrite(QueryRewriteContext queryRewriteContext) { if (this.termsLookup != null) { TermsLookup termsLookup = new TermsLookup(this.termsLookup); if (termsLookup.index() == null) { // TODO this should go away? diff --git a/core/src/main/java/org/elasticsearch/rest/action/search/RestMultiSearchAction.java b/core/src/main/java/org/elasticsearch/rest/action/search/RestMultiSearchAction.java index 3857a4c5b4..0d9c389d0c 100644 --- a/core/src/main/java/org/elasticsearch/rest/action/search/RestMultiSearchAction.java +++ b/core/src/main/java/org/elasticsearch/rest/action/search/RestMultiSearchAction.java @@ -31,7 +31,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContent; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentType; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; @@ -91,8 +90,7 @@ public class RestMultiSearchAction extends BaseRestHandler { parseMultiLineRequest(restRequest, multiRequest.indicesOptions(), allowExplicitIndex, (searchRequest, parser) -> { try { - final QueryParseContext queryParseContext = new QueryParseContext(parser); - searchRequest.source(SearchSourceBuilder.fromXContent(queryParseContext)); + searchRequest.source(SearchSourceBuilder.fromXContent(parser)); multiRequest.add(searchRequest); } catch (IOException e) { throw new ElasticsearchParseException("Exception when parsing search request", e); diff --git a/core/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java b/core/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java index e08fd0c652..115c86dda5 100644 --- a/core/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java +++ b/core/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; @@ -94,8 +93,7 @@ public class RestSearchAction extends BaseRestHandler { } searchRequest.indices(Strings.splitStringByCommaToArray(request.param("index"))); if (requestContentParser != null) { - QueryParseContext context = new QueryParseContext(requestContentParser); - searchRequest.source().parseXContent(context); + searchRequest.source().parseXContent(requestContentParser); } final int batchedReduceSize = request.paramAsInt("batched_reduce_size", searchRequest.getBatchedReduceSize()); diff --git a/core/src/main/java/org/elasticsearch/search/SearchModule.java b/core/src/main/java/org/elasticsearch/search/SearchModule.java index 2a72c1904e..ff4c0bd158 100644 --- a/core/src/main/java/org/elasticsearch/search/SearchModule.java +++ b/core/src/main/java/org/elasticsearch/search/SearchModule.java @@ -356,7 +356,7 @@ public class SearchModule { registerAggregation(new AggregationSpec(FiltersAggregationBuilder.NAME, FiltersAggregationBuilder::new, FiltersAggregationBuilder::parse).addResultReader(InternalFilters::new)); registerAggregation(new AggregationSpec(AdjacencyMatrixAggregationBuilder.NAME, AdjacencyMatrixAggregationBuilder::new, - AdjacencyMatrixAggregationBuilder.getParser()).addResultReader(InternalAdjacencyMatrix::new)); + AdjacencyMatrixAggregationBuilder::parse).addResultReader(InternalAdjacencyMatrix::new)); registerAggregation(new AggregationSpec(SamplerAggregationBuilder.NAME, SamplerAggregationBuilder::new, SamplerAggregationBuilder::parse) .addResultReader(InternalSampler.NAME, InternalSampler::new) @@ -410,7 +410,7 @@ public class SearchModule { if (false == transportClient) { namedXContents.add(new NamedXContentRegistry.Entry(BaseAggregationBuilder.class, spec.getName(), (p, c) -> { AggregatorFactories.AggParseContext context = (AggregatorFactories.AggParseContext) c; - return spec.getParser().parse(context.name, context.queryParseContext); + return spec.getParser().parse(context.name, p); })); } namedWriteables.add( @@ -507,7 +507,7 @@ public class SearchModule { if (false == transportClient) { namedXContents.add(new NamedXContentRegistry.Entry(BaseAggregationBuilder.class, spec.getName(), (p, c) -> { AggregatorFactories.AggParseContext context = (AggregatorFactories.AggParseContext) c; - return spec.getParser().parse(context.name, context.queryParseContext); + return spec.getParser().parse(context.name, p); })); } namedWriteables.add( diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/AggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/AggregationBuilder.java index 694a78f9d1..97c1a0165a 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/AggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/AggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.action.support.ToXContentToBytes; import org.elasticsearch.common.ParseField; import org.elasticsearch.common.io.stream.NamedWriteable; import org.elasticsearch.common.xcontent.ToXContent; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.internal.SearchContext; import java.io.IOException; @@ -84,9 +84,10 @@ public abstract class AggregationBuilder } /** - * Internal: Registers sub-factories with this factory. The sub-factory will be - * responsible for the creation of sub-aggregators under the aggregator - * created by this factory. This is only for use by {@link AggregatorFactories#parseAggregators(QueryParseContext)}. + * Internal: Registers sub-factories with this factory. The sub-factory will + * be responsible for the creation of sub-aggregators under the aggregator + * created by this factory. This is only for use by + * {@link AggregatorFactories#parseAggregators(XContentParser)}. * * @param subFactories * The sub-factories diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/Aggregator.java b/core/src/main/java/org/elasticsearch/search/aggregations/Aggregator.java index 41a0fa6dd3..d067f84e3f 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/Aggregator.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/Aggregator.java @@ -25,7 +25,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.lease.Releasable; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.bucket.BucketsAggregator; import org.elasticsearch.search.internal.SearchContext; @@ -50,11 +50,11 @@ public abstract class Aggregator extends BucketCollector implements Releasable { * aggregation should be skipped (e.g. when trying to aggregate on unmapped fields). * * @param aggregationName The name of the aggregation - * @param context The parse context + * @param parser The parser * @return The resolved aggregator factory or {@code null} in case the aggregation should be skipped * @throws java.io.IOException When parsing fails */ - AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException; + AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException; } /** diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/AggregatorFactories.java b/core/src/main/java/org/elasticsearch/search/aggregations/AggregatorFactories.java index 90b1c7e58c..fc62d981c8 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/AggregatorFactories.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/AggregatorFactories.java @@ -25,7 +25,6 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; import org.elasticsearch.search.aggregations.support.AggregationPath; import org.elasticsearch.search.aggregations.support.AggregationPath.PathElement; @@ -50,24 +49,18 @@ public class AggregatorFactories { public static final Pattern VALID_AGG_NAME = Pattern.compile("[^\\[\\]>]+"); /** - * Parses the aggregation request recursively generating aggregator factories in turn. - * - * @param parseContext The parse context. - * - * @return The parsed aggregator factories. - * - * @throws IOException When parsing fails for unknown reasons. + * Parses the aggregation request recursively generating aggregator + * factories in turn. */ - public static AggregatorFactories.Builder parseAggregators(QueryParseContext parseContext) throws IOException { - return parseAggregators(parseContext, 0); + public static AggregatorFactories.Builder parseAggregators(XContentParser parser) throws IOException { + return parseAggregators(parser, 0); } - private static AggregatorFactories.Builder parseAggregators(QueryParseContext parseContext, int level) throws IOException { + private static AggregatorFactories.Builder parseAggregators(XContentParser parser, int level) throws IOException { Matcher validAggMatcher = VALID_AGG_NAME.matcher(""); AggregatorFactories.Builder factories = new AggregatorFactories.Builder(); XContentParser.Token token = null; - XContentParser parser = parseContext.parser(); while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { if (token != XContentParser.Token.FIELD_NAME) { throw new ParsingException(parser.getTokenLocation(), @@ -111,7 +104,7 @@ public class AggregatorFactories { throw new ParsingException(parser.getTokenLocation(), "Found two sub aggregation definitions under [" + aggregationName + "]"); } - subFactories = parseAggregators(parseContext, level + 1); + subFactories = parseAggregators(parser, level + 1); break; default: if (aggBuilder != null) { @@ -120,7 +113,7 @@ public class AggregatorFactories { } aggBuilder = parser.namedObject(BaseAggregationBuilder.class, fieldName, - new AggParseContext(aggregationName, parseContext)); + new AggParseContext(aggregationName)); } } else { throw new ParsingException(parser.getTokenLocation(), "Expected [" + XContentParser.Token.START_OBJECT + "] under [" @@ -156,11 +149,9 @@ public class AggregatorFactories { */ public static final class AggParseContext { public final String name; - public final QueryParseContext queryParseContext; - public AggParseContext(String name, QueryParseContext queryParseContext) { + public AggParseContext(String name) { this.name = name; - this.queryParseContext = queryParseContext; } } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/InternalOrder.java b/core/src/main/java/org/elasticsearch/search/aggregations/InternalOrder.java index 31594e2804..fafcb5c37f 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/InternalOrder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/InternalOrder.java @@ -28,7 +28,6 @@ import org.elasticsearch.common.util.Comparators; import org.elasticsearch.common.xcontent.XContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation.Bucket; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregator; import org.elasticsearch.search.aggregations.support.AggregationPath; @@ -527,11 +526,10 @@ public class InternalOrder extends BucketOrder { * Parse a {@link BucketOrder} from {@link XContent}. * * @param parser for parsing {@link XContent} that contains the order. - * @param context parsing context. * @return bucket ordering strategy * @throws IOException on error a {@link XContent} parsing error. */ - public static BucketOrder parseOrderParam(XContentParser parser, QueryParseContext context) throws IOException { + public static BucketOrder parseOrderParam(XContentParser parser) throws IOException { XContentParser.Token token; String orderKey = null; boolean orderAsc = false; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregationBuilder.java index eeb60d393e..1a9e590457 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregationBuilder.java @@ -24,12 +24,11 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.AggregationBuilder; -import org.elasticsearch.search.aggregations.Aggregator; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.bucket.adjacency.AdjacencyMatrixAggregator.KeyedFilter; @@ -56,26 +55,23 @@ public class AdjacencyMatrixAggregationBuilder extends AbstractAggregationBuilde private List filters; private String separator = DEFAULT_SEPARATOR; - public static Aggregator.Parser getParser() { - ObjectParser parser = new ObjectParser<>( - AdjacencyMatrixAggregationBuilder.NAME); - parser.declareString(AdjacencyMatrixAggregationBuilder::separator, SEPARATOR_FIELD); - parser.declareNamedObjects(AdjacencyMatrixAggregationBuilder::setFiltersAsList, KeyedFilter.PARSER, FILTERS_FIELD); - return new Aggregator.Parser() { - @Override - public AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - AdjacencyMatrixAggregationBuilder result = parser.parse(context.parser(), - new AdjacencyMatrixAggregationBuilder(aggregationName), context); - result.checkConsistency(); - return result; - } - }; + private static final ObjectParser PARSER = new ObjectParser<>( + AdjacencyMatrixAggregationBuilder.NAME); + static { + PARSER.declareString(AdjacencyMatrixAggregationBuilder::separator, SEPARATOR_FIELD); + PARSER.declareNamedObjects(AdjacencyMatrixAggregationBuilder::setFiltersAsList, KeyedFilter.PARSER, FILTERS_FIELD); + } + + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + AdjacencyMatrixAggregationBuilder result = PARSER.parse(parser, new AdjacencyMatrixAggregationBuilder(aggregationName), null); + result.checkConsistency(); + return result; } protected void checkConsistency() { if ((filters == null) || (filters.size() == 0)) { throw new IllegalStateException("[" + name + "] is missing : " + FILTERS_FIELD.getPreferredName() + " parameter"); - } + } } @@ -96,17 +92,17 @@ public class AdjacencyMatrixAggregationBuilder extends AbstractAggregationBuilde // the order of the filters in the request Collections.sort(this.filters, Comparator.comparing(KeyedFilter::key)); } - - + + /** * @param name * the name of this aggregation */ protected AdjacencyMatrixAggregationBuilder(String name) { super(name); - } - - + } + + /** * @param name * the name of this aggregation @@ -171,8 +167,8 @@ public class AdjacencyMatrixAggregationBuilder extends AbstractAggregationBuilde */ public String separator() { return separator; - } - + } + /** * Get the filters. This will be an unmodifiable map */ @@ -182,8 +178,8 @@ public class AdjacencyMatrixAggregationBuilder extends AbstractAggregationBuilde result.put(keyedFilter.key(), keyedFilter.filter()); } return result; - } - + } + @Override protected AggregatorFactory doBuild(SearchContext context, AggregatorFactory parent, Builder subFactoriesBuilder) diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregator.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregator.java index 8e6fffbd47..35d4fe8617 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregator.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregator.java @@ -32,7 +32,6 @@ import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.Aggregator; import org.elasticsearch.search.aggregations.AggregatorFactories; import org.elasticsearch.search.aggregations.InternalAggregation; @@ -68,11 +67,10 @@ public class AdjacencyMatrixAggregator extends BucketsAggregator { private final String key; private final QueryBuilder filter; - public static final NamedObjectParser PARSER = - (XContentParser p, QueryParseContext c, String name) -> + public static final NamedObjectParser PARSER = + (XContentParser p, Void c, String name) -> new KeyedFilter(name, parseInnerQueryBuilder(p)); - public KeyedFilter(String key, QueryBuilder filter) { if (key == null) { throw new IllegalArgumentException("[key] must not be null"); diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FilterAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FilterAggregationBuilder.java index d3f5696bfc..2306f4c9f4 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FilterAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FilterAggregationBuilder.java @@ -22,8 +22,8 @@ package org.elasticsearch.search.aggregations.bucket.filter; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -84,8 +84,8 @@ public class FilterAggregationBuilder extends AbstractAggregationBuilder keyedFilters = null; List nonKeyedFilters = null; @@ -238,7 +236,7 @@ public class FiltersAggregationBuilder extends AbstractAggregationBuilder(); while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) { - QueryBuilder filter = parseInnerQueryBuilder(context.parser()); + QueryBuilder filter = parseInnerQueryBuilder(parser); nonKeyedFilters.add(filter); } } else { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java index 1c60247446..4722c86c98 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java @@ -28,11 +28,11 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.fielddata.AbstractSortingNumericDocValues; import org.elasticsearch.index.fielddata.MultiGeoPointValues; import org.elasticsearch.index.fielddata.SortedBinaryDocValues; import org.elasticsearch.index.fielddata.SortedNumericDoubleValues; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.bucket.BucketUtils; @@ -53,7 +53,7 @@ public class GeoGridAggregationBuilder extends ValuesSourceAggregationBuilder PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoGridAggregationBuilder.NAME); ValuesSourceParserHelper.declareGeoFields(PARSER, false, false); @@ -62,8 +62,8 @@ public class GeoGridAggregationBuilder extends ValuesSourceAggregationBuilder PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(DateHistogramAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, true); @@ -115,12 +114,12 @@ public class DateHistogramAggregationBuilder PARSER.declareField(DateHistogramAggregationBuilder::extendedBounds, parser -> ExtendedBounds.PARSER.apply(parser, null), ExtendedBounds.EXTENDED_BOUNDS_FIELD, ObjectParser.ValueType.OBJECT); - PARSER.declareObjectArray(DateHistogramAggregationBuilder::order, InternalOrder.Parser::parseOrderParam, + PARSER.declareObjectArray(DateHistogramAggregationBuilder::order, (p, c) -> InternalOrder.Parser.parseOrderParam(p), Histogram.ORDER_FIELD); } - public static DateHistogramAggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new DateHistogramAggregationBuilder(aggregationName), context); + public static DateHistogramAggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new DateHistogramAggregationBuilder(aggregationName), null); } private long interval; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java index 9362c0b8f7..2f36291f38 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java @@ -24,7 +24,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.BucketOrder; @@ -59,7 +59,7 @@ public class HistogramAggregationBuilder EXTENDED_BOUNDS_PARSER.declareDouble((bounds, d) -> bounds[1] = d, new ParseField("max")); } - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(HistogramAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); @@ -76,12 +76,12 @@ public class HistogramAggregationBuilder histogram.extendedBounds(extendedBounds[0], extendedBounds[1]); }, parser -> EXTENDED_BOUNDS_PARSER.apply(parser, null), ExtendedBounds.EXTENDED_BOUNDS_FIELD, ObjectParser.ValueType.OBJECT); - PARSER.declareObjectArray(HistogramAggregationBuilder::order, InternalOrder.Parser::parseOrderParam, + PARSER.declareObjectArray(HistogramAggregationBuilder::order, (p, c) -> InternalOrder.Parser.parseOrderParam(p), Histogram.ORDER_FIELD); } - public static HistogramAggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new HistogramAggregationBuilder(aggregationName), context); + public static HistogramAggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new HistogramAggregationBuilder(aggregationName), null); } private double interval; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java index 9361acc8fc..76efba76e7 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.support.ValueType; @@ -40,14 +40,14 @@ import java.io.IOException; public class MissingAggregationBuilder extends ValuesSourceAggregationBuilder { public static final String NAME = "missing"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(MissingAggregationBuilder.NAME); ValuesSourceParserHelper.declareAnyFields(PARSER, true, true); } - public static MissingAggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new MissingAggregationBuilder(aggregationName, null), context); + public static MissingAggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new MissingAggregationBuilder(aggregationName, null), null); } public MissingAggregationBuilder(String name, ValueType targetValueType) { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/nested/NestedAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/nested/NestedAggregationBuilder.java index f8f2602a47..cc2fb87a5d 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/nested/NestedAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/nested/NestedAggregationBuilder.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.mapper.ObjectMapper; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.AggregationExecutionException; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; @@ -104,12 +103,11 @@ public class NestedAggregationBuilder extends AbstractAggregationBuilder { public static final String NAME = "range"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(RangeAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); @@ -47,14 +46,14 @@ public class RangeAggregationBuilder extends AbstractRangeBuilder RangeAggregationBuilder.parseRange(p), RangeAggregator.RANGES_FIELD); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new RangeAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new RangeAggregationBuilder(aggregationName), null); } - private static Range parseRange(XContentParser parser, QueryParseContext context) throws IOException { + private static Range parseRange(XContentParser parser) throws IOException { return Range.fromXContent(parser); } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeAggregationBuilder.java index 2c686fbb97..10612fd5e2 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeAggregationBuilder.java @@ -22,7 +22,6 @@ package org.elasticsearch.search.aggregations.bucket.range.date; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -40,7 +39,7 @@ import java.io.IOException; public class DateRangeAggregationBuilder extends AbstractRangeBuilder { public static final String NAME = "date_range"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(DateRangeAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, true); @@ -50,14 +49,14 @@ public class DateRangeAggregationBuilder extends AbstractRangeBuilder DateRangeAggregationBuilder.parseRange(p), RangeAggregator.RANGES_FIELD); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new DateRangeAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new DateRangeAggregationBuilder(aggregationName), null); } - private static Range parseRange(XContentParser parser, QueryParseContext context) throws IOException { + private static Range parseRange(XContentParser parser) throws IOException { return Range.fromXContent(parser); } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceAggregationBuilder.java index 1484fae8d4..99faf543c2 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceAggregationBuilder.java @@ -30,7 +30,6 @@ import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentParser.Token; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -54,7 +53,7 @@ public class GeoDistanceAggregationBuilder extends ValuesSourceAggregationBuilde static final ParseField UNIT_FIELD = new ParseField("unit"); static final ParseField DISTANCE_TYPE_FIELD = new ParseField("distance_type"); - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoDistanceAggregationBuilder.NAME); ValuesSourceParserHelper.declareGeoFields(PARSER, true, false); @@ -65,7 +64,7 @@ public class GeoDistanceAggregationBuilder extends ValuesSourceAggregationBuilde for (Range range : ranges) { agg.addRange(range); } - }, GeoDistanceAggregationBuilder::parseRange, RangeAggregator.RANGES_FIELD); + }, (p, c) -> GeoDistanceAggregationBuilder.parseRange(p), RangeAggregator.RANGES_FIELD); PARSER.declareField(GeoDistanceAggregationBuilder::unit, p -> DistanceUnit.fromString(p.text()), UNIT_FIELD, ObjectParser.ValueType.STRING); @@ -77,8 +76,8 @@ public class GeoDistanceAggregationBuilder extends ValuesSourceAggregationBuilde ORIGIN_FIELD, ObjectParser.ValueType.OBJECT_ARRAY_OR_STRING); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - GeoDistanceAggregationBuilder builder = PARSER.parse(context.parser(), new GeoDistanceAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + GeoDistanceAggregationBuilder builder = PARSER.parse(parser, new GeoDistanceAggregationBuilder(aggregationName), null); if (builder.origin() == null) { throw new IllegalArgumentException("Aggregation [" + aggregationName + "] must define an [origin]."); } @@ -116,7 +115,7 @@ public class GeoDistanceAggregationBuilder extends ValuesSourceAggregationBuilde } } - private static GeoPoint parseGeoPoint(XContentParser parser, QueryParseContext context) throws IOException { + private static GeoPoint parseGeoPoint(XContentParser parser) throws IOException { Token token = parser.currentToken(); if (token == XContentParser.Token.VALUE_STRING) { GeoPoint point = new GeoPoint(); @@ -164,7 +163,7 @@ public class GeoDistanceAggregationBuilder extends ValuesSourceAggregationBuilde throw new IllegalArgumentException("Unexpected token [" + token + "] while parsing geo point"); } - private static Range parseRange(XContentParser parser, QueryParseContext context) throws IOException { + private static Range parseRange(XContentParser parser) throws IOException { String fromAsStr = null; String toAsStr = null; double from = 0.0; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ip/IpRangeAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ip/IpRangeAggregationBuilder.java index c530ecbfa9..99cc79f666 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ip/IpRangeAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ip/IpRangeAggregationBuilder.java @@ -30,7 +30,6 @@ import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentParser.Token; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; @@ -61,7 +60,7 @@ public final class IpRangeAggregationBuilder public static final String NAME = "ip_range"; private static final ParseField MASK_FIELD = new ParseField("mask"); - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(IpRangeAggregationBuilder.NAME); ValuesSourceParserHelper.declareBytesFields(PARSER, false, false); @@ -70,14 +69,14 @@ public final class IpRangeAggregationBuilder PARSER.declareObjectArray((agg, ranges) -> { for (Range range : ranges) agg.addRange(range); - }, IpRangeAggregationBuilder::parseRange, RangeAggregator.RANGES_FIELD); + }, (p, c) -> IpRangeAggregationBuilder.parseRange(p), RangeAggregator.RANGES_FIELD); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new IpRangeAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new IpRangeAggregationBuilder(aggregationName), null); } - private static Range parseRange(XContentParser parser, QueryParseContext context) throws IOException { + private static Range parseRange(XContentParser parser) throws IOException { String key = null; String from = null; String to = null; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java index 78f5bd0a7a..0fbd8da74c 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -43,7 +43,7 @@ public class DiversifiedAggregationBuilder extends ValuesSourceAggregationBuilde public static final int MAX_DOCS_PER_VALUE_DEFAULT = 1; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(DiversifiedAggregationBuilder.NAME); ValuesSourceParserHelper.declareAnyFields(PARSER, true, false); @@ -52,8 +52,8 @@ public class DiversifiedAggregationBuilder extends ValuesSourceAggregationBuilde PARSER.declareString(DiversifiedAggregationBuilder::executionHint, SamplerAggregator.EXECUTION_HINT_FIELD); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new DiversifiedAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new DiversifiedAggregationBuilder(aggregationName), null); } private int shardSize = SamplerAggregationBuilder.DEFAULT_SHARD_SAMPLE_SIZE; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregationBuilder.java index f69b66ffd1..6151e764bc 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregationBuilder.java @@ -24,7 +24,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -86,12 +85,11 @@ public class SamplerAggregationBuilder extends AbstractAggregationBuilder significanceHeuristicParserRegistry) { - ObjectParser parser = + ObjectParser aggregationParser = new ObjectParser<>(SignificantTermsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareAnyFields(parser, true, true); + ValuesSourceParserHelper.declareAnyFields(aggregationParser, true, true); - parser.declareInt(SignificantTermsAggregationBuilder::shardSize, TermsAggregationBuilder.SHARD_SIZE_FIELD_NAME); + aggregationParser.declareInt(SignificantTermsAggregationBuilder::shardSize, TermsAggregationBuilder.SHARD_SIZE_FIELD_NAME); - parser.declareLong(SignificantTermsAggregationBuilder::minDocCount, TermsAggregationBuilder.MIN_DOC_COUNT_FIELD_NAME); + aggregationParser.declareLong(SignificantTermsAggregationBuilder::minDocCount, TermsAggregationBuilder.MIN_DOC_COUNT_FIELD_NAME); - parser.declareLong(SignificantTermsAggregationBuilder::shardMinDocCount, TermsAggregationBuilder.SHARD_MIN_DOC_COUNT_FIELD_NAME); + aggregationParser.declareLong(SignificantTermsAggregationBuilder::shardMinDocCount, + TermsAggregationBuilder.SHARD_MIN_DOC_COUNT_FIELD_NAME); - parser.declareInt(SignificantTermsAggregationBuilder::size, TermsAggregationBuilder.REQUIRED_SIZE_FIELD_NAME); + aggregationParser.declareInt(SignificantTermsAggregationBuilder::size, TermsAggregationBuilder.REQUIRED_SIZE_FIELD_NAME); - parser.declareString(SignificantTermsAggregationBuilder::executionHint, TermsAggregationBuilder.EXECUTION_HINT_FIELD_NAME); + aggregationParser.declareString(SignificantTermsAggregationBuilder::executionHint, + TermsAggregationBuilder.EXECUTION_HINT_FIELD_NAME); - parser.declareObject(SignificantTermsAggregationBuilder::backgroundFilter, + aggregationParser.declareObject(SignificantTermsAggregationBuilder::backgroundFilter, (p, context) -> parseInnerQueryBuilder(p), SignificantTermsAggregationBuilder.BACKGROUND_FILTER); - parser.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(v, b.includeExclude())), + aggregationParser.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(v, b.includeExclude())), IncludeExclude::parseInclude, IncludeExclude.INCLUDE_FIELD, ObjectParser.ValueType.OBJECT_ARRAY_OR_STRING); - parser.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(b.includeExclude(), v)), + aggregationParser.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(b.includeExclude(), v)), IncludeExclude::parseExclude, IncludeExclude.EXCLUDE_FIELD, ObjectParser.ValueType.STRING_ARRAY); for (String name : significanceHeuristicParserRegistry.getNames()) { - parser.declareObject(SignificantTermsAggregationBuilder::significanceHeuristic, + aggregationParser.declareObject(SignificantTermsAggregationBuilder::significanceHeuristic, (p, context) -> { SignificanceHeuristicParser significanceHeuristicParser = significanceHeuristicParserRegistry .lookupReturningNullIfNotFound(name); - return significanceHeuristicParser.parse(context); + return significanceHeuristicParser.parse(p); }, new ParseField(name)); } return new Aggregator.Parser() { @Override - public AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return parser.parse(context.parser(), new SignificantTermsAggregationBuilder(aggregationName, null), context); + public AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return aggregationParser.parse(parser, new SignificantTermsAggregationBuilder(aggregationName, null), null); } }; } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTextAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTextAggregationBuilder.java index a55d89bbc5..15004b3a79 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTextAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTextAggregationBuilder.java @@ -25,9 +25,9 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.ParseFieldRegistry; import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.AbstractQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregationInitializationException; @@ -70,55 +70,55 @@ public class SignificantTextAggregationBuilder extends AbstractAggregationBuilde public static Aggregator.Parser getParser( ParseFieldRegistry significanceHeuristicParserRegistry) { - ObjectParser parser = new ObjectParser<>( + ObjectParser PARSER = new ObjectParser<>( SignificantTextAggregationBuilder.NAME); - parser.declareInt(SignificantTextAggregationBuilder::shardSize, + PARSER.declareInt(SignificantTextAggregationBuilder::shardSize, TermsAggregationBuilder.SHARD_SIZE_FIELD_NAME); - parser.declareLong(SignificantTextAggregationBuilder::minDocCount, + PARSER.declareLong(SignificantTextAggregationBuilder::minDocCount, TermsAggregationBuilder.MIN_DOC_COUNT_FIELD_NAME); - parser.declareLong(SignificantTextAggregationBuilder::shardMinDocCount, + PARSER.declareLong(SignificantTextAggregationBuilder::shardMinDocCount, TermsAggregationBuilder.SHARD_MIN_DOC_COUNT_FIELD_NAME); - parser.declareInt(SignificantTextAggregationBuilder::size, + PARSER.declareInt(SignificantTextAggregationBuilder::size, TermsAggregationBuilder.REQUIRED_SIZE_FIELD_NAME); - parser.declareString(SignificantTextAggregationBuilder::fieldName, FIELD_NAME); + PARSER.declareString(SignificantTextAggregationBuilder::fieldName, FIELD_NAME); - parser.declareStringArray(SignificantTextAggregationBuilder::sourceFieldNames, SOURCE_FIELDS_NAME); + PARSER.declareStringArray(SignificantTextAggregationBuilder::sourceFieldNames, SOURCE_FIELDS_NAME); - parser.declareBoolean(SignificantTextAggregationBuilder::filterDuplicateText, + PARSER.declareBoolean(SignificantTextAggregationBuilder::filterDuplicateText, FILTER_DUPLICATE_TEXT_FIELD_NAME); - parser.declareObject(SignificantTextAggregationBuilder::backgroundFilter, + PARSER.declareObject(SignificantTextAggregationBuilder::backgroundFilter, (p, context) -> AbstractQueryBuilder.parseInnerQueryBuilder(p), SignificantTermsAggregationBuilder.BACKGROUND_FILTER); - parser.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(v, b.includeExclude())), + PARSER.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(v, b.includeExclude())), IncludeExclude::parseInclude, IncludeExclude.INCLUDE_FIELD, ObjectParser.ValueType.OBJECT_ARRAY_OR_STRING); - parser.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(b.includeExclude(), v)), + PARSER.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(b.includeExclude(), v)), IncludeExclude::parseExclude, IncludeExclude.EXCLUDE_FIELD, ObjectParser.ValueType.STRING_ARRAY); for (String name : significanceHeuristicParserRegistry.getNames()) { - parser.declareObject(SignificantTextAggregationBuilder::significanceHeuristic, + PARSER.declareObject(SignificantTextAggregationBuilder::significanceHeuristic, (p, context) -> { SignificanceHeuristicParser significanceHeuristicParser = significanceHeuristicParserRegistry .lookupReturningNullIfNotFound(name); - return significanceHeuristicParser.parse(context); + return significanceHeuristicParser.parse(p); }, new ParseField(name)); } return new Aggregator.Parser() { @Override - public AggregationBuilder parse(String aggregationName, QueryParseContext context) + public AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { - return parser.parse(context.parser(), - new SignificantTextAggregationBuilder(aggregationName, null), context); + return PARSER.parse(parser, + new SignificantTextAggregationBuilder(aggregationName, null), null); } }; } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/GND.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/GND.java index 5968f42211..2c74fe1ba0 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/GND.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/GND.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardException; import java.io.IOException; @@ -113,8 +112,7 @@ public class GND extends NXYSignificanceHeuristic { } @Override - public SignificanceHeuristic parse(QueryParseContext context) throws IOException, QueryShardException { - XContentParser parser = context.parser(); + public SignificanceHeuristic parse(XContentParser parser) throws IOException, QueryShardException { String givenName = parser.currentName(); boolean backgroundIsSuperset = true; XContentParser.Token token = parser.nextToken(); diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/JLHScore.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/JLHScore.java index d8009818f7..2627008b47 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/JLHScore.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/JLHScore.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardException; import java.io.IOException; @@ -104,9 +103,8 @@ public class JLHScore extends SignificanceHeuristic { return builder; } - public static SignificanceHeuristic parse(QueryParseContext context) + public static SignificanceHeuristic parse(XContentParser parser) throws IOException, QueryShardException { - XContentParser parser = context.parser(); // move to the closing bracket if (!parser.nextToken().equals(XContentParser.Token.END_OBJECT)) { throw new ElasticsearchParseException( diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/NXYSignificanceHeuristic.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/NXYSignificanceHeuristic.java index 5f92b5b40e..f34a77d32b 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/NXYSignificanceHeuristic.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/NXYSignificanceHeuristic.java @@ -27,7 +27,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardException; import java.io.IOException; @@ -152,9 +151,8 @@ public abstract class NXYSignificanceHeuristic extends SignificanceHeuristic { public abstract static class NXYParser implements SignificanceHeuristicParser { @Override - public SignificanceHeuristic parse(QueryParseContext context) + public SignificanceHeuristic parse(XContentParser parser) throws IOException, QueryShardException { - XContentParser parser = context.parser(); String givenName = parser.currentName(); boolean includeNegatives = false; boolean backgroundIsSuperset = true; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/PercentageScore.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/PercentageScore.java index f4a61fbfae..9220adf87d 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/PercentageScore.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/PercentageScore.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardException; import java.io.IOException; @@ -56,9 +55,8 @@ public class PercentageScore extends SignificanceHeuristic { return builder; } - public static SignificanceHeuristic parse(QueryParseContext context) + public static SignificanceHeuristic parse(XContentParser parser) throws IOException, QueryShardException { - XContentParser parser = context.parser(); // move to the closing bracket if (!parser.nextToken().equals(XContentParser.Token.END_OBJECT)) { throw new ElasticsearchParseException("failed to parse [percentage] significance heuristic. expected an empty object, but got [{}] instead", parser.currentToken()); diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/ScriptHeuristic.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/ScriptHeuristic.java index 99f3193b56..5f812ae4cc 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/ScriptHeuristic.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/ScriptHeuristic.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.index.query.QueryShardException; import org.elasticsearch.script.ExecutableScript; @@ -149,9 +148,8 @@ public class ScriptHeuristic extends SignificanceHeuristic { return Objects.equals(script, other.script); } - public static SignificanceHeuristic parse(QueryParseContext context) + public static SignificanceHeuristic parse(XContentParser parser) throws IOException, QueryShardException { - XContentParser parser = context.parser(); String heuristicName = parser.currentName(); Script script = null; XContentParser.Token token; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/SignificanceHeuristicParser.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/SignificanceHeuristicParser.java index 3c6f98c155..bab88555cb 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/SignificanceHeuristicParser.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/heuristics/SignificanceHeuristicParser.java @@ -22,7 +22,6 @@ package org.elasticsearch.search.aggregations.bucket.significant.heuristics; import org.elasticsearch.common.ParsingException; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import java.io.IOException; @@ -31,5 +30,5 @@ import java.io.IOException; */ @FunctionalInterface public interface SignificanceHeuristicParser { - SignificanceHeuristic parse(QueryParseContext context) throws IOException, ParsingException; + SignificanceHeuristic parse(XContentParser parser) throws IOException, ParsingException; } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java index d534b572f9..e95ee43316 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java @@ -23,16 +23,16 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.Aggregator.SubAggCollectionMode; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; -import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregator.BucketCountThresholds; -import org.elasticsearch.search.aggregations.bucket.terms.support.IncludeExclude; import org.elasticsearch.search.aggregations.BucketOrder; import org.elasticsearch.search.aggregations.InternalOrder; import org.elasticsearch.search.aggregations.InternalOrder.CompoundOrder; +import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregator.BucketCountThresholds; +import org.elasticsearch.search.aggregations.bucket.terms.support.IncludeExclude; import org.elasticsearch.search.aggregations.support.ValueType; import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; @@ -60,7 +60,7 @@ public class TermsAggregationBuilder extends ValuesSourceAggregationBuilder PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(TermsAggregationBuilder.NAME); ValuesSourceParserHelper.declareAnyFields(PARSER, true, true); @@ -82,7 +82,7 @@ public class TermsAggregationBuilder extends ValuesSourceAggregationBuilder SubAggCollectionMode.parse(p.text()), SubAggCollectionMode.KEY, ObjectParser.ValueType.STRING); - PARSER.declareObjectArray(TermsAggregationBuilder::order, InternalOrder.Parser::parseOrderParam, + PARSER.declareObjectArray(TermsAggregationBuilder::order, (p, c) -> InternalOrder.Parser.parseOrderParam(p), TermsAggregationBuilder.ORDER_FIELD); PARSER.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(v, b.includeExclude())), @@ -92,8 +92,8 @@ public class TermsAggregationBuilder extends ValuesSourceAggregationBuilder { public static final String NAME = "avg"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(AvgAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new AvgAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new AvgAggregationBuilder(aggregationName), null); } public AvgAggregationBuilder(String name) { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/cardinality/CardinalityAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/cardinality/CardinalityAggregationBuilder.java index 1f76d8530f..5914b0a4f4 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/cardinality/CardinalityAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/cardinality/CardinalityAggregationBuilder.java @@ -24,7 +24,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -47,7 +47,7 @@ public final class CardinalityAggregationBuilder private static final ParseField REHASH = new ParseField("rehash").withAllDeprecated("no replacement - values will always be rehashed"); public static final ParseField PRECISION_THRESHOLD_FIELD = new ParseField("precision_threshold"); - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(CardinalityAggregationBuilder.NAME); ValuesSourceParserHelper.declareAnyFields(PARSER, true, false); @@ -55,8 +55,8 @@ public final class CardinalityAggregationBuilder PARSER.declareLong((b, v) -> {/*ignore*/}, REHASH); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new CardinalityAggregationBuilder(aggregationName, null), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new CardinalityAggregationBuilder(aggregationName, null), null); } private Long precisionThreshold = null; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregationBuilder.java index be3ad4db80..de45bb3149 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -41,15 +41,15 @@ import java.util.Objects; public class GeoBoundsAggregationBuilder extends ValuesSourceAggregationBuilder { public static final String NAME = "geo_bounds"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoBoundsAggregationBuilder.NAME); ValuesSourceParserHelper.declareGeoFields(PARSER, false, false); PARSER.declareBoolean(GeoBoundsAggregationBuilder::wrapLongitude, GeoBoundsAggregator.WRAP_LONGITUDE_FIELD); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new GeoBoundsAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new GeoBoundsAggregationBuilder(aggregationName), null); } private boolean wrapLongitude = true; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geocentroid/GeoCentroidAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geocentroid/GeoCentroidAggregationBuilder.java index 8e173e6592..f7c673b2e5 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geocentroid/GeoCentroidAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geocentroid/GeoCentroidAggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -41,14 +41,14 @@ public class GeoCentroidAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly { public static final String NAME = "geo_centroid"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoCentroidAggregationBuilder.NAME); ValuesSourceParserHelper.declareGeoFields(PARSER, true, false); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new GeoCentroidAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new GeoCentroidAggregationBuilder(aggregationName), null); } public GeoCentroidAggregationBuilder(String name) { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/max/MaxAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/max/MaxAggregationBuilder.java index dafad9dacb..10a8b6cd11 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/max/MaxAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/max/MaxAggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -41,14 +41,14 @@ import java.io.IOException; public class MaxAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly { public static final String NAME = "max"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(MaxAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new MaxAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new MaxAggregationBuilder(aggregationName), null); } public MaxAggregationBuilder(String name) { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/min/MinAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/min/MinAggregationBuilder.java index 0f85748416..5b981a394f 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/min/MinAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/min/MinAggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -42,14 +42,14 @@ import java.io.IOException; public class MinAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly { public static final String NAME = "min"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(AvgAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new MinAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new MinAggregationBuilder(aggregationName), null); } public MinAggregationBuilder(String name) { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/percentiles/PercentileRanksAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/percentiles/PercentileRanksAggregationBuilder.java index db322a8e70..ea8e7648b5 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/percentiles/PercentileRanksAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/percentiles/PercentileRanksAggregationBuilder.java @@ -24,7 +24,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -53,7 +53,7 @@ public class PercentileRanksAggregationBuilder extends LeafOnly TDIGEST_OPTIONS_PARSER = + private static final ObjectParser TDIGEST_OPTIONS_PARSER = new ObjectParser<>(PercentilesMethod.TDIGEST.getParseField().getPreferredName(), TDigestOptions::new); static { TDIGEST_OPTIONS_PARSER.declareDouble((opts, compression) -> opts.compression = compression, new ParseField("compression")); @@ -63,14 +63,14 @@ public class PercentileRanksAggregationBuilder extends LeafOnly HDR_OPTIONS_PARSER = + private static final ObjectParser HDR_OPTIONS_PARSER = new ObjectParser<>(PercentilesMethod.HDR.getParseField().getPreferredName(), HDROptions::new); static { HDR_OPTIONS_PARSER.declareInt((opts, numberOfSigDigits) -> opts.numberOfSigDigits = numberOfSigDigits, new ParseField("number_of_significant_value_digits")); } - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(PercentileRanksAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, false, false); @@ -96,8 +96,8 @@ public class PercentileRanksAggregationBuilder extends LeafOnly TDIGEST_OPTIONS_PARSER = + private static final ObjectParser TDIGEST_OPTIONS_PARSER = new ObjectParser<>(PercentilesMethod.TDIGEST.getParseField().getPreferredName(), TDigestOptions::new); static { TDIGEST_OPTIONS_PARSER.declareDouble((opts, compression) -> opts.compression = compression, COMPRESSION_FIELD); @@ -68,7 +68,7 @@ public class PercentilesAggregationBuilder extends LeafOnly HDR_OPTIONS_PARSER = + private static final ObjectParser HDR_OPTIONS_PARSER = new ObjectParser<>(PercentilesMethod.HDR.getParseField().getPreferredName(), HDROptions::new); static { HDR_OPTIONS_PARSER.declareInt( @@ -76,7 +76,7 @@ public class PercentilesAggregationBuilder extends LeafOnly PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(PercentilesAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); @@ -102,8 +102,8 @@ public class PercentilesAggregationBuilder extends LeafOnly { public static final String NAME = "scripted_metric"; @@ -228,7 +225,7 @@ public class ScriptedMetricAggregationBuilder extends AbstractAggregationBuilder return builder; } - public static ScriptedMetricAggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { + public static ScriptedMetricAggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { Script initScript = null; Script mapScript = null; Script combineScript = null; @@ -237,7 +234,6 @@ public class ScriptedMetricAggregationBuilder extends AbstractAggregationBuilder XContentParser.Token token; String currentFieldName = null; - XContentParser parser = context.parser(); while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { if (token == XContentParser.Token.FIELD_NAME) { currentFieldName = parser.currentName(); diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/StatsAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/StatsAggregationBuilder.java index 390be44d74..39386e79e3 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/StatsAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/StatsAggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -41,14 +41,14 @@ import java.io.IOException; public class StatsAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly { public static final String NAME = "stats"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(StatsAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new StatsAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new StatsAggregationBuilder(aggregationName), null); } public StatsAggregationBuilder(String name) { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregationBuilder.java index 94857c8753..ffcf6321d6 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -43,15 +43,15 @@ public class ExtendedStatsAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly { public static final String NAME = "extended_stats"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(ExtendedStatsAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); PARSER.declareDouble(ExtendedStatsAggregationBuilder::sigma, ExtendedStatsAggregator.SIGMA_FIELD); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new ExtendedStatsAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new ExtendedStatsAggregationBuilder(aggregationName), null); } private double sigma = 2.0; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/sum/SumAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/sum/SumAggregationBuilder.java index 7118b14d0c..2528a7d880 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/sum/SumAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/sum/SumAggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -41,14 +41,14 @@ import java.io.IOException; public class SumAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly { public static final String NAME = "sum"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(SumAggregationBuilder.NAME); ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new SumAggregationBuilder(aggregationName), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new SumAggregationBuilder(aggregationName), null); } public SumAggregationBuilder(String name) { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/tophits/TopHitsAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/tophits/TopHitsAggregationBuilder.java index c131ecfee1..c5be9f3551 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/tophits/TopHitsAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/tophits/TopHitsAggregationBuilder.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.script.Script; import org.elasticsearch.script.SearchScript; @@ -595,11 +594,10 @@ public class TopHitsAggregationBuilder extends AbstractAggregationBuilder scriptFields = new ArrayList<>(); while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { @@ -682,7 +680,7 @@ public class TopHitsAggregationBuilder extends AbstractAggregationBuilder fieldDataFields = new ArrayList<>(); while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) { @@ -698,7 +696,7 @@ public class TopHitsAggregationBuilder extends AbstractAggregationBuilder> sorts = SortBuilder.fromXContent(parser); factory.sorts(sorts); } else if (SearchSourceBuilder._SOURCE_FIELD.match(currentFieldName)) { - factory.fetchSource(FetchSourceContext.fromXContent(context.parser())); + factory.fetchSource(FetchSourceContext.fromXContent(parser)); } else { throw new ParsingException(parser.getTokenLocation(), "Unknown key for a " + token + " in [" + currentFieldName + "].", parser.getTokenLocation()); diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/valuecount/ValueCountAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/valuecount/ValueCountAggregationBuilder.java index 50916b4063..a6a1372608 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/valuecount/ValueCountAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/valuecount/ValueCountAggregationBuilder.java @@ -23,7 +23,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories; import org.elasticsearch.search.aggregations.AggregatorFactory; @@ -40,14 +40,14 @@ import java.io.IOException; public class ValueCountAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly { public static final String NAME = "value_count"; - private static final ObjectParser PARSER; + private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(ValueCountAggregationBuilder.NAME); ValuesSourceParserHelper.declareAnyFields(PARSER, true, true); } - public static AggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException { - return PARSER.parse(context.parser(), new ValueCountAggregationBuilder(aggregationName, null), context); + public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { + return PARSER.parse(parser, new ValueCountAggregationBuilder(aggregationName, null), null); } public ValueCountAggregationBuilder(String name, ValueType targetValueType) { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/BucketHelpers.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/BucketHelpers.java index 90665eeb9b..6120ea5b4c 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/BucketHelpers.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/BucketHelpers.java @@ -24,7 +24,6 @@ import org.elasticsearch.common.ParsingException; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentLocation; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AggregationExecutionException; import org.elasticsearch.search.aggregations.InternalMultiBucketAggregation; import org.elasticsearch.search.aggregations.InvalidAggregationPathException; @@ -58,11 +57,11 @@ public class BucketHelpers { /** * Parse a string GapPolicy into the byte enum * - * @param context SearchContext this is taking place in - * @param text GapPolicy in string format (e.g. "ignore") - * @return GapPolicy enum + * @param text + * GapPolicy in string format (e.g. "ignore") + * @return GapPolicy enum */ - public static GapPolicy parse(QueryParseContext context, String text, XContentLocation tokenLocation) { + public static GapPolicy parse(String text, XContentLocation tokenLocation) { GapPolicy result = null; for (GapPolicy policy : values()) { if (policy.parseField.match(text)) { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/PipelineAggregator.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/PipelineAggregator.java index f49ca1dd39..de5a8ac998 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/PipelineAggregator.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/PipelineAggregator.java @@ -24,7 +24,7 @@ import org.elasticsearch.common.ParseField; import org.elasticsearch.common.io.stream.NamedWriteable; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.aggregations.InternalAggregation; import org.elasticsearch.search.aggregations.InternalAggregation.ReduceContext; import org.elasticsearch.search.aggregations.PipelineAggregationBuilder; @@ -34,7 +34,7 @@ import java.util.Map; public abstract class PipelineAggregator implements NamedWriteable { /** - * Parse the {@link PipelineAggregationBuilder} from a {@link QueryParseContext}. + * Parse the {@link PipelineAggregationBuilder} from a {@link XContentParser}. */ @FunctionalInterface public interface Parser { @@ -48,13 +48,12 @@ public abstract class PipelineAggregator implements NamedWriteable { * * @param pipelineAggregatorName * The name of the pipeline aggregation - * @param context - * The search context + * @param parser the parser * @return The resolved pipeline aggregator factory * @throws java.io.IOException * When parsing fails */ - PipelineAggregationBuilder parse(String pipelineAggregatorName, QueryParseContext context) + PipelineAggregationBuilder parse(String pipelineAggregatorName, XContentParser parser) throws IOException; } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/BucketMetricsParser.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/BucketMetricsParser.java index e7954174aa..d5a28100a5 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/BucketMetricsParser.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/BucketMetricsParser.java @@ -22,7 +22,6 @@ package org.elasticsearch.search.aggregations.pipeline.bucketmetrics; import org.elasticsearch.common.ParseField; import org.elasticsearch.common.ParsingException; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.pipeline.BucketHelpers.GapPolicy; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; @@ -44,9 +43,8 @@ public abstract class BucketMetricsParser implements PipelineAggregator.Parser { } @Override - public final BucketMetricsPipelineAggregationBuilder parse(String pipelineAggregatorName, QueryParseContext context) + public final BucketMetricsPipelineAggregationBuilder parse(String pipelineAggregatorName, XContentParser parser) throws IOException { - XContentParser parser = context.parser(); XContentParser.Token token; String currentFieldName = null; String[] bucketsPaths = null; @@ -63,9 +61,9 @@ public abstract class BucketMetricsParser implements PipelineAggregator.Parser { } else if (BUCKETS_PATH.match(currentFieldName)) { bucketsPaths = new String[] { parser.text() }; } else if (GAP_POLICY.match(currentFieldName)) { - gapPolicy = GapPolicy.parse(context, parser.text(), parser.getTokenLocation()); + gapPolicy = GapPolicy.parse(parser.text(), parser.getTokenLocation()); } else { - parseToken(pipelineAggregatorName, parser, context, currentFieldName, token, params); + parseToken(pipelineAggregatorName, parser, currentFieldName, token, params); } } else if (token == XContentParser.Token.START_ARRAY) { if (BUCKETS_PATH.match(currentFieldName)) { @@ -76,10 +74,10 @@ public abstract class BucketMetricsParser implements PipelineAggregator.Parser { } bucketsPaths = paths.toArray(new String[paths.size()]); } else { - parseToken(pipelineAggregatorName, parser, context, currentFieldName, token, params); + parseToken(pipelineAggregatorName, parser, currentFieldName, token, params); } } else { - parseToken(pipelineAggregatorName, parser, context, currentFieldName, token, params); + parseToken(pipelineAggregatorName, parser, currentFieldName, token, params); } } @@ -104,14 +102,14 @@ public abstract class BucketMetricsParser implements PipelineAggregator.Parser { protected abstract BucketMetricsPipelineAggregationBuilder buildFactory(String pipelineAggregatorName, String bucketsPaths, Map params); - protected boolean token(XContentParser parser, QueryParseContext context, String field, + protected boolean token(XContentParser parser, String field, XContentParser.Token token, Map params) throws IOException { return false; } - private void parseToken(String aggregationName, XContentParser parser, QueryParseContext context, String currentFieldName, + private void parseToken(String aggregationName, XContentParser parser, String currentFieldName, XContentParser.Token currentToken, Map params) throws IOException { - if (token(parser, context, currentFieldName, currentToken, params) == false) { + if (token(parser, currentFieldName, currentToken, params) == false) { throw new ParsingException(parser.getTokenLocation(), "Unexpected token " + currentToken + " [" + currentFieldName + "] in [" + aggregationName + "]"); } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/percentile/PercentilesBucketPipelineAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/percentile/PercentilesBucketPipelineAggregationBuilder.java index cea7d01136..266540aaa8 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/percentile/PercentilesBucketPipelineAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/percentile/PercentilesBucketPipelineAggregationBuilder.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.PipelineAggregationBuilder; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; @@ -136,8 +135,8 @@ public class PercentilesBucketPipelineAggregationBuilder } @Override - protected boolean token(XContentParser parser, QueryParseContext context, String field, - XContentParser.Token token, Map params) throws IOException { + protected boolean token(XContentParser parser, String field, XContentParser.Token token, Map params) + throws IOException { if (PERCENTS_FIELD.match(field) && token == XContentParser.Token.START_ARRAY) { DoubleArrayList percents = new DoubleArrayList(10); while (parser.nextToken() != XContentParser.Token.END_ARRAY) { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketParser.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketParser.java index dfa28c3dd2..83ad5a06fa 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketParser.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketParser.java @@ -21,7 +21,6 @@ package org.elasticsearch.search.aggregations.pipeline.bucketmetrics.stats.exten import org.elasticsearch.common.ParseField; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.BucketMetricsParser; import java.io.IOException; @@ -44,7 +43,7 @@ public class ExtendedStatsBucketParser extends BucketMetricsParser { } @Override - protected boolean token(XContentParser parser, QueryParseContext context, String field, + protected boolean token(XContentParser parser, String field, XContentParser.Token token, Map params) throws IOException { if (SIGMA.match(field) && token == XContentParser.Token.VALUE_NUMBER) { params.put(SIGMA.getPreferredName(), parser.doubleValue()); diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketscript/BucketScriptPipelineAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketscript/BucketScriptPipelineAggregationBuilder.java index d84305e33f..7c7f138391 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketscript/BucketScriptPipelineAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketscript/BucketScriptPipelineAggregationBuilder.java @@ -24,7 +24,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.script.Script; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.aggregations.pipeline.AbstractPipelineAggregationBuilder; @@ -68,7 +67,7 @@ public class BucketScriptPipelineAggregationBuilder extends AbstractPipelineAggr public BucketScriptPipelineAggregationBuilder(StreamInput in) throws IOException { super(in, NAME); int mapSize = in.readVInt(); - bucketsPathsMap = new HashMap(mapSize); + bucketsPathsMap = new HashMap<>(mapSize); for (int i = 0; i < mapSize; i++) { bucketsPathsMap.put(in.readString(), in.readString()); } @@ -157,8 +156,7 @@ public class BucketScriptPipelineAggregationBuilder extends AbstractPipelineAggr return builder; } - public static BucketScriptPipelineAggregationBuilder parse(String reducerName, QueryParseContext context) throws IOException { - XContentParser parser = context.parser(); + public static BucketScriptPipelineAggregationBuilder parse(String reducerName, XContentParser parser) throws IOException { XContentParser.Token token; Script script = null; String currentFieldName = null; @@ -176,7 +174,7 @@ public class BucketScriptPipelineAggregationBuilder extends AbstractPipelineAggr bucketsPathsMap = new HashMap<>(); bucketsPathsMap.put("_value", parser.text()); } else if (GAP_POLICY.match(currentFieldName)) { - gapPolicy = GapPolicy.parse(context, parser.text(), parser.getTokenLocation()); + gapPolicy = GapPolicy.parse(parser.text(), parser.getTokenLocation()); } else if (Script.SCRIPT_PARSE_FIELD.match(currentFieldName)) { script = Script.parse(parser); } else { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketselector/BucketSelectorPipelineAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketselector/BucketSelectorPipelineAggregationBuilder.java index 402d1ba57b..219150667f 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketselector/BucketSelectorPipelineAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketselector/BucketSelectorPipelineAggregationBuilder.java @@ -24,7 +24,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.pipeline.AbstractPipelineAggregationBuilder; import org.elasticsearch.search.aggregations.pipeline.BucketHelpers.GapPolicy; @@ -65,7 +64,7 @@ public class BucketSelectorPipelineAggregationBuilder extends AbstractPipelineAg public BucketSelectorPipelineAggregationBuilder(StreamInput in) throws IOException { super(in, NAME); int mapSize = in.readVInt(); - bucketsPathsMap = new HashMap(mapSize); + bucketsPathsMap = new HashMap<>(mapSize); for (int i = 0; i < mapSize; i++) { bucketsPathsMap.put(in.readString(), in.readString()); } @@ -123,8 +122,7 @@ public class BucketSelectorPipelineAggregationBuilder extends AbstractPipelineAg return builder; } - public static BucketSelectorPipelineAggregationBuilder parse(String reducerName, QueryParseContext context) throws IOException { - XContentParser parser = context.parser(); + public static BucketSelectorPipelineAggregationBuilder parse(String reducerName, XContentParser parser) throws IOException { XContentParser.Token token; Script script = null; String currentFieldName = null; @@ -139,7 +137,7 @@ public class BucketSelectorPipelineAggregationBuilder extends AbstractPipelineAg bucketsPathsMap = new HashMap<>(); bucketsPathsMap.put("_value", parser.text()); } else if (GAP_POLICY.match(currentFieldName)) { - gapPolicy = GapPolicy.parse(context, parser.text(), parser.getTokenLocation()); + gapPolicy = GapPolicy.parse(parser.text(), parser.getTokenLocation()); } else if (Script.SCRIPT_PARSE_FIELD.match(currentFieldName)) { script = Script.parse(parser); } else { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/cumulativesum/CumulativeSumPipelineAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/cumulativesum/CumulativeSumPipelineAggregationBuilder.java index 5ac185990b..7546b62426 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/cumulativesum/CumulativeSumPipelineAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/cumulativesum/CumulativeSumPipelineAggregationBuilder.java @@ -24,7 +24,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.PipelineAggregationBuilder; @@ -129,9 +128,8 @@ public class CumulativeSumPipelineAggregationBuilder extends AbstractPipelineAgg return builder; } - public static CumulativeSumPipelineAggregationBuilder parse(String pipelineAggregatorName, QueryParseContext context) + public static CumulativeSumPipelineAggregationBuilder parse(String pipelineAggregatorName, XContentParser parser) throws IOException { - XContentParser parser = context.parser(); XContentParser.Token token; String currentFieldName = null; String[] bucketsPaths = null; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/derivative/DerivativePipelineAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/derivative/DerivativePipelineAggregationBuilder.java index bb2a1c01a5..1e722ac0ba 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/derivative/DerivativePipelineAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/derivative/DerivativePipelineAggregationBuilder.java @@ -27,12 +27,11 @@ import org.elasticsearch.common.rounding.DateTimeUnit; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.PipelineAggregationBuilder; -import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramAggregatorFactory; import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramAggregationBuilder; +import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramAggregatorFactory; import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval; import org.elasticsearch.search.aggregations.bucket.histogram.HistogramAggregatorFactory; import org.elasticsearch.search.aggregations.pipeline.AbstractPipelineAggregationBuilder; @@ -194,8 +193,7 @@ public class DerivativePipelineAggregationBuilder extends AbstractPipelineAggreg return builder; } - public static DerivativePipelineAggregationBuilder parse(String pipelineAggregatorName, QueryParseContext context) throws IOException { - XContentParser parser = context.parser(); + public static DerivativePipelineAggregationBuilder parse(String pipelineAggregatorName, XContentParser parser) throws IOException { XContentParser.Token token; String currentFieldName = null; String[] bucketsPaths = null; @@ -212,7 +210,7 @@ public class DerivativePipelineAggregationBuilder extends AbstractPipelineAggreg } else if (BUCKETS_PATH_FIELD.match(currentFieldName)) { bucketsPaths = new String[] { parser.text() }; } else if (GAP_POLICY_FIELD.match(currentFieldName)) { - gapPolicy = GapPolicy.parse(context, parser.text(), parser.getTokenLocation()); + gapPolicy = GapPolicy.parse(parser.text(), parser.getTokenLocation()); } else if (UNIT_FIELD.match(currentFieldName)) { units = parser.text(); } else { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/movavg/MovAvgPipelineAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/movavg/MovAvgPipelineAggregationBuilder.java index bc973ad442..f5f71b3ca7 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/movavg/MovAvgPipelineAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/movavg/MovAvgPipelineAggregationBuilder.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ParseFieldRegistry; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.PipelineAggregationBuilder; @@ -304,8 +303,7 @@ public class MovAvgPipelineAggregationBuilder extends AbstractPipelineAggregatio public static MovAvgPipelineAggregationBuilder parse( ParseFieldRegistry movingAverageMdelParserRegistry, - String pipelineAggregatorName, QueryParseContext context) throws IOException { - XContentParser parser = context.parser(); + String pipelineAggregatorName, XContentParser parser) throws IOException { XContentParser.Token token; String currentFieldName = null; String[] bucketsPaths = null; @@ -344,7 +342,7 @@ public class MovAvgPipelineAggregationBuilder extends AbstractPipelineAggregatio } else if (BUCKETS_PATH.match(currentFieldName)) { bucketsPaths = new String[] { parser.text() }; } else if (GAP_POLICY.match(currentFieldName)) { - gapPolicy = GapPolicy.parse(context, parser.text(), parser.getTokenLocation()); + gapPolicy = GapPolicy.parse(parser.text(), parser.getTokenLocation()); } else if (MODEL.match(currentFieldName)) { model = parser.text(); } else { diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/serialdiff/SerialDiffPipelineAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/serialdiff/SerialDiffPipelineAggregationBuilder.java index 0acd4c7f1b..b09c26cce7 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/serialdiff/SerialDiffPipelineAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/serialdiff/SerialDiffPipelineAggregationBuilder.java @@ -25,7 +25,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.aggregations.pipeline.AbstractPipelineAggregationBuilder; import org.elasticsearch.search.aggregations.pipeline.BucketHelpers.GapPolicy; @@ -149,8 +148,7 @@ public class SerialDiffPipelineAggregationBuilder extends AbstractPipelineAggreg return builder; } - public static SerialDiffPipelineAggregationBuilder parse(String reducerName, QueryParseContext context) throws IOException { - XContentParser parser = context.parser(); + public static SerialDiffPipelineAggregationBuilder parse(String reducerName, XContentParser parser) throws IOException { XContentParser.Token token; String currentFieldName = null; String[] bucketsPaths = null; @@ -167,7 +165,7 @@ public class SerialDiffPipelineAggregationBuilder extends AbstractPipelineAggreg } else if (BUCKETS_PATH.match(currentFieldName)) { bucketsPaths = new String[] { parser.text() }; } else if (GAP_POLICY.match(currentFieldName)) { - gapPolicy = GapPolicy.parse(context, parser.text(), parser.getTokenLocation()); + gapPolicy = GapPolicy.parse(parser.text(), parser.getTokenLocation()); } else { throw new ParsingException(parser.getTokenLocation(), "Unknown key for a " + token + " in [" + reducerName + "]: [" + currentFieldName + "]."); diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java index 907b117e0c..a28d98ff7b 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java @@ -23,7 +23,6 @@ import org.elasticsearch.common.ParseField; import org.elasticsearch.common.ParsingException; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.script.Script; import org.joda.time.DateTimeZone; @@ -33,31 +32,31 @@ public final class ValuesSourceParserHelper { private ValuesSourceParserHelper() {} // utility class, no instantiation public static void declareAnyFields( - ObjectParser, QueryParseContext> objectParser, + ObjectParser, Void> objectParser, boolean scriptable, boolean formattable) { declareFields(objectParser, scriptable, formattable, false, null); } public static void declareNumericFields( - ObjectParser, QueryParseContext> objectParser, + ObjectParser, Void> objectParser, boolean scriptable, boolean formattable, boolean timezoneAware) { declareFields(objectParser, scriptable, formattable, timezoneAware, ValueType.NUMERIC); } public static void declareBytesFields( - ObjectParser, QueryParseContext> objectParser, + ObjectParser, Void> objectParser, boolean scriptable, boolean formattable) { declareFields(objectParser, scriptable, formattable, false, ValueType.STRING); } public static void declareGeoFields( - ObjectParser, QueryParseContext> objectParser, + ObjectParser, Void> objectParser, boolean scriptable, boolean formattable) { declareFields(objectParser, scriptable, formattable, false, ValueType.GEOPOINT); } private static void declareFields( - ObjectParser, QueryParseContext> objectParser, + ObjectParser, Void> objectParser, boolean scriptable, boolean formattable, boolean timezoneAware, ValueType targetValueType) { diff --git a/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java b/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java index 99f74d1f8e..91edc29160 100644 --- a/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java @@ -36,7 +36,6 @@ import org.elasticsearch.common.xcontent.ToXContentObject; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.script.Script; import org.elasticsearch.search.SearchExtBuilder; @@ -109,9 +108,9 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ public static final ParseField SLICE = new ParseField("slice"); public static final ParseField ALL_FIELDS_FIELDS = new ParseField("all_fields"); - public static SearchSourceBuilder fromXContent(QueryParseContext context) throws IOException { + public static SearchSourceBuilder fromXContent(XContentParser parser) throws IOException { SearchSourceBuilder builder = new SearchSourceBuilder(); - builder.parseXContent(context); + builder.parseXContent(parser); return builder; } @@ -959,10 +958,9 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ /** * Parse some xContent into this SearchSourceBuilder, overwriting any values specified in the xContent. Use this if you need to set up * different defaults than a regular SearchSourceBuilder would have and use - * {@link #fromXContent(QueryParseContext)} if you have normal defaults. + * {@link #fromXContent(XContentParser)} if you have normal defaults. */ - public void parseXContent(QueryParseContext context) throws IOException { - XContentParser parser = context.parser(); + public void parseXContent(XContentParser parser) throws IOException { XContentParser.Token token = parser.currentToken(); String currentFieldName = null; if (token != XContentParser.Token.START_OBJECT && (token = parser.nextToken()) != XContentParser.Token.START_OBJECT) { @@ -992,10 +990,10 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ } else if (TRACK_TOTAL_HITS_FIELD.match(currentFieldName)) { trackTotalHits = parser.booleanValue(); } else if (_SOURCE_FIELD.match(currentFieldName)) { - fetchSourceContext = FetchSourceContext.fromXContent(context.parser()); + fetchSourceContext = FetchSourceContext.fromXContent(parser); } else if (STORED_FIELDS_FIELD.match(currentFieldName)) { storedFieldsContext = - StoredFieldsContext.fromXContent(SearchSourceBuilder.STORED_FIELDS_FIELD.getPreferredName(), context); + StoredFieldsContext.fromXContent(SearchSourceBuilder.STORED_FIELDS_FIELD.getPreferredName(), parser); } else if (SORT_FIELD.match(currentFieldName)) { sort(parser.text()); } else if (PROFILE_FIELD.match(currentFieldName)) { @@ -1014,7 +1012,7 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ } else if (POST_FILTER_FIELD.match(currentFieldName)) { postQueryBuilder = parseInnerQueryBuilder(parser); } else if (_SOURCE_FIELD.match(currentFieldName)) { - fetchSourceContext = FetchSourceContext.fromXContent(context.parser()); + fetchSourceContext = FetchSourceContext.fromXContent(parser); } else if (SCRIPT_FIELDS_FIELD.match(currentFieldName)) { scriptFields = new ArrayList<>(); while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { @@ -1035,16 +1033,16 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ } } else if (AGGREGATIONS_FIELD.match(currentFieldName) || AGGS_FIELD.match(currentFieldName)) { - aggregations = AggregatorFactories.parseAggregators(context); + aggregations = AggregatorFactories.parseAggregators(parser); } else if (HIGHLIGHT_FIELD.match(currentFieldName)) { highlightBuilder = HighlightBuilder.fromXContent(parser); } else if (SUGGEST_FIELD.match(currentFieldName)) { - suggestBuilder = SuggestBuilder.fromXContent(context.parser()); + suggestBuilder = SuggestBuilder.fromXContent(parser); } else if (SORT_FIELD.match(currentFieldName)) { sorts = new ArrayList<>(SortBuilder.fromXContent(parser)); } else if (RESCORE_FIELD.match(currentFieldName)) { rescoreBuilders = new ArrayList<>(); - rescoreBuilders.add(RescoreBuilder.parseFromXContent(context)); + rescoreBuilders.add(RescoreBuilder.parseFromXContent(parser)); } else if (EXT_FIELD.match(currentFieldName)) { extBuilders = new ArrayList<>(); String extSectionName = null; @@ -1062,16 +1060,16 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ } } } else if (SLICE.match(currentFieldName)) { - sliceBuilder = SliceBuilder.fromXContent(context); + sliceBuilder = SliceBuilder.fromXContent(parser); } else if (COLLAPSE.match(currentFieldName)) { - collapse = CollapseBuilder.fromXContent(context); + collapse = CollapseBuilder.fromXContent(parser); } else { throw new ParsingException(parser.getTokenLocation(), "Unknown key for a " + token + " in [" + currentFieldName + "].", parser.getTokenLocation()); } } else if (token == XContentParser.Token.START_ARRAY) { if (STORED_FIELDS_FIELD.match(currentFieldName)) { - storedFieldsContext = StoredFieldsContext.fromXContent(STORED_FIELDS_FIELD.getPreferredName(), context); + storedFieldsContext = StoredFieldsContext.fromXContent(STORED_FIELDS_FIELD.getPreferredName(), parser); } else if (DOCVALUE_FIELDS_FIELD.match(currentFieldName)) { docValueFields = new ArrayList<>(); while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) { @@ -1084,14 +1082,14 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ } } else if (INDICES_BOOST_FIELD.match(currentFieldName)) { while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) { - indexBoosts.add(new IndexBoost(context)); + indexBoosts.add(new IndexBoost(parser)); } } else if (SORT_FIELD.match(currentFieldName)) { sorts = new ArrayList<>(SortBuilder.fromXContent(parser)); } else if (RESCORE_FIELD.match(currentFieldName)) { rescoreBuilders = new ArrayList<>(); while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) { - rescoreBuilders.add(RescoreBuilder.parseFromXContent(context)); + rescoreBuilders.add(RescoreBuilder.parseFromXContent(parser)); } } else if (STATS_FIELD.match(currentFieldName)) { stats = new ArrayList<>(); @@ -1104,7 +1102,7 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ } } } else if (_SOURCE_FIELD.match(currentFieldName)) { - fetchSourceContext = FetchSourceContext.fromXContent(context.parser()); + fetchSourceContext = FetchSourceContext.fromXContent(parser); } else if (SEARCH_AFTER.match(currentFieldName)) { searchAfterBuilder = SearchAfterBuilder.fromXContent(parser); } else if (FIELDS_FIELD.match(currentFieldName)) { @@ -1276,8 +1274,7 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ boost = in.readFloat(); } - IndexBoost(QueryParseContext context) throws IOException { - XContentParser parser = context.parser(); + IndexBoost(XContentParser parser) throws IOException { XContentParser.Token token = parser.currentToken(); if (token == XContentParser.Token.START_OBJECT) { diff --git a/core/src/main/java/org/elasticsearch/search/collapse/CollapseBuilder.java b/core/src/main/java/org/elasticsearch/search/collapse/CollapseBuilder.java index 91dd71d8a2..696e7f2c4e 100644 --- a/core/src/main/java/org/elasticsearch/search/collapse/CollapseBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/collapse/CollapseBuilder.java @@ -35,7 +35,6 @@ import org.elasticsearch.index.mapper.KeywordFieldMapper; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.NumberFieldMapper; import org.elasticsearch.index.query.InnerHitBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.SearchContextException; import org.elasticsearch.search.internal.SearchContext; @@ -52,7 +51,7 @@ public class CollapseBuilder implements Writeable, ToXContentObject { public static final ParseField FIELD_FIELD = new ParseField("field"); public static final ParseField INNER_HITS_FIELD = new ParseField("inner_hits"); public static final ParseField MAX_CONCURRENT_GROUP_REQUESTS_FIELD = new ParseField("max_concurrent_group_searches"); - private static final ObjectParser PARSER = + private static final ObjectParser PARSER = new ObjectParser<>("collapse", CollapseBuilder::new); static { @@ -122,8 +121,8 @@ public class CollapseBuilder implements Writeable, ToXContentObject { } } - public static CollapseBuilder fromXContent(QueryParseContext context) throws IOException { - CollapseBuilder builder = PARSER.parse(context.parser(), new CollapseBuilder(), context); + public static CollapseBuilder fromXContent(XContentParser parser) throws IOException { + CollapseBuilder builder = PARSER.parse(parser, new CollapseBuilder(), null); return builder; } diff --git a/core/src/main/java/org/elasticsearch/search/fetch/StoredFieldsContext.java b/core/src/main/java/org/elasticsearch/search/fetch/StoredFieldsContext.java index 5d6c587e23..8cb175ae15 100644 --- a/core/src/main/java/org/elasticsearch/search/fetch/StoredFieldsContext.java +++ b/core/src/main/java/org/elasticsearch/search/fetch/StoredFieldsContext.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.rest.RestRequest; import java.io.IOException; @@ -164,8 +163,7 @@ public class StoredFieldsContext implements Writeable { return new StoredFieldsContext(fieldNames); } - public static StoredFieldsContext fromXContent(String fieldName, QueryParseContext context) throws IOException { - XContentParser parser = context.parser(); + public static StoredFieldsContext fromXContent(String fieldName, XContentParser parser) throws IOException { XContentParser.Token token = parser.currentToken(); if (token == XContentParser.Token.VALUE_STRING) { diff --git a/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/AbstractHighlighterBuilder.java b/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/AbstractHighlighterBuilder.java index 43e8bf1eb8..ece1f1df0c 100644 --- a/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/AbstractHighlighterBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/AbstractHighlighterBuilder.java @@ -32,7 +32,6 @@ import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.BoundaryScannerType; import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Order; @@ -595,7 +594,7 @@ public abstract class AbstractHighlighterBuilder> BiFunction setupParser( - ObjectParser parser) { + ObjectParser parser) { parser.declareStringArray(fromList(String.class, HB::preTags), PRE_TAGS_FIELD); parser.declareStringArray(fromList(String.class, HB::postTags), POST_TAGS_FIELD); parser.declareString(HB::order, ORDER_FIELD); @@ -612,14 +611,14 @@ public abstract class AbstractHighlighterBuilder { + parser.declareObject(HB::options, (XContentParser p, Void c) -> { try { return p.map(); } catch (IOException e) { throw new RuntimeException("Error parsing options", e); } }, OPTIONS_FIELD); - parser.declareObject(HB::highlightQuery, (XContentParser p, QueryParseContext c) -> { + parser.declareObject(HB::highlightQuery, (XContentParser p, Void c) -> { try { return parseInnerQueryBuilder(p); } catch (IOException e) { diff --git a/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilder.java b/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilder.java index 55310dafb0..ff45b9889f 100644 --- a/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilder.java @@ -30,7 +30,6 @@ import org.elasticsearch.common.xcontent.ObjectParser.NamedObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.search.fetch.subphase.highlight.SearchContextHighlight.FieldOptions; @@ -258,7 +257,7 @@ public class HighlightBuilder extends AbstractHighlighterBuilder PARSER; static { - ObjectParser parser = new ObjectParser<>("highlight"); + ObjectParser parser = new ObjectParser<>("highlight"); parser.declareString(HighlightBuilder::tagsSchema, new ParseField("tags_schema")); parser.declareString(HighlightBuilder::encoder, ENCODER_FIELD); parser.declareNamedObjects(HighlightBuilder::fields, Field.PARSER, (HighlightBuilder hb) -> hb.useExplicitFieldOrder(true), @@ -417,13 +416,13 @@ public class HighlightBuilder extends AbstractHighlighterBuilder { - static final NamedObjectParser PARSER; + static final NamedObjectParser PARSER; static { - ObjectParser parser = new ObjectParser<>("highlight_field"); + ObjectParser parser = new ObjectParser<>("highlight_field"); parser.declareInt(Field::fragmentOffset, FRAGMENT_OFFSET_FIELD); parser.declareStringArray(fromList(String.class, Field::matchedFields), MATCHED_FIELDS_FIELD); BiFunction decoratedParser = setupParser(parser); - PARSER = (XContentParser p, QueryParseContext c, String name) -> decoratedParser.apply(p, new Field(name)); + PARSER = (XContentParser p, Void c, String name) -> decoratedParser.apply(p, new Field(name)); } private final String name; diff --git a/core/src/main/java/org/elasticsearch/search/rescore/QueryRescorerBuilder.java b/core/src/main/java/org/elasticsearch/search/rescore/QueryRescorerBuilder.java index 3112b0db0a..8a02841f34 100644 --- a/core/src/main/java/org/elasticsearch/search/rescore/QueryRescorerBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/rescore/QueryRescorerBuilder.java @@ -25,8 +25,8 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.search.rescore.QueryRescorer.QueryRescoreContext; @@ -53,7 +53,7 @@ public class QueryRescorerBuilder extends RescoreBuilder { private static ParseField RESCORE_QUERY_WEIGHT_FIELD = new ParseField("rescore_query_weight"); private static ParseField SCORE_MODE_FIELD = new ParseField("score_mode"); - private static final ObjectParser QUERY_RESCORE_PARSER = new ObjectParser<>(NAME, null); + private static final ObjectParser QUERY_RESCORE_PARSER = new ObjectParser<>(NAME, null); static { QUERY_RESCORE_PARSER.declareObject(InnerBuilder::setQueryBuilder, (p, c) -> { @@ -161,8 +161,8 @@ public class QueryRescorerBuilder extends RescoreBuilder { builder.endObject(); } - public static QueryRescorerBuilder fromXContent(QueryParseContext parseContext) throws IOException { - InnerBuilder innerBuilder = QUERY_RESCORE_PARSER.parse(parseContext.parser(), new InnerBuilder(), parseContext); + public static QueryRescorerBuilder fromXContent(XContentParser parser) throws IOException { + InnerBuilder innerBuilder = QUERY_RESCORE_PARSER.parse(parser, new InnerBuilder(), null); return innerBuilder.build(); } diff --git a/core/src/main/java/org/elasticsearch/search/rescore/RescoreBuilder.java b/core/src/main/java/org/elasticsearch/search/rescore/RescoreBuilder.java index ac136a7601..d9ce4f805e 100644 --- a/core/src/main/java/org/elasticsearch/search/rescore/RescoreBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/rescore/RescoreBuilder.java @@ -28,7 +28,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.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.search.rescore.QueryRescorer.QueryRescoreContext; @@ -75,8 +74,7 @@ public abstract class RescoreBuilder> extends ToXC return windowSize; } - public static RescoreBuilder parseFromXContent(QueryParseContext parseContext) throws IOException { - XContentParser parser = parseContext.parser(); + public static RescoreBuilder parseFromXContent(XContentParser parser) throws IOException { String fieldName = null; RescoreBuilder rescorer = null; Integer windowSize = null; @@ -93,7 +91,7 @@ public abstract class RescoreBuilder> extends ToXC } else if (token == XContentParser.Token.START_OBJECT) { // we only have QueryRescorer at this point if (QueryRescorerBuilder.NAME.equals(fieldName)) { - rescorer = QueryRescorerBuilder.fromXContent(parseContext); + rescorer = QueryRescorerBuilder.fromXContent(parser); } else { throw new ParsingException(parser.getTokenLocation(), "rescore doesn't support rescorer with name [" + fieldName + "]"); } diff --git a/core/src/main/java/org/elasticsearch/search/slice/SliceBuilder.java b/core/src/main/java/org/elasticsearch/search/slice/SliceBuilder.java index 522ecb44d0..b09252889c 100644 --- a/core/src/main/java/org/elasticsearch/search/slice/SliceBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/slice/SliceBuilder.java @@ -30,13 +30,12 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.IndexNumericFieldData; import org.elasticsearch.index.mapper.IdFieldMapper; import org.elasticsearch.index.mapper.MappedFieldType; -import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.mapper.UidFieldMapper; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import java.io.IOException; @@ -57,7 +56,7 @@ public class SliceBuilder extends ToXContentToBytes implements Writeable { public static final ParseField FIELD_FIELD = new ParseField("field"); public static final ParseField ID_FIELD = new ParseField("id"); public static final ParseField MAX_FIELD = new ParseField("max"); - private static final ObjectParser PARSER = + private static final ObjectParser PARSER = new ObjectParser<>("slice", SliceBuilder::new); static { @@ -169,8 +168,8 @@ public class SliceBuilder extends ToXContentToBytes implements Writeable { builder.field(MAX_FIELD.getPreferredName(), max); } - public static SliceBuilder fromXContent(QueryParseContext context) throws IOException { - SliceBuilder builder = PARSER.parse(context.parser(), new SliceBuilder(), context); + public static SliceBuilder fromXContent(XContentParser parser) throws IOException { + SliceBuilder builder = PARSER.parse(parser, new SliceBuilder(), null); return builder; } diff --git a/core/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java b/core/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java index 1ba34d65b2..566a461586 100644 --- a/core/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java @@ -32,7 +32,6 @@ import org.elasticsearch.index.fielddata.IndexFieldData.XFieldComparatorSource.N import org.elasticsearch.index.fielddata.IndexNumericFieldData; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.index.query.QueryShardException; import org.elasticsearch.search.DocValueFormat; @@ -313,7 +312,7 @@ public class FieldSortBuilder extends SortBuilder { } /** - * Creates a new {@link FieldSortBuilder} from the query held by the {@link QueryParseContext} in + * Creates a new {@link FieldSortBuilder} from the query held by the {@link XContentParser} in * {@link org.elasticsearch.common.xcontent.XContent} format. * * @param parser the input parser. The state on the parser contained in this context will be changed as a side effect of this @@ -325,7 +324,7 @@ public class FieldSortBuilder extends SortBuilder { return PARSER.parse(parser, new FieldSortBuilder(fieldName), null); } - private static ObjectParser PARSER = new ObjectParser<>(NAME); + private static ObjectParser PARSER = new ObjectParser<>(NAME); static { PARSER.declareField(FieldSortBuilder::missing, p -> p.objectText(), MISSING, ValueType.VALUE); diff --git a/core/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java b/core/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java index cb6425e8b0..adde80fcd9 100644 --- a/core/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java @@ -48,7 +48,6 @@ import org.elasticsearch.index.fielddata.plain.AbstractLatLonPointDVIndexFieldDa import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.query.GeoValidationMethod; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.MultiValueMode; @@ -384,7 +383,7 @@ public class GeoDistanceSortBuilder extends SortBuilder } /** - * Creates a new {@link GeoDistanceSortBuilder} from the query held by the {@link QueryParseContext} in + * Creates a new {@link GeoDistanceSortBuilder} from the query held by the {@link XContentParser} in * {@link org.elasticsearch.common.xcontent.XContent} format. * * @param parser the input parser. The state on the parser contained in this context will be changed as a diff --git a/core/src/main/java/org/elasticsearch/search/sort/ScoreSortBuilder.java b/core/src/main/java/org/elasticsearch/search/sort/ScoreSortBuilder.java index fb727da0a2..c2917ec934 100644 --- a/core/src/main/java/org/elasticsearch/search/sort/ScoreSortBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/sort/ScoreSortBuilder.java @@ -25,7 +25,6 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.search.DocValueFormat; @@ -74,7 +73,7 @@ public class ScoreSortBuilder extends SortBuilder { } /** - * Creates a new {@link ScoreSortBuilder} from the query held by the {@link QueryParseContext} in + * Creates a new {@link ScoreSortBuilder} from the query held by the {@link XContentParser} in * {@link org.elasticsearch.common.xcontent.XContent} format. * * @param parser the input parser. The state on the parser contained in this context will be changed as a side effect of this @@ -82,11 +81,11 @@ public class ScoreSortBuilder extends SortBuilder { * @param fieldName in some sort syntax variations the field name precedes the xContent object that specifies further parameters, e.g. * in '{ "foo": { "order" : "asc"} }'. When parsing the inner object, the field name can be passed in via this argument */ - public static ScoreSortBuilder fromXContent(XContentParser parser, String fieldName) throws IOException { + public static ScoreSortBuilder fromXContent(XContentParser parser, String fieldName) { return PARSER.apply(parser, null); } - private static ObjectParser PARSER = new ObjectParser<>(NAME, ScoreSortBuilder::new); + private static ObjectParser PARSER = new ObjectParser<>(NAME, ScoreSortBuilder::new); static { PARSER.declareString((builder, order) -> builder.order(SortOrder.fromString(order)), ORDER_FIELD); diff --git a/core/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java b/core/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java index 8e743dbbca..1e9f1b036d 100644 --- a/core/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java @@ -43,7 +43,6 @@ import org.elasticsearch.index.fielddata.SortedNumericDoubleValues; import org.elasticsearch.index.fielddata.fieldcomparator.BytesRefFieldComparatorSource; import org.elasticsearch.index.fielddata.fieldcomparator.DoubleValuesComparatorSource; import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.index.query.QueryShardException; import org.elasticsearch.script.Script; @@ -212,7 +211,7 @@ public class ScriptSortBuilder extends SortBuilder { return builder; } - private static ConstructingObjectParser PARSER = new ConstructingObjectParser<>(NAME, + private static ConstructingObjectParser PARSER = new ConstructingObjectParser<>(NAME, a -> new ScriptSortBuilder((Script) a[0], (ScriptSortType) a[1])); static { @@ -226,7 +225,7 @@ public class ScriptSortBuilder extends SortBuilder { } /** - * Creates a new {@link ScriptSortBuilder} from the query held by the {@link QueryParseContext} in + * Creates a new {@link ScriptSortBuilder} from the query held by the {@link XContentParser} in * {@link org.elasticsearch.common.xcontent.XContent} format. * * @param parser the input parser. The state on the parser contained in this context will be changed as a side effect of this @@ -234,7 +233,7 @@ public class ScriptSortBuilder extends SortBuilder { * @param elementName in some sort syntax variations the field name precedes the xContent object that specifies further parameters, e.g. * in '{ "foo": { "order" : "asc"} }'. When parsing the inner object, the field name can be passed in via this argument */ - public static ScriptSortBuilder fromXContent(XContentParser parser, String elementName) throws IOException { + public static ScriptSortBuilder fromXContent(XContentParser parser, String elementName) { return PARSER.apply(parser, null); } diff --git a/core/src/main/java/org/elasticsearch/search/suggest/completion/CompletionSuggestionBuilder.java b/core/src/main/java/org/elasticsearch/search/suggest/completion/CompletionSuggestionBuilder.java index 91dfd51099..b951a30619 100644 --- a/core/src/main/java/org/elasticsearch/search/suggest/completion/CompletionSuggestionBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/suggest/completion/CompletionSuggestionBuilder.java @@ -276,7 +276,7 @@ public class CompletionSuggestionBuilder extends SuggestionBuilder } @Override - protected CategoryQueryContext fromXContent(QueryParseContext context) throws IOException { - return CategoryQueryContext.fromXContent(context); + protected CategoryQueryContext fromXContent(XContentParser parser) throws IOException { + return CategoryQueryContext.fromXContent(parser); } /** diff --git a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryQueryContext.java b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryQueryContext.java index 51b740a352..10cf2009a4 100644 --- a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryQueryContext.java +++ b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryQueryContext.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import java.io.IOException; import java.util.Objects; @@ -105,8 +104,7 @@ public final class CategoryQueryContext implements ToXContent { CATEGORY_PARSER.declareBoolean(Builder::setPrefix, new ParseField(CONTEXT_PREFIX)); } - public static CategoryQueryContext fromXContent(QueryParseContext context) throws IOException { - XContentParser parser = context.parser(); + public static CategoryQueryContext fromXContent(XContentParser parser) throws IOException { XContentParser.Token token = parser.currentToken(); Builder builder = builder(); if (token == XContentParser.Token.START_OBJECT) { @@ -114,7 +112,7 @@ public final class CategoryQueryContext implements ToXContent { CATEGORY_PARSER.parse(parser, builder, null); } catch(ParsingException e) { throw new ElasticsearchParseException("category context must be a string, number or boolean"); - } + } } else if (token == XContentParser.Token.VALUE_STRING || token == XContentParser.Token.VALUE_BOOLEAN || token == XContentParser.Token.VALUE_NUMBER) { builder.setCategory(parser.text()); diff --git a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMapping.java b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMapping.java index 273138bbb7..697394f3ef 100644 --- a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMapping.java +++ b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMapping.java @@ -27,7 +27,6 @@ import org.elasticsearch.common.xcontent.XContentParser.Token; import org.elasticsearch.common.xcontent.json.JsonXContent; import org.elasticsearch.index.mapper.CompletionFieldMapper; import org.elasticsearch.index.mapper.ParseContext; -import org.elasticsearch.index.query.QueryParseContext; import java.io.IOException; import java.util.ArrayList; @@ -100,23 +99,22 @@ public abstract class ContextMapping implements ToXContent /** * Prototype for the query context */ - protected abstract T fromXContent(QueryParseContext context) throws IOException; + protected abstract T fromXContent(XContentParser context) throws IOException; /** * Parses query contexts for this mapper */ - public final List parseQueryContext(QueryParseContext context) throws IOException, ElasticsearchParseException { + public final List parseQueryContext(XContentParser parser) throws IOException, ElasticsearchParseException { List queryContexts = new ArrayList<>(); - XContentParser parser = context.parser(); Token token = parser.nextToken(); if (token == Token.START_ARRAY) { while (parser.nextToken() != Token.END_ARRAY) { - queryContexts.add(fromXContent(context)); + queryContexts.add(fromXContent(parser)); } } else { - queryContexts.add(fromXContent(context)); + queryContexts.add(fromXContent(parser)); } - + return toInternalQueryContexts(queryContexts); } diff --git a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoContextMapping.java b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoContextMapping.java index a689d21e70..b464d6069e 100644 --- a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoContextMapping.java +++ b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoContextMapping.java @@ -29,11 +29,10 @@ import org.elasticsearch.common.unit.DistanceUnit; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentParser.Token; -import org.elasticsearch.index.mapper.GeoPointFieldMapper; import org.elasticsearch.index.mapper.FieldMapper; +import org.elasticsearch.index.mapper.GeoPointFieldMapper; import org.elasticsearch.index.mapper.ParseContext; import org.elasticsearch.index.mapper.ParseContext.Document; -import org.elasticsearch.index.query.QueryParseContext; import java.io.IOException; import java.util.ArrayList; @@ -225,8 +224,8 @@ public class GeoContextMapping extends ContextMapping { } @Override - protected GeoQueryContext fromXContent(QueryParseContext context) throws IOException { - return GeoQueryContext.fromXContent(context); + protected GeoQueryContext fromXContent(XContentParser parser) throws IOException { + return GeoQueryContext.fromXContent(parser); } /** diff --git a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoQueryContext.java b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoQueryContext.java index e2f00c0001..304bc854d2 100644 --- a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoQueryContext.java +++ b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoQueryContext.java @@ -27,7 +27,6 @@ import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import java.io.IOException; import java.util.Collections; @@ -124,8 +123,7 @@ public final class GeoQueryContext implements ToXContent { GEO_CONTEXT_PARSER.declareDouble(GeoQueryContext.Builder::setLon, new ParseField("lon")); } - public static GeoQueryContext fromXContent(QueryParseContext context) throws IOException { - XContentParser parser = context.parser(); + public static GeoQueryContext fromXContent(XContentParser parser) throws IOException { XContentParser.Token token = parser.currentToken(); GeoQueryContext.Builder builder = new Builder(); if (token == XContentParser.Token.START_OBJECT) { diff --git a/core/src/test/java/org/elasticsearch/index/query/AbstractQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/AbstractQueryBuilderTests.java new file mode 100644 index 0000000000..68f964e2c8 --- /dev/null +++ b/core/src/test/java/org/elasticsearch/index/query/AbstractQueryBuilderTests.java @@ -0,0 +1,93 @@ +/* + * 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.index.query; + +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.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; +import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder; + +public class AbstractQueryBuilderTests 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 testParseInnerQueryBuilder() throws IOException { + QueryBuilder query = new MatchQueryBuilder("foo", "bar"); + String source = query.toString(); + try (XContentParser parser = createParser(JsonXContent.jsonXContent, source)) { + QueryBuilder actual = parseInnerQueryBuilder(parser); + assertEquals(query, actual); + } + } + + public void testParseInnerQueryBuilderExceptions() throws IOException { + String source = "{ \"foo\": \"bar\" }"; + try (XContentParser parser = createParser(JsonXContent.jsonXContent, source)) { + parser.nextToken(); + parser.nextToken(); // don't start with START_OBJECT to provoke exception + 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)) { + 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)) { + 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)) { + ParsingException exception = expectThrows(ParsingException.class, () -> parseInnerQueryBuilder(parser)); + assertEquals("no [query] registered for [foo]", exception.getMessage()); + } + } + + @Override + protected NamedXContentRegistry xContentRegistry() { + return xContentRegistry; + } + +} diff --git a/core/src/test/java/org/elasticsearch/index/query/QueryParseContextTests.java b/core/src/test/java/org/elasticsearch/index/query/QueryParseContextTests.java deleted file mode 100644 index 5bd6a8a582..0000000000 --- a/core/src/test/java/org/elasticsearch/index/query/QueryParseContextTests.java +++ /dev/null @@ -1,110 +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.index.query; - -import org.elasticsearch.common.ParsingException; -import org.elasticsearch.common.logging.DeprecationLogger; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.util.concurrent.ThreadContext; -import org.elasticsearch.common.xcontent.NamedXContentRegistry; -import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.common.xcontent.json.JsonXContent; -import org.elasticsearch.search.SearchModule; -import org.elasticsearch.test.ESTestCase; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -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; - - @BeforeClass - public static void init() { - xContentRegistry = new NamedXContentRegistry(new SearchModule(Settings.EMPTY, false, emptyList()).getNamedXContents()); - } - - @AfterClass - public static void cleanup() { - xContentRegistry = null; - } - - private ThreadContext threadContext; - - @Before - public void beforeTest() throws IOException { - this.threadContext = new ThreadContext(Settings.EMPTY); - DeprecationLogger.setThreadContext(threadContext); - } - - @After - public void teardown() throws IOException { - DeprecationLogger.removeThreadContext(this.threadContext); - this.threadContext.close(); - } - - public void testParseInnerQueryBuilder() throws IOException { - QueryBuilder query = new MatchQueryBuilder("foo", "bar"); - String source = query.toString(); - try (XContentParser parser = createParser(JsonXContent.jsonXContent, source)) { - QueryBuilder actual = parseInnerQueryBuilder(parser); - assertEquals(query, actual); - } - } - - public void testParseInnerQueryBuilderExceptions() throws IOException { - String source = "{ \"foo\": \"bar\" }"; - try (XContentParser parser = createParser(JsonXContent.jsonXContent, source)) { - parser.nextToken(); - parser.nextToken(); // don't start with START_OBJECT to provoke exception - 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)) { - 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, () -> parseInnerQueryBuilder(parser)); - assertEquals("[foo] query malformed, no start_object after query name", exception.getMessage()); - } - - source = "{ \"foo\" : {} }"; - try (XContentParser parser = createParser(JsonXContent.jsonXContent, source)) { - ParsingException exception = expectThrows(ParsingException.class, () -> parseInnerQueryBuilder(parser)); - assertEquals("no [query] registered for [foo]", exception.getMessage()); - } - } - - @Override - protected NamedXContentRegistry xContentRegistry() { - return xContentRegistry; - } -} diff --git a/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java index 4902aa8fa6..2f898481ed 100644 --- a/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java @@ -224,7 +224,7 @@ public class RangeQueryBuilderTests extends AbstractQueryTestCase query.toQuery(createShardContext())); @@ -234,7 +234,7 @@ public class RangeQueryBuilderTests extends AbstractQueryTestCase query.toQuery(createShardContext())); @@ -410,7 +410,7 @@ public class RangeQueryBuilderTests extends AbstractQueryTestCase new SearchModule(Settings.EMPTY, false, singletonList(registersDupeHighlighter))); SearchPlugin registersDupeSuggester = new SearchPlugin() { + @Override public List> getSuggesters() { return singletonList(new SuggesterSpec<>("term", TermSuggestionBuilder::new, TermSuggestionBuilder::fromXContent)); } @@ -136,6 +137,7 @@ public class SearchModuleTests extends ModuleTestCase { singletonList(registersDupeFetchSubPhase))); SearchPlugin registersDupeQuery = new SearchPlugin() { + @Override public List> getQueries() { return singletonList(new QuerySpec<>(TermQueryBuilder.NAME, TermQueryBuilder::new, TermQueryBuilder::fromXContent)); } @@ -144,6 +146,7 @@ public class SearchModuleTests extends ModuleTestCase { new SearchModule(Settings.EMPTY, false, singletonList(registersDupeQuery)).getNamedXContents())); SearchPlugin registersDupeAggregation = new SearchPlugin() { + @Override public List getAggregations() { return singletonList(new AggregationSpec(TermsAggregationBuilder.NAME, TermsAggregationBuilder::new, TermsAggregationBuilder::parse)); @@ -153,6 +156,7 @@ public class SearchModuleTests extends ModuleTestCase { singletonList(registersDupeAggregation)).getNamedXContents())); SearchPlugin registersDupePipelineAggregation = new SearchPlugin() { + @Override public List getPipelineAggregations() { return singletonList(new PipelineAggregationSpec( DerivativePipelineAggregationBuilder.NAME, @@ -229,6 +233,7 @@ public class SearchModuleTests extends ModuleTestCase { public void testRegisterAggregation() { SearchModule module = new SearchModule(Settings.EMPTY, false, singletonList(new SearchPlugin() { + @Override public List getAggregations() { return singletonList(new AggregationSpec("test", TestAggregationBuilder::new, TestAggregationBuilder::fromXContent)); } @@ -243,6 +248,7 @@ public class SearchModuleTests extends ModuleTestCase { public void testRegisterPipelineAggregation() { SearchModule module = new SearchModule(Settings.EMPTY, false, singletonList(new SearchPlugin() { + @Override public List getPipelineAggregations() { return singletonList(new PipelineAggregationSpec("test", TestPipelineAggregationBuilder::new, TestPipelineAggregator::new, TestPipelineAggregationBuilder::fromXContent)); @@ -344,7 +350,7 @@ public class SearchModuleTests extends ModuleTestCase { return false; } - private static TestAggregationBuilder fromXContent(String name, QueryParseContext c) { + private static TestAggregationBuilder fromXContent(String name, XContentParser p) { return null; } } @@ -389,7 +395,7 @@ public class SearchModuleTests extends ModuleTestCase { return false; } - private static TestPipelineAggregationBuilder fromXContent(String name, QueryParseContext c) { + private static TestPipelineAggregationBuilder fromXContent(String name, XContentParser p) { return null; } } diff --git a/core/src/test/java/org/elasticsearch/search/SearchServiceTests.java b/core/src/test/java/org/elasticsearch/search/SearchServiceTests.java index 31edc3ac80..864a1806b6 100644 --- a/core/src/test/java/org/elasticsearch/search/SearchServiceTests.java +++ b/core/src/test/java/org/elasticsearch/search/SearchServiceTests.java @@ -19,6 +19,7 @@ package org.elasticsearch.search; import com.carrotsearch.hppc.IntArrayList; + import org.apache.lucene.search.Query; import org.apache.lucene.store.AlreadyClosedException; import org.elasticsearch.action.ActionListener; @@ -272,7 +273,7 @@ public class SearchServiceTests extends ESSingleNodeTestCase { } @Override - protected QueryBuilder doRewrite(QueryRewriteContext queryShardContext) throws IOException { + protected QueryBuilder doRewrite(QueryRewriteContext queryShardContext) { throw new IllegalStateException("Fail on rewrite phase"); } 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 4ddab52110..9b5d64b46b 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/AggregationCollectorTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/AggregationCollectorTests.java @@ -22,7 +22,6 @@ package org.elasticsearch.search.aggregations; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.json.JsonXContent; import org.elasticsearch.index.IndexService; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.internal.SearchContext; import org.elasticsearch.test.ESSingleNodeTestCase; @@ -58,10 +57,9 @@ public class AggregationCollectorTests extends ESSingleNodeTestCase { private boolean needsScores(IndexService index, String agg) throws IOException { XContentParser aggParser = createParser(JsonXContent.jsonXContent, agg); - QueryParseContext parseContext = new QueryParseContext(aggParser); aggParser.nextToken(); SearchContext context = createSearchContext(index); - final AggregatorFactories factories = AggregatorFactories.parseAggregators(parseContext).build(context, null); + final AggregatorFactories factories = AggregatorFactories.parseAggregators(aggParser).build(context, null); final Aggregator[] aggregators = factories.createTopLevelAggregators(); assertEquals(1, aggregators.length); return aggregators[0].needsScores(); diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorFactoriesTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorFactoriesTests.java index a3ffd4108f..4d5af51ec1 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorFactoriesTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorFactoriesTests.java @@ -26,8 +26,6 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.json.JsonXContent; import org.elasticsearch.env.Environment; -import org.elasticsearch.index.query.QueryParseContext; -import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.SearchModule; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorBuilders; import org.elasticsearch.test.AbstractQueryTestCase; @@ -96,9 +94,8 @@ public class AggregatorFactoriesTests extends ESTestCase { .endObject() .endObject(); XContentParser parser = createParser(source); - QueryParseContext parseContext = new QueryParseContext(parser); assertSame(XContentParser.Token.START_OBJECT, parser.nextToken()); - Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parseContext)); + Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parser)); assertThat(e.toString(), containsString("Found two aggregation type definitions in [in_stock]: [filter] and [terms]")); } @@ -129,9 +126,8 @@ public class AggregatorFactoriesTests extends ESTestCase { .endObject() .endObject(); XContentParser parser = createParser(source); - QueryParseContext parseContext = new QueryParseContext(parser); assertSame(XContentParser.Token.START_OBJECT, parser.nextToken()); - Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parseContext)); + Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parser)); assertThat(e.toString(), containsString("Found two sub aggregation definitions under [by_date]")); } @@ -164,9 +160,8 @@ public class AggregatorFactoriesTests extends ESTestCase { .endObject() .endObject(); XContentParser parser = createParser(source); - QueryParseContext parseContext = new QueryParseContext(parser); assertSame(XContentParser.Token.START_OBJECT, parser.nextToken()); - Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parseContext)); + Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parser)); assertThat(e.toString(), containsString("Invalid aggregation name [" + name + "]")); } @@ -188,9 +183,8 @@ public class AggregatorFactoriesTests extends ESTestCase { .endObject() .endObject(); XContentParser parser = createParser(source); - QueryParseContext parseContext = new QueryParseContext(parser); assertSame(XContentParser.Token.START_OBJECT, parser.nextToken()); - Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parseContext)); + Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parser)); assertThat(e.toString(), containsString("Two sibling aggregations cannot have the same name: [" + name + "]")); } @@ -213,9 +207,8 @@ public class AggregatorFactoriesTests extends ESTestCase { .endObject() .endObject(); XContentParser parser = createParser(source); - QueryParseContext parseContext = new QueryParseContext(parser); assertSame(XContentParser.Token.START_OBJECT, parser.nextToken()); - Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parseContext)); + Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parser)); assertThat(e.toString(), containsString("Expected [START_OBJECT] under [field], but got a [VALUE_STRING] in [cardinality]")); } @@ -238,9 +231,8 @@ public class AggregatorFactoriesTests extends ESTestCase { .endObject() .endObject(); XContentParser parser = createParser(source); - QueryParseContext parseContext = new QueryParseContext(parser); assertSame(XContentParser.Token.START_OBJECT, parser.nextToken()); - Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parseContext)); + Exception e = expectThrows(ParsingException.class, () -> AggregatorFactories.parseAggregators(parser)); assertThat(e.toString(), containsString("Expected [START_OBJECT] under [field], but got a [VALUE_STRING] in [tag_count]")); } 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 0a738ec022..828b419909 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/BasePipelineAggregationTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/BasePipelineAggregationTestCase.java @@ -32,7 +32,6 @@ import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.env.Environment; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.indices.IndicesModule; import org.elasticsearch.search.SearchModule; import org.elasticsearch.search.aggregations.pipeline.AbstractPipelineAggregationBuilder; @@ -117,9 +116,8 @@ public abstract class BasePipelineAggregationTestCase protected BucketOrder doParseInstance(XContentParser parser) throws IOException { Token token = parser.nextToken(); if (token == Token.START_OBJECT) { - return InternalOrder.Parser.parseOrderParam(parser, null); + return InternalOrder.Parser.parseOrderParam(parser); } if (token == Token.START_ARRAY) { List orders = new ArrayList<>(); while (parser.nextToken() == Token.START_OBJECT) { - orders.add(InternalOrder.Parser.parseOrderParam(parser, null)); + orders.add(InternalOrder.Parser.parseOrderParam(parser)); } return BucketOrder.compound(orders); } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/SignificantTermsSignificanceScoreIT.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/SignificantTermsSignificanceScoreIT.java index b72c3befa4..c31dca0de5 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/SignificantTermsSignificanceScoreIT.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/SignificantTermsSignificanceScoreIT.java @@ -27,9 +27,9 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardException; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.plugins.SearchPlugin; @@ -116,7 +116,7 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { .significanceHeuristic(new SimpleHeuristic()) .minDocCount(1) ) - ); + ); }else { request = client().prepareSearch(INDEX_NAME).setTypes(DOC_TYPE) @@ -128,9 +128,9 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { .significanceHeuristic(new SimpleHeuristic()) .minDocCount(1) ) - ); + ); } - + SearchResponse response = request.execute().actionGet(); assertSearchResponse(response); StringTerms classes = response.getAggregations().get("class"); @@ -177,7 +177,7 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { @Override public List> getSignificanceHeuristics() { return singletonList(new SearchExtensionSpec(SimpleHeuristic.NAME, - SimpleHeuristic::new, (context) -> SimpleHeuristic.parse(context))); + SimpleHeuristic::new, (parser) -> SimpleHeuristic.parse(parser))); } @Override @@ -257,9 +257,9 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { return subsetFreq / subsetSize > supersetFreq / supersetSize ? 2.0 : 1.0; } - public static SignificanceHeuristic parse(QueryParseContext context) + public static SignificanceHeuristic parse(XContentParser parser) throws IOException, QueryShardException { - context.parser().nextToken(); + parser.nextToken(); return new SimpleHeuristic(); } } @@ -268,23 +268,23 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { String type = randomBoolean() ? "text" : "long"; String settings = "{\"index.number_of_shards\": 1, \"index.number_of_replicas\": 0}"; SharedSignificantTermsTestMethods.index01Docs(type, settings, this); - + SearchRequestBuilder request; if ("text".equals(type) && randomBoolean() ) { // Use significant_text on text fields but occasionally run with alternative of // significant_terms on legacy fieldData=true too. request = client().prepareSearch(INDEX_NAME).setTypes(DOC_TYPE) .addAggregation(terms("class").field(CLASS_FIELD) - .subAggregation(significantText("sig_terms", TEXT_FIELD))); + .subAggregation(significantText("sig_terms", TEXT_FIELD))); } else { request = client().prepareSearch(INDEX_NAME).setTypes(DOC_TYPE) .addAggregation(terms("class").field(CLASS_FIELD) - .subAggregation(significantTerms("sig_terms").field(TEXT_FIELD))); + .subAggregation(significantTerms("sig_terms").field(TEXT_FIELD))); } - + SearchResponse response = request.execute().actionGet(); - - + + assertSearchResponse(response); StringTerms classes = response.getAggregations().get("class"); assertThat(classes.getBuckets().size(), equalTo(2)); @@ -368,8 +368,8 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { indexRequestBuilderList.add(client().prepareIndex(INDEX_NAME, DOC_TYPE, "1").setSource(TEXT_FIELD, text, CLASS_FIELD, "1")); } indexRandom(true, false, indexRequestBuilderList); - - + + SearchRequestBuilder request; if (randomBoolean() ) { request = client().prepareSearch(INDEX_NAME).setTypes(DOC_TYPE) @@ -379,7 +379,7 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { .subAggregation( significantTerms("sig_terms") .field(TEXT_FIELD) - .minDocCount(1))); + .minDocCount(1))); }else { request = client().prepareSearch(INDEX_NAME).setTypes(DOC_TYPE) @@ -388,9 +388,9 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { .field(CLASS_FIELD) .subAggregation( significantText("sig_terms", TEXT_FIELD) - .minDocCount(1))); + .minDocCount(1))); } - + request.execute().actionGet(); } @@ -409,7 +409,7 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { // 2. filter buckets and set the background to the other class and set is_background false // both should yield exact same result public void testBackgroundVsSeparateSet(SignificanceHeuristic significanceHeuristicExpectingSuperset, - SignificanceHeuristic significanceHeuristicExpectingSeparateSets, + SignificanceHeuristic significanceHeuristicExpectingSeparateSets, String type) throws Exception { final boolean useSigText = randomBoolean() && type.equals("text"); @@ -422,7 +422,7 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { significantText("sig_terms", TEXT_FIELD) .minDocCount(1) .significanceHeuristic( - significanceHeuristicExpectingSuperset))); + significanceHeuristicExpectingSuperset))); }else { request1 = client().prepareSearch(INDEX_NAME).setTypes(DOC_TYPE) @@ -433,12 +433,12 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { .field(TEXT_FIELD) .minDocCount(1) .significanceHeuristic( - significanceHeuristicExpectingSuperset))); + significanceHeuristicExpectingSuperset))); } - + SearchResponse response1 = request1.execute().actionGet(); assertSearchResponse(response1); - + SearchRequestBuilder request2; if (useSigText) { request2 = client().prepareSearch(INDEX_NAME).setTypes(DOC_TYPE) @@ -451,7 +451,7 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { .subAggregation(significantText("sig_terms", TEXT_FIELD) .minDocCount(1) .backgroundFilter(QueryBuilders.termQuery(CLASS_FIELD, "0")) - .significanceHeuristic(significanceHeuristicExpectingSeparateSets))); + .significanceHeuristic(significanceHeuristicExpectingSeparateSets))); }else { request2 = client().prepareSearch(INDEX_NAME).setTypes(DOC_TYPE) @@ -466,9 +466,9 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { .field(TEXT_FIELD) .minDocCount(1) .backgroundFilter(QueryBuilders.termQuery(CLASS_FIELD, "0")) - .significanceHeuristic(significanceHeuristicExpectingSeparateSets))); + .significanceHeuristic(significanceHeuristicExpectingSeparateSets))); } - + SearchResponse response2 = request2.execute().actionGet(); StringTerms classes = response1.getAggregations().get("class"); @@ -513,17 +513,17 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { .field("text") .executionHint(randomExecutionHint()) .significanceHeuristic(heuristic) - .minDocCount(1).shardSize(1000).size(1000))); + .minDocCount(1).shardSize(1000).size(1000))); }else { request = client().prepareSearch("test") .addAggregation(terms("class").field("class").subAggregation(significantText("mySignificantTerms", "text") .significanceHeuristic(heuristic) - .minDocCount(1).shardSize(1000).size(1000))); - } + .minDocCount(1).shardSize(1000).size(1000))); + } SearchResponse response = request.execute().actionGet(); - assertSearchResponse(response); - + assertSearchResponse(response); + assertSearchResponse(response); StringTerms classes = response.getAggregations().get("class"); assertThat(classes.getBuckets().size(), equalTo(2)); @@ -580,14 +580,14 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { String type = randomBoolean() ? "text" : "long"; indexRandomFrequencies01(type); ScriptHeuristic scriptHeuristic = getScriptSignificanceHeuristic(); - + SearchRequestBuilder request; if ("text".equals(type) && randomBoolean()) { request = client().prepareSearch(INDEX_NAME) .addAggregation(terms("class").field(CLASS_FIELD) .subAggregation(significantText("mySignificantTerms", TEXT_FIELD) .significanceHeuristic(scriptHeuristic) - .minDocCount(1).shardSize(2).size(2))); + .minDocCount(1).shardSize(2).size(2))); }else { request = client().prepareSearch(INDEX_NAME) @@ -596,10 +596,10 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { .field(TEXT_FIELD) .executionHint(randomExecutionHint()) .significanceHeuristic(scriptHeuristic) - .minDocCount(1).shardSize(2).size(2))); - } + .minDocCount(1).shardSize(2).size(2))); + } SearchResponse response = request.execute().actionGet(); - assertSearchResponse(response); + assertSearchResponse(response); for (Terms.Bucket classBucket : ((Terms) response.getAggregations().get("class")).getBuckets()) { SignificantTerms sigTerms = classBucket.getAggregations().get("mySignificantTerms"); for (SignificantTerms.Bucket bucket : sigTerms.getBuckets()) { @@ -666,8 +666,8 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { // Test that a request using a script does not get cached ScriptHeuristic scriptHeuristic = getScriptSignificanceHeuristic(); - boolean useSigText = randomBoolean(); - SearchResponse r; + boolean useSigText = randomBoolean(); + SearchResponse r; if (useSigText) { r = client().prepareSearch("cache_test_idx").setSize(0) .addAggregation(significantText("foo", "s").significanceHeuristic(scriptHeuristic)).get(); @@ -696,7 +696,7 @@ public class SignificantTermsSignificanceScoreIT extends ESIntegTestCase { assertThat(client().admin().indices().prepareStats("cache_test_idx").setRequestCache(true).get().getTotal().getRequestCache() .getMissCount(), equalTo(1L)); } - - + + } 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 873084b3a8..967913f286 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 @@ -21,7 +21,6 @@ package org.elasticsearch.search.aggregations.bucket.geogrid; 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.test.ESTestCase; import static org.hamcrest.Matchers.instanceOf; @@ -29,33 +28,30 @@ import static org.hamcrest.Matchers.instanceOf; public class GeoHashGridParserTests extends ESTestCase { public void testParseValidFromInts() throws Exception { int precision = randomIntBetween(1, 12); - XContentParser stParser = createParser(JsonXContent.jsonXContent, + XContentParser stParser = createParser(JsonXContent.jsonXContent, "{\"field\":\"my_loc\", \"precision\":" + precision + ", \"size\": 500, \"shard_size\": 550}"); - QueryParseContext parseContext = new QueryParseContext(stParser); XContentParser.Token token = stParser.nextToken(); assertSame(XContentParser.Token.START_OBJECT, token); // can create a factory - assertNotNull(GeoGridAggregationBuilder.parse("geohash_grid", parseContext)); + assertNotNull(GeoGridAggregationBuilder.parse("geohash_grid", stParser)); } public void testParseValidFromStrings() throws Exception { int precision = randomIntBetween(1, 12); - XContentParser stParser = createParser(JsonXContent.jsonXContent, + XContentParser stParser = createParser(JsonXContent.jsonXContent, "{\"field\":\"my_loc\", \"precision\":\"" + precision + "\", \"size\": \"500\", \"shard_size\": \"550\"}"); - QueryParseContext parseContext = new QueryParseContext(stParser); XContentParser.Token token = stParser.nextToken(); assertSame(XContentParser.Token.START_OBJECT, token); // can create a factory - assertNotNull(GeoGridAggregationBuilder.parse("geohash_grid", parseContext)); + assertNotNull(GeoGridAggregationBuilder.parse("geohash_grid", stParser)); } public void testParseErrorOnNonIntPrecision() throws Exception { XContentParser stParser = createParser(JsonXContent.jsonXContent, "{\"field\":\"my_loc\", \"precision\":\"2.0\"}"); - QueryParseContext parseContext = new QueryParseContext(stParser); XContentParser.Token token = stParser.nextToken(); assertSame(XContentParser.Token.START_OBJECT, token); try { - GeoGridAggregationBuilder.parse("geohash_grid", parseContext); + GeoGridAggregationBuilder.parse("geohash_grid", stParser); fail(); } catch (ParsingException ex) { assertThat(ex.getCause(), instanceOf(NumberFormatException.class)); @@ -65,11 +61,10 @@ public class GeoHashGridParserTests extends ESTestCase { public void testParseErrorOnBooleanPrecision() throws Exception { XContentParser stParser = createParser(JsonXContent.jsonXContent, "{\"field\":\"my_loc\", \"precision\":false}"); - QueryParseContext parseContext = new QueryParseContext(stParser); XContentParser.Token token = stParser.nextToken(); assertSame(XContentParser.Token.START_OBJECT, token); try { - GeoGridAggregationBuilder.parse("geohash_grid", parseContext); + GeoGridAggregationBuilder.parse("geohash_grid", stParser); fail(); } catch (IllegalArgumentException ex) { assertEquals("[geohash_grid] precision doesn't support values of type: VALUE_BOOLEAN", ex.getMessage()); @@ -78,11 +73,10 @@ public class GeoHashGridParserTests extends ESTestCase { public void testParseErrorOnPrecisionOutOfRange() throws Exception { XContentParser stParser = createParser(JsonXContent.jsonXContent, "{\"field\":\"my_loc\", \"precision\":\"13\"}"); - QueryParseContext parseContext = new QueryParseContext(stParser); XContentParser.Token token = stParser.nextToken(); assertSame(XContentParser.Token.START_OBJECT, token); try { - GeoGridAggregationBuilder.parse("geohash_grid", parseContext); + GeoGridAggregationBuilder.parse("geohash_grid", stParser); fail(); } catch (ParsingException ex) { assertThat(ex.getCause(), instanceOf(IllegalArgumentException.class)); 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 9c6615f8ff..07c3ae2dd9 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 @@ -33,7 +33,6 @@ import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.json.JsonXContent; import org.elasticsearch.index.Index; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.SearchModule; import org.elasticsearch.search.SearchShardTarget; @@ -267,9 +266,8 @@ public class SignificanceHeuristicTests extends ESTestCase { try { XContentParser stParser = createParser(JsonXContent.jsonXContent, "{\"field\":\"text\", " + faultyHeuristicDefinition + ",\"min_doc_count\":200}"); - QueryParseContext parseContext = new QueryParseContext(stParser); stParser.nextToken(); - SignificantTermsAggregationBuilder.getParser(significanceHeuristicParserRegistry).parse("testagg", parseContext); + SignificantTermsAggregationBuilder.getParser(significanceHeuristicParserRegistry).parse("testagg", stParser); fail(); } catch (ParsingException e) { assertThat(e.getCause().getMessage(), containsString(expectedError)); @@ -286,14 +284,13 @@ public class SignificanceHeuristicTests extends ESTestCase { return parseSignificanceHeuristic(significanceHeuristicParserRegistry, stParser); } - private SignificanceHeuristic parseSignificanceHeuristic( + private static SignificanceHeuristic parseSignificanceHeuristic( ParseFieldRegistry significanceHeuristicParserRegistry, XContentParser stParser) throws IOException { - QueryParseContext parseContext = new QueryParseContext(stParser); stParser.nextToken(); SignificantTermsAggregationBuilder aggregatorFactory = (SignificantTermsAggregationBuilder) SignificantTermsAggregationBuilder.getParser( - significanceHeuristicParserRegistry).parse("testagg", parseContext); + significanceHeuristicParserRegistry).parse("testagg", stParser); stParser.nextToken(); assertThat(aggregatorFactory.getBucketCountThresholds().getMinDocCount(), equalTo(200L)); assertThat(stParser.currentToken(), equalTo(null)); diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/FiltersTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/FiltersTests.java index f6691d5b27..cffda00ca7 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/FiltersTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/FiltersTests.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.MatchNoneQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.BaseAggregationTestCase; import org.elasticsearch.search.aggregations.bucket.filters.FiltersAggregationBuilder; import org.elasticsearch.search.aggregations.bucket.filters.FiltersAggregator.KeyedFilter; @@ -87,8 +86,7 @@ public class FiltersTests extends BaseAggregationTestCase AggregatorFactories.parseAggregators(parseContext)); + Exception e = expectThrows(AggregationInitializationException.class, () -> AggregatorFactories.parseAggregators(parser)); assertThat(e.toString(), containsString("Aggregator [top_tags_hits] of type [top_hits] cannot accept sub-aggregations")); } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/support/IncludeExcludeTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/support/IncludeExcludeTests.java index c211f754d1..abfb086048 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/support/IncludeExcludeTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/support/IncludeExcludeTests.java @@ -30,7 +30,6 @@ import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.fielddata.AbstractSortedSetDocValues; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.aggregations.bucket.terms.support.IncludeExclude; import org.elasticsearch.search.aggregations.bucket.terms.support.IncludeExclude.OrdinalsFilter; @@ -223,11 +222,10 @@ public class IncludeExcludeTests extends ESTestCase { assertEquals(field.getPreferredName(), parser.currentName()); token = parser.nextToken(); - QueryParseContext parseContext = new QueryParseContext(parser); if (field.getPreferredName().equalsIgnoreCase("include")) { - return IncludeExclude.parseInclude(parser, parseContext); + return IncludeExclude.parseInclude(parser); } else if (field.getPreferredName().equalsIgnoreCase("exclude")) { - return IncludeExclude.parseExclude(parser, parseContext); + return IncludeExclude.parseExclude(parser); } else { throw new IllegalArgumentException( "Unexpected field name serialized in test: " + field.getPreferredName()); @@ -263,7 +261,6 @@ public class IncludeExcludeTests extends ESTestCase { builder.endObject(); XContentParser parser = createParser(builder); - QueryParseContext parseContext = new QueryParseContext(parser); XContentParser.Token token = parser.nextToken(); assertEquals(token, XContentParser.Token.START_OBJECT); @@ -273,10 +270,10 @@ public class IncludeExcludeTests extends ESTestCase { assertEquals(XContentParser.Token.FIELD_NAME, token); if (IncludeExclude.INCLUDE_FIELD.match(parser.currentName())) { token = parser.nextToken(); - inc = IncludeExclude.parseInclude(parser, parseContext); + inc = IncludeExclude.parseInclude(parser); } else if (IncludeExclude.EXCLUDE_FIELD.match(parser.currentName())) { token = parser.nextToken(); - exc = IncludeExclude.parseExclude(parser, parseContext); + exc = IncludeExclude.parseExclude(parser); } else { throw new IllegalArgumentException("Unexpected field name serialized in test: " + 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 f8bd7b80d0..d6091c3cdd 100644 --- a/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java @@ -34,7 +34,6 @@ import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.common.xcontent.json.JsonXContent; import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.RandomQueryBuilder; import org.elasticsearch.search.AbstractSearchTestCase; import org.elasticsearch.search.rescore.QueryRescorerBuilder; @@ -64,21 +63,16 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { } private static void assertParseSearchSource(SearchSourceBuilder testBuilder, XContentParser parser) throws IOException { - QueryParseContext parseContext = new QueryParseContext(parser); if (randomBoolean()) { parser.nextToken(); // sometimes we move it on the START_OBJECT to // test the embedded case } - SearchSourceBuilder newBuilder = SearchSourceBuilder.fromXContent(parseContext); + SearchSourceBuilder newBuilder = SearchSourceBuilder.fromXContent(parser); assertNull(parser.nextToken()); assertEquals(testBuilder, newBuilder); assertEquals(testBuilder.hashCode(), newBuilder.hashCode()); } - private QueryParseContext createParseContext(XContentParser parser) { - return new QueryParseContext(parser); - } - public void testSerialization() throws IOException { SearchSourceBuilder testBuilder = createSearchSourceBuilder(); try (BytesStreamOutput output = new BytesStreamOutput()) { @@ -106,7 +100,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { { String restContent = " { \"_source\": { \"includes\": \"include\", \"excludes\": \"*.field2\"}}"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser); assertArrayEquals(new String[]{"*.field2"}, searchSourceBuilder.fetchSource().excludes()); assertArrayEquals(new String[]{"include"}, searchSourceBuilder.fetchSource().includes()); } @@ -114,7 +108,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { { String restContent = " { \"_source\": false}"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser); assertArrayEquals(new String[]{}, searchSourceBuilder.fetchSource().excludes()); assertArrayEquals(new String[]{}, searchSourceBuilder.fetchSource().includes()); assertFalse(searchSourceBuilder.fetchSource().fetchSource()); @@ -136,7 +130,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { " }\n" + " } }"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - ParsingException e = expectThrows(ParsingException.class, () -> SearchSourceBuilder.fromXContent(createParseContext(parser))); + ParsingException e = expectThrows(ParsingException.class, () -> SearchSourceBuilder.fromXContent(parser)); assertEquals("[multi_match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]", e.getMessage()); } } @@ -145,7 +139,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { { String restContent = " { \"sort\": \"foo\"}"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser); assertEquals(1, searchSourceBuilder.sorts().size()); assertEquals(new FieldSortBuilder("foo"), searchSourceBuilder.sorts().get(0)); } @@ -160,7 +154,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { " \"_score\"\n" + " ]}"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser); assertEquals(5, searchSourceBuilder.sorts().size()); assertEquals(new FieldSortBuilder("post_date"), searchSourceBuilder.sorts().get(0)); assertEquals(new FieldSortBuilder("user"), searchSourceBuilder.sorts().get(1)); @@ -183,7 +177,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { " }\n" + "}\n"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser); assertEquals(1, searchSourceBuilder.aggregations().count()); } } @@ -198,7 +192,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { " }\n" + "}\n"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser); assertEquals(1, searchSourceBuilder.aggregations().count()); } } @@ -223,7 +217,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { " }\n" + "}\n"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser); assertEquals(1, searchSourceBuilder.rescores().size()); assertEquals(new QueryRescorerBuilder(QueryBuilders.matchQuery("content", "baz")).windowSize(50), searchSourceBuilder.rescores().get(0)); @@ -245,7 +239,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { " } ]\n" + "}\n"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser); assertEquals(1, searchSourceBuilder.rescores().size()); assertEquals(new QueryRescorerBuilder(QueryBuilders.matchQuery("content", "baz")).windowSize(50), searchSourceBuilder.rescores().get(0)); @@ -257,7 +251,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { final String timeout = randomTimeValue(); final String query = "{ \"query\": { \"match_all\": {}}, \"timeout\": \"" + timeout + "\"}"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, query)) { - final SearchSourceBuilder builder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + final SearchSourceBuilder builder = SearchSourceBuilder.fromXContent(parser); assertThat(builder.timeout(), equalTo(TimeValue.parseTimeValue(timeout, null, "timeout"))); } } @@ -267,7 +261,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { final String query = "{ \"query\": { \"match_all\": {}}, \"timeout\": \"" + timeout + "\"}"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, query)) { final ElasticsearchParseException e = expectThrows(ElasticsearchParseException.class, () -> SearchSourceBuilder.fromXContent( - createParseContext(parser))); + parser)); assertThat(e, hasToString(containsString("unit is missing or unrecognized"))); } } @@ -299,7 +293,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { { String restContent = " { \"indices_boost\": {\"foo\": 1.0, \"bar\": 2.0}}"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser); assertEquals(2, searchSourceBuilder.indexBoosts().size()); assertEquals(new SearchSourceBuilder.IndexBoost("foo", 1.0f), searchSourceBuilder.indexBoosts().get(0)); assertEquals(new SearchSourceBuilder.IndexBoost("bar", 2.0f), searchSourceBuilder.indexBoosts().get(1)); @@ -315,7 +309,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { " { \"baz\" : 3.0 }\n" + " ]}"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser)); + SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser); assertEquals(3, searchSourceBuilder.indexBoosts().size()); assertEquals(new SearchSourceBuilder.IndexBoost("foo", 1.0f), searchSourceBuilder.indexBoosts().get(0)); assertEquals(new SearchSourceBuilder.IndexBoost("bar", 2.0f), searchSourceBuilder.indexBoosts().get(1)); @@ -367,7 +361,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase { private void assertIndicesBoostParseErrorMessage(String restContent, String expectedErrorMessage) throws IOException { try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) { - ParsingException e = expectThrows(ParsingException.class, () -> SearchSourceBuilder.fromXContent(createParseContext(parser))); + ParsingException e = expectThrows(ParsingException.class, () -> SearchSourceBuilder.fromXContent(parser)); assertEquals(expectedErrorMessage, e.getMessage()); } } diff --git a/core/src/test/java/org/elasticsearch/search/collapse/CollapseBuilderTests.java b/core/src/test/java/org/elasticsearch/search/collapse/CollapseBuilderTests.java index 07eef1a2f3..e4525ac3e9 100644 --- a/core/src/test/java/org/elasticsearch/search/collapse/CollapseBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/collapse/CollapseBuilderTests.java @@ -39,7 +39,6 @@ import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.NumberFieldMapper; import org.elasticsearch.index.query.InnerHitBuilder; import org.elasticsearch.index.query.InnerHitBuilderTests; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.search.SearchContextException; import org.elasticsearch.search.SearchModule; @@ -201,12 +200,13 @@ public class CollapseBuilderTests extends AbstractSerializingTestCase secondRescoreBuilder = RescoreBuilder.parseFromXContent(context); + RescoreBuilder secondRescoreBuilder = RescoreBuilder.parseFromXContent(parser); assertNotSame(rescoreBuilder, secondRescoreBuilder); assertEquals(rescoreBuilder, secondRescoreBuilder); assertEquals(rescoreBuilder.hashCode(), secondRescoreBuilder.hashCode()); @@ -174,9 +172,9 @@ public class QueryRescoreBuilderTests extends ESTestCase { " \"window_size\" : 20,\n" + " \"bad_rescorer_name\" : { }\n" + "}\n"; - QueryParseContext context = createContext(rescoreElement); + XContentParser parser = createParser(rescoreElement); try { - RescoreBuilder.parseFromXContent(context); + RescoreBuilder.parseFromXContent(parser); fail("expected a parsing exception"); } catch (ParsingException e) { assertEquals("rescore doesn't support rescorer with name [bad_rescorer_name]", e.getMessage()); @@ -185,9 +183,9 @@ public class QueryRescoreBuilderTests extends ESTestCase { rescoreElement = "{\n" + " \"bad_fieldName\" : 20\n" + "}\n"; - context = createContext(rescoreElement); + parser = createParser(rescoreElement); try { - RescoreBuilder.parseFromXContent(context); + RescoreBuilder.parseFromXContent(parser); fail("expected a parsing exception"); } catch (ParsingException e) { assertEquals("rescore doesn't support [bad_fieldName]", e.getMessage()); @@ -197,18 +195,18 @@ public class QueryRescoreBuilderTests extends ESTestCase { " \"window_size\" : 20,\n" + " \"query\" : [ ]\n" + "}\n"; - context = createContext(rescoreElement); + parser = createParser(rescoreElement); try { - RescoreBuilder.parseFromXContent(context); + RescoreBuilder.parseFromXContent(parser); fail("expected a parsing exception"); } catch (ParsingException e) { assertEquals("unexpected token [START_ARRAY] after [query]", e.getMessage()); } rescoreElement = "{ }"; - context = createContext(rescoreElement); + parser = createParser(rescoreElement); try { - RescoreBuilder.parseFromXContent(context); + RescoreBuilder.parseFromXContent(parser); fail("expected a parsing exception"); } catch (ParsingException e) { assertEquals("missing rescore type", e.getMessage()); @@ -218,9 +216,9 @@ public class QueryRescoreBuilderTests extends ESTestCase { " \"window_size\" : 20,\n" + " \"query\" : { \"bad_fieldname\" : 1.0 } \n" + "}\n"; - context = createContext(rescoreElement); + parser = createParser(rescoreElement); try { - RescoreBuilder.parseFromXContent(context); + RescoreBuilder.parseFromXContent(parser); fail("expected a parsing exception"); } catch (IllegalArgumentException e) { assertEquals("[query] unknown field [bad_fieldname], parser not found", e.getMessage()); @@ -230,9 +228,9 @@ public class QueryRescoreBuilderTests extends ESTestCase { " \"window_size\" : 20,\n" + " \"query\" : { \"rescore_query\" : { \"unknown_queryname\" : { } } } \n" + "}\n"; - context = createContext(rescoreElement); + parser = createParser(rescoreElement); try { - RescoreBuilder.parseFromXContent(context); + RescoreBuilder.parseFromXContent(parser); fail("expected a parsing exception"); } catch (ParsingException e) { assertEquals("[query] failed to parse field [rescore_query]", e.getMessage()); @@ -242,19 +240,18 @@ public class QueryRescoreBuilderTests extends ESTestCase { " \"window_size\" : 20,\n" + " \"query\" : { \"rescore_query\" : { \"match_all\" : { } } } \n" + "}\n"; - context = createContext(rescoreElement); - RescoreBuilder.parseFromXContent(context); + parser = createParser(rescoreElement); + RescoreBuilder.parseFromXContent(parser); } /** * create a new parser from the rescorer string representation and reset context with it */ - private QueryParseContext createContext(String rescoreElement) throws IOException { + private XContentParser createParser(String rescoreElement) throws IOException { XContentParser parser = createParser(JsonXContent.jsonXContent, rescoreElement); - QueryParseContext context = new QueryParseContext(parser); // move to first token, this is where the internal fromXContent assertTrue(parser.nextToken() == XContentParser.Token.START_OBJECT); - return context; + return parser; } @Override diff --git a/core/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java b/core/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java index 33c4f502b7..009b9ab5d6 100644 --- a/core/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java @@ -42,7 +42,6 @@ import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.fielddata.IndexNumericFieldData; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.UidFieldMapper; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.test.ESTestCase; @@ -107,8 +106,7 @@ public class SliceBuilderTests extends ESTestCase { sliceBuilder.innerToXContent(builder); builder.endObject(); XContentParser parser = createParser(shuffleXContent(builder)); - QueryParseContext context = new QueryParseContext(parser); - SliceBuilder secondSliceBuilder = SliceBuilder.fromXContent(context); + SliceBuilder secondSliceBuilder = SliceBuilder.fromXContent(parser); assertNotSame(sliceBuilder, secondSliceBuilder); assertEquals(sliceBuilder, secondSliceBuilder); assertEquals(sliceBuilder.hashCode(), secondSliceBuilder.hashCode()); diff --git a/core/src/test/java/org/elasticsearch/search/suggest/completion/CategoryContextMappingTests.java b/core/src/test/java/org/elasticsearch/search/suggest/completion/CategoryContextMappingTests.java index b9b15341da..07513b7641 100644 --- a/core/src/test/java/org/elasticsearch/search/suggest/completion/CategoryContextMappingTests.java +++ b/core/src/test/java/org/elasticsearch/search/suggest/completion/CategoryContextMappingTests.java @@ -37,7 +37,6 @@ import org.elasticsearch.index.mapper.MapperParsingException; import org.elasticsearch.index.mapper.ParseContext; import org.elasticsearch.index.mapper.ParsedDocument; import org.elasticsearch.index.mapper.SourceToParse; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.suggest.completion.context.CategoryContextMapping; import org.elasticsearch.search.suggest.completion.context.ContextBuilder; import org.elasticsearch.search.suggest.completion.context.ContextMapping; @@ -361,7 +360,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { XContentBuilder builder = jsonBuilder().value("context1"); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1)); assertThat(internalQueryContexts.get(0).context, equalTo("context1")); assertThat(internalQueryContexts.get(0).boost, equalTo(1)); @@ -372,7 +371,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { XContentBuilder builder = jsonBuilder().value(true); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1)); assertThat(internalQueryContexts.get(0).context, equalTo("true")); assertThat(internalQueryContexts.get(0).boost, equalTo(1)); @@ -383,7 +382,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { XContentBuilder builder = jsonBuilder().value(10); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1)); assertThat(internalQueryContexts.get(0).context, equalTo("10")); assertThat(internalQueryContexts.get(0).boost, equalTo(1)); @@ -395,7 +394,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - Exception e = expectThrows(ElasticsearchParseException.class, () -> mapping.parseQueryContext(createParseContext(parser))); + Exception e = expectThrows(ElasticsearchParseException.class, () -> mapping.parseQueryContext(parser)); assertEquals("category context must be an object, string, number or boolean", e.getMessage()); } @@ -406,7 +405,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { .endArray(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(2)); assertThat(internalQueryContexts.get(0).context, equalTo("context1")); assertThat(internalQueryContexts.get(0).boost, equalTo(1)); @@ -425,7 +424,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { .endArray(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(4)); assertThat(internalQueryContexts.get(0).context, equalTo("context1")); assertThat(internalQueryContexts.get(0).boost, equalTo(1)); @@ -452,7 +451,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - Exception e = expectThrows(ElasticsearchParseException.class, () -> mapping.parseQueryContext(createParseContext(parser))); + Exception e = expectThrows(ElasticsearchParseException.class, () -> mapping.parseQueryContext(parser)); assertEquals("category context must be an object, string, number or boolean", e.getMessage()); } @@ -464,7 +463,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { .endObject(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1)); assertThat(internalQueryContexts.get(0).context, equalTo("context1")); assertThat(internalQueryContexts.get(0).boost, equalTo(10)); @@ -479,7 +478,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { .endObject(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1)); assertThat(internalQueryContexts.get(0).context, equalTo("false")); assertThat(internalQueryContexts.get(0).boost, equalTo(10)); @@ -494,7 +493,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { .endObject(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1)); assertThat(internalQueryContexts.get(0).context, equalTo("333")); assertThat(internalQueryContexts.get(0).boost, equalTo(10)); @@ -510,7 +509,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - Exception e = expectThrows(ElasticsearchParseException.class, () -> mapping.parseQueryContext(createParseContext(parser))); + Exception e = expectThrows(ElasticsearchParseException.class, () -> mapping.parseQueryContext(parser)); assertEquals("category context must be a string, number or boolean", e.getMessage()); } @@ -529,7 +528,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { .endArray(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(2)); assertThat(internalQueryContexts.get(0).context, equalTo("context1")); assertThat(internalQueryContexts.get(0).boost, equalTo(2)); @@ -564,7 +563,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { .endArray(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(4)); assertThat(internalQueryContexts.get(0).context, equalTo("context1")); assertThat(internalQueryContexts.get(0).boost, equalTo(2)); @@ -611,13 +610,10 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - Exception e = expectThrows(ElasticsearchParseException.class, () -> mapping.parseQueryContext(createParseContext(parser))); + Exception e = expectThrows(ElasticsearchParseException.class, () -> mapping.parseQueryContext(parser)); assertEquals("category context must be a string, number or boolean", e.getMessage()); } - private static QueryParseContext createParseContext(XContentParser parser) { - return new QueryParseContext(parser); - } public void testQueryContextParsingMixed() throws Exception { XContentBuilder builder = jsonBuilder().startArray() @@ -636,7 +632,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { .endArray(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(4)); assertThat(internalQueryContexts.get(0).context, equalTo("context1")); assertThat(internalQueryContexts.get(0).boost, equalTo(2)); @@ -671,10 +667,10 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); CategoryContextMapping mapping = ContextBuilder.category("cat").build(); - Exception e = expectThrows(ElasticsearchParseException.class, () -> mapping.parseQueryContext(createParseContext(parser))); + Exception e = expectThrows(ElasticsearchParseException.class, () -> mapping.parseQueryContext(parser)); assertEquals("category context must be an object, string, number or boolean", e.getMessage()); } - + public void testUnknownQueryContextParsing() throws Exception { String mapping = jsonBuilder().startObject().startObject("type1") .startObject("properties").startObject("completion") @@ -695,7 +691,7 @@ public class CategoryContextMappingTests extends ESSingleNodeTestCase { DocumentMapper defaultMapper = createIndex("test").mapperService().documentMapperParser().parse("type1", new CompressedXContent(mapping)); FieldMapper fieldMapper = defaultMapper.mappers().getMapper("completion"); CompletionFieldType completionFieldType = (CompletionFieldType) fieldMapper.fieldType(); - + Exception e = expectThrows(IllegalArgumentException.class, () -> completionFieldType.getContextMappings().get("brand")); assertEquals("Unknown context name [brand], must be one of [ctx, type]", e.getMessage()); } diff --git a/core/src/test/java/org/elasticsearch/search/suggest/completion/CategoryQueryContextTests.java b/core/src/test/java/org/elasticsearch/search/suggest/completion/CategoryQueryContextTests.java index 658f145b1c..7b0b898e59 100644 --- a/core/src/test/java/org/elasticsearch/search/suggest/completion/CategoryQueryContextTests.java +++ b/core/src/test/java/org/elasticsearch/search/suggest/completion/CategoryQueryContextTests.java @@ -19,7 +19,7 @@ package org.elasticsearch.search.suggest.completion; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.suggest.completion.context.CategoryQueryContext; import java.io.IOException; @@ -40,8 +40,8 @@ public class CategoryQueryContextTests extends QueryContextTestCase internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1 + 8)); Collection locations = new ArrayList<>(); locations.add("ezs42e"); @@ -228,7 +227,7 @@ public class GeoContextMappingTests extends ESSingleNodeTestCase { .endObject(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); GeoContextMapping mapping = ContextBuilder.geo("geo").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1 + 8)); Collection locations = new ArrayList<>(); locations.add("wh0n94"); @@ -251,7 +250,7 @@ public class GeoContextMappingTests extends ESSingleNodeTestCase { .endObject(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); GeoContextMapping mapping = ContextBuilder.geo("geo").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1 + 1 + 8 + 1 + 8 + 1 + 8)); Collection locations = new ArrayList<>(); locations.add("wh0n94"); @@ -289,7 +288,7 @@ public class GeoContextMappingTests extends ESSingleNodeTestCase { .endArray(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); GeoContextMapping mapping = ContextBuilder.geo("geo").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1 + 1 + 8 + 1 + 8 + 1 + 8 + 1 + 1 + 8)); Collection firstLocations = new ArrayList<>(); firstLocations.add("wh0n94"); @@ -332,7 +331,7 @@ public class GeoContextMappingTests extends ESSingleNodeTestCase { .endArray(); XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes()); GeoContextMapping mapping = ContextBuilder.geo("geo").build(); - List internalQueryContexts = mapping.parseQueryContext(createParseContext(parser)); + List internalQueryContexts = mapping.parseQueryContext(parser); assertThat(internalQueryContexts.size(), equalTo(1 + 1 + 8 + 1 + 8 + 1 + 8)); Collection firstLocations = new ArrayList<>(); firstLocations.add("wh0n94"); @@ -354,8 +353,4 @@ public class GeoContextMappingTests extends ESSingleNodeTestCase { assertThat(internalQueryContext.isPrefix, equalTo(internalQueryContext.context.length() < GeoContextMapping.DEFAULT_PRECISION)); } } - - private static QueryParseContext createParseContext(XContentParser parser) { - return new QueryParseContext(parser); - }; } diff --git a/core/src/test/java/org/elasticsearch/search/suggest/completion/GeoQueryContextTests.java b/core/src/test/java/org/elasticsearch/search/suggest/completion/GeoQueryContextTests.java index 3e22513ec1..1d058350a9 100644 --- a/core/src/test/java/org/elasticsearch/search/suggest/completion/GeoQueryContextTests.java +++ b/core/src/test/java/org/elasticsearch/search/suggest/completion/GeoQueryContextTests.java @@ -20,7 +20,7 @@ package org.elasticsearch.search.suggest.completion; import org.elasticsearch.common.geo.GeoPoint; -import org.elasticsearch.index.query.QueryParseContext; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.search.suggest.completion.context.GeoQueryContext; import java.io.IOException; @@ -51,8 +51,8 @@ public class GeoQueryContextTests extends QueryContextTestCase } @Override - protected GeoQueryContext fromXContent(QueryParseContext context) throws IOException { - return GeoQueryContext.fromXContent(context); + protected GeoQueryContext fromXContent(XContentParser parser) throws IOException { + return GeoQueryContext.fromXContent(parser); } public void testNullGeoPointIsIllegal() { diff --git a/core/src/test/java/org/elasticsearch/search/suggest/completion/QueryContextTestCase.java b/core/src/test/java/org/elasticsearch/search/suggest/completion/QueryContextTestCase.java index 192aa8ee1d..3f288e3e3e 100644 --- a/core/src/test/java/org/elasticsearch/search/suggest/completion/QueryContextTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/suggest/completion/QueryContextTestCase.java @@ -23,7 +23,6 @@ import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.test.ESTestCase; import java.io.IOException; @@ -40,7 +39,7 @@ public abstract class QueryContextTestCase extends ESTest /** * read the context */ - protected abstract QC fromXContent(QueryParseContext context) throws IOException; + protected abstract QC fromXContent(XContentParser parser) throws IOException; public void testToXContext() throws IOException { for (int i = 0; i < NUMBER_OF_RUNS; i++) { @@ -49,7 +48,7 @@ public abstract class QueryContextTestCase extends ESTest toXContent.toXContent(builder, ToXContent.EMPTY_PARAMS); XContentParser parser = createParser(builder); parser.nextToken(); - QC fromXContext = fromXContent(new QueryParseContext(parser)); + QC fromXContext = fromXContent(parser); assertEquals(toXContent, fromXContext); assertEquals(toXContent.hashCode(), fromXContext.hashCode()); } diff --git a/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParser.java b/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParser.java index c2e4b4f0c3..bd265f5ead 100644 --- a/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParser.java +++ b/modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParser.java @@ -22,7 +22,6 @@ package org.elasticsearch.search.aggregations.support; import org.elasticsearch.common.ParseField; import org.elasticsearch.common.ParsingException; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.AggregationBuilder.CommonFields; import org.elasticsearch.search.aggregations.Aggregator; @@ -75,10 +74,9 @@ public abstract class MultiValuesSourceParser implement } @Override - public final MultiValuesSourceAggregationBuilder parse(String aggregationName, QueryParseContext context) + public final MultiValuesSourceAggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { - XContentParser parser = context.parser(); List fields = null; ValueType valueType = null; String format = null; diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java index d1e6377b69..2dd9b34e6b 100644 --- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java +++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java @@ -33,8 +33,6 @@ import org.elasticsearch.common.xcontent.NamedXContentRegistry; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentType; -import org.elasticsearch.index.query.QueryParseContext; -import org.elasticsearch.script.ExecutableScript; import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptService; import org.elasticsearch.script.TemplateScript; @@ -110,7 +108,7 @@ public class TransportSearchTemplateAction extends HandledTransportAction> return serviceHolder.createShardContext(); } - private static QueryParseContext createParseContext(XContentParser parser) { - return new QueryParseContext(parser); - } - /** * create a random value for either {@link AbstractQueryTestCase#BOOLEAN_FIELD_NAME}, {@link AbstractQueryTestCase#INT_FIELD_NAME}, * {@link AbstractQueryTestCase#DOUBLE_FIELD_NAME}, {@link AbstractQueryTestCase#STRING_FIELD_NAME} or -- cgit v1.2.3