From 364fd48eb83e1cc0dc85d9e55966ab22528475f3 Mon Sep 17 00:00:00 2001 From: Mark Tozzi Date: Thu, 5 Mar 2020 15:33:10 -0500 Subject: [PATCH 01/10] Get rid of typed field creators --- .../geogrid/GeoGridAggregationBuilder.java | 2 +- .../AutoDateHistogramAggregationBuilder.java | 2 +- .../DateHistogramAggregationBuilder.java | 2 +- .../HistogramAggregationBuilder.java | 2 +- .../missing/MissingAggregationBuilder.java | 2 +- .../range/DateRangeAggregationBuilder.java | 2 +- .../range/GeoDistanceAggregationBuilder.java | 2 +- .../range/IpRangeAggregationBuilder.java | 2 +- .../bucket/range/RangeAggregationBuilder.java | 2 +- .../DiversifiedAggregationBuilder.java | 2 +- .../SignificantTermsAggregationBuilder.java | 2 +- .../terms/RareTermsAggregationBuilder.java | 2 +- .../bucket/terms/TermsAggregationBuilder.java | 2 +- ...AbstractPercentilesAggregationBuilder.java | 2 +- .../metrics/AvgAggregationBuilder.java | 2 +- .../CardinalityAggregationBuilder.java | 2 +- .../ExtendedStatsAggregationBuilder.java | 2 +- .../metrics/GeoBoundsAggregationBuilder.java | 2 +- .../GeoCentroidAggregationBuilder.java | 2 +- .../metrics/MaxAggregationBuilder.java | 2 +- ...anAbsoluteDeviationAggregationBuilder.java | 2 +- .../metrics/MinAggregationBuilder.java | 2 +- .../metrics/StatsAggregationBuilder.java | 2 +- .../metrics/SumAggregationBuilder.java | 2 +- .../metrics/ValueCountAggregationBuilder.java | 2 +- .../support/ValuesSourceParserHelper.java | 47 +++---------------- .../boxplot/BoxplotAggregationBuilder.java | 2 +- .../StringStatsAggregationBuilder.java | 2 +- 28 files changed, 34 insertions(+), 67 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java index 57a4ce6fff99e..b70b2ab3518a5 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java @@ -65,7 +65,7 @@ protected interface PrecisionParser { public static ObjectParser createParser(String name, PrecisionParser precisionParser) { ObjectParser parser = new ObjectParser<>(name); - ValuesSourceParserHelper.declareGeoFields(parser, false, false); + ValuesSourceParserHelper.declareNonTimezoneFields(parser, false, false); parser.declareField((p, builder, context) -> builder.precision(precisionParser.parse(p)), FIELD_PRECISION, org.elasticsearch.common.xcontent.ObjectParser.ValueType.INT); parser.declareInt(GeoGridAggregationBuilder::size, FIELD_SIZE); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/AutoDateHistogramAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/AutoDateHistogramAggregationBuilder.java index 8acb50d78a99e..dc46da935c82c 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/AutoDateHistogramAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/AutoDateHistogramAggregationBuilder.java @@ -60,7 +60,7 @@ public class AutoDateHistogramAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(AutoDateHistogramAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, true); PARSER.declareInt(AutoDateHistogramAggregationBuilder::setNumBuckets, NUM_BUCKETS_FIELD); PARSER.declareStringOrNull(AutoDateHistogramAggregationBuilder::setMinimumIntervalExpression, MINIMUM_INTERVAL_FIELD); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramAggregationBuilder.java index ede3b55ddc2ce..2d8540052d201 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramAggregationBuilder.java @@ -93,7 +93,7 @@ public class DateHistogramAggregationBuilder extends ValuesSourceAggregationBuil private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(DateHistogramAggregationBuilder.NAME); - ValuesSourceParserHelper.declareAnyFields(PARSER, true, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, true); DateIntervalWrapper.declareIntervalFields(PARSER); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java index b8e11d0c44eab..0b5846a4cb45e 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java @@ -65,7 +65,7 @@ public class HistogramAggregationBuilder extends ValuesSourceAggregationBuilder< private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(HistogramAggregationBuilder.NAME); - ValuesSourceParserHelper.declareAnyFields(PARSER, true, true); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); PARSER.declareDouble(HistogramAggregationBuilder::interval, Histogram.INTERVAL_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java index 7300f0becf440..90f9368b461c7 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java @@ -45,7 +45,7 @@ public class MissingAggregationBuilder extends ValuesSourceAggregationBuilder PARSER; static { PARSER = new ObjectParser<>(MissingAggregationBuilder.NAME); - ValuesSourceParserHelper.declareAnyFields(PARSER, true, true); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); } public static MissingAggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/DateRangeAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/DateRangeAggregationBuilder.java index c6590b42ff32b..03d702731bda7 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/DateRangeAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/DateRangeAggregationBuilder.java @@ -43,7 +43,7 @@ public class DateRangeAggregationBuilder extends AbstractRangeBuilder PARSER; static { PARSER = new ObjectParser<>(DateRangeAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, true); PARSER.declareBoolean(DateRangeAggregationBuilder::keyed, RangeAggregator.KEYED_FIELD); PARSER.declareObjectArray((agg, ranges) -> { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java index a3a3779594b77..75e62e5e58e98 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java @@ -61,7 +61,7 @@ public class GeoDistanceAggregationBuilder extends ValuesSourceAggregationBuilde private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoDistanceAggregationBuilder.NAME); - ValuesSourceParserHelper.declareGeoFields(PARSER, true, false); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, false); PARSER.declareBoolean(GeoDistanceAggregationBuilder::keyed, RangeAggregator.KEYED_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java index 6a5d6aeb963db..29128c1e4bf4d 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java @@ -61,7 +61,7 @@ public final class IpRangeAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(IpRangeAggregationBuilder.NAME); - ValuesSourceParserHelper.declareBytesFields(PARSER, false, false); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, false, false); PARSER.declareBoolean(IpRangeAggregationBuilder::keyed, RangeAggregator.KEYED_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregationBuilder.java index 2a679a0161d18..d5fba6c6dac54 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregationBuilder.java @@ -41,7 +41,7 @@ public class RangeAggregationBuilder extends AbstractRangeBuilder PARSER; static { PARSER = new ObjectParser<>(RangeAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); PARSER.declareBoolean(RangeAggregationBuilder::keyed, RangeAggregator.KEYED_FIELD); PARSER.declareObjectArray((agg, ranges) -> { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java index c34a8b3e92b14..0c082650eb696 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java @@ -47,7 +47,7 @@ public class DiversifiedAggregationBuilder extends ValuesSourceAggregationBuilde private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(DiversifiedAggregationBuilder.NAME); - ValuesSourceParserHelper.declareAnyFields(PARSER, true, false); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, false); PARSER.declareInt(DiversifiedAggregationBuilder::shardSize, SamplerAggregator.SHARD_SIZE_FIELD); PARSER.declareInt(DiversifiedAggregationBuilder::maxDocsPerValue, SamplerAggregator.MAX_DOCS_PER_VALUE_FIELD); PARSER.declareString(DiversifiedAggregationBuilder::executionHint, SamplerAggregator.EXECUTION_HINT_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java index c7ef5a1701dc4..433c6544d552e 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java @@ -67,7 +67,7 @@ public class SignificantTermsAggregationBuilder extends ValuesSourceAggregationB SignificantTermsAggregationBuilder.NAME, SignificanceHeuristic.class, SignificantTermsAggregationBuilder::significanceHeuristic, null); static { - ValuesSourceParserHelper.declareAnyFields(PARSER, true, true); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); PARSER.declareInt(SignificantTermsAggregationBuilder::shardSize, TermsAggregationBuilder.SHARD_SIZE_FIELD_NAME); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java index bc12343996172..1c18aee46a1cf 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java @@ -51,7 +51,7 @@ public class RareTermsAggregationBuilder extends ValuesSourceAggregationBuilder< private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(RareTermsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareAnyFields(PARSER, true, true); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); PARSER.declareLong(RareTermsAggregationBuilder::maxDocCount, MAX_DOC_COUNT_FIELD_NAME); PARSER.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(v, b.includeExclude())), diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java index 4dc699130b1ab..0bed7ba52bee2 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java @@ -68,7 +68,7 @@ public class TermsAggregationBuilder extends ValuesSourceAggregationBuilder PARSER; static { PARSER = new ObjectParser<>(TermsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareAnyFields(PARSER, true, true); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); PARSER.declareBoolean(TermsAggregationBuilder::showTermDocCountError, TermsAggregationBuilder.SHOW_TERM_DOC_COUNT_ERROR); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java index 12a5fdd291181..c0ab2419f428b 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java @@ -105,7 +105,7 @@ public static > ConstructingO return ctor.apply(name, values, percentilesConfig); }); - ValuesSourceParserHelper.declareAnyFields(parser, true, true); + ValuesSourceParserHelper.declareNonTimezoneFields(parser, true, true); parser.declareDoubleArray(ConstructingObjectParser.optionalConstructorArg(), valuesField); parser.declareBoolean(T::keyed, KEYED_FIELD); parser.declareObject(ConstructingObjectParser.optionalConstructorArg(), PercentilesMethod.TDIGEST_PARSER, diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AvgAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AvgAggregationBuilder.java index ddb1eab0bab0c..615f26bccbf74 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AvgAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AvgAggregationBuilder.java @@ -44,7 +44,7 @@ public class AvgAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOn private static final ObjectParser PARSER = ObjectParser.fromBuilder(NAME, AvgAggregationBuilder::new); static { - ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java index 256c22de645df..5d58ff22b88a1 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java @@ -53,7 +53,7 @@ public final class CardinalityAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(CardinalityAggregationBuilder.NAME); - ValuesSourceParserHelper.declareAnyFields(PARSER, true, false); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, false); PARSER.declareLong(CardinalityAggregationBuilder::precisionThreshold, CardinalityAggregationBuilder.PRECISION_THRESHOLD_FIELD); PARSER.declareLong((b, v) -> {/*ignore*/}, REHASH); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ExtendedStatsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ExtendedStatsAggregationBuilder.java index 960c6f940e83d..1d675a0165399 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ExtendedStatsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ExtendedStatsAggregationBuilder.java @@ -46,7 +46,7 @@ public class ExtendedStatsAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(ExtendedStatsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); PARSER.declareDouble(ExtendedStatsAggregationBuilder::sigma, ExtendedStatsAggregator.SIGMA_FIELD); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java index f77d802f1b469..75f343e194aff 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java @@ -44,7 +44,7 @@ public class GeoBoundsAggregationBuilder extends ValuesSourceAggregationBuilder< private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoBoundsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareGeoFields(PARSER, false, false); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, false, false); PARSER.declareBoolean(GeoBoundsAggregationBuilder::wrapLongitude, GeoBoundsAggregator.WRAP_LONGITUDE_FIELD); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java index 44e5dcf757a6c..6de91fe20c18b 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java @@ -45,7 +45,7 @@ public class GeoCentroidAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoCentroidAggregationBuilder.NAME); - ValuesSourceParserHelper.declareGeoFields(PARSER, true, false); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MaxAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MaxAggregationBuilder.java index 09861ae0fc42f..26f079bf7b25b 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MaxAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MaxAggregationBuilder.java @@ -45,7 +45,7 @@ public class MaxAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOn private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(MaxAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MedianAbsoluteDeviationAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MedianAbsoluteDeviationAggregationBuilder.java index 11419e0f8d263..babafd5d47cdb 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MedianAbsoluteDeviationAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MedianAbsoluteDeviationAggregationBuilder.java @@ -52,7 +52,7 @@ public class MedianAbsoluteDeviationAggregationBuilder extends LeafOnly(NAME); - ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); PARSER.declareDouble(MedianAbsoluteDeviationAggregationBuilder::compression, COMPRESSION_FIELD); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MinAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MinAggregationBuilder.java index 0a14f3ae711fe..be6410db8fce5 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MinAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MinAggregationBuilder.java @@ -45,7 +45,7 @@ public class MinAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOn private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(AvgAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/StatsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/StatsAggregationBuilder.java index ed86e9c533e87..571a86073e7d9 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/StatsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/StatsAggregationBuilder.java @@ -45,7 +45,7 @@ public class StatsAggregationBuilder extends ValuesSourceAggregationBuilder.Leaf private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(StatsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/SumAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/SumAggregationBuilder.java index 92c5af26b5604..8d103eb9a258c 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/SumAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/SumAggregationBuilder.java @@ -45,7 +45,7 @@ public class SumAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOn private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(SumAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java index 5998de1e7bf17..e3ca8621f0e02 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java @@ -46,7 +46,7 @@ public class ValueCountAggregationBuilder extends ValuesSourceAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(ValueCountAggregationBuilder.NAME); - ValuesSourceParserHelper.declareAnyFields(PARSER, true, true); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java index cd037df16a743..efbb100a3947b 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java @@ -20,7 +20,6 @@ package org.elasticsearch.search.aggregations.support; import org.elasticsearch.common.ParseField; -import org.elasticsearch.common.ParsingException; import org.elasticsearch.common.xcontent.AbstractObjectParser; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentParser; @@ -33,39 +32,15 @@ public final class ValuesSourceParserHelper { private ValuesSourceParserHelper() {} // utility class, no instantiation - public static void declareAnyFields( - AbstractObjectParser, T> objectParser, - boolean scriptable, boolean formattable) { - declareAnyFields(objectParser, scriptable, formattable, false); - } - - public static void declareAnyFields( - AbstractObjectParser, T> objectParser, - boolean scriptable, boolean formattable, boolean timezoneAware) { - declareFields(objectParser, scriptable, formattable, timezoneAware, null); - } - - public static void declareNumericFields( - AbstractObjectParser, T> objectParser, - boolean scriptable, boolean formattable, boolean timezoneAware) { - declareFields(objectParser, scriptable, formattable, timezoneAware, ValueType.NUMERIC); - } - - public static void declareBytesFields( - AbstractObjectParser, T> objectParser, - boolean scriptable, boolean formattable) { - declareFields(objectParser, scriptable, formattable, false, ValueType.STRING); - } - - public static void declareGeoFields( + public static void declareNonTimezoneFields( AbstractObjectParser, T> objectParser, boolean scriptable, boolean formattable) { - declareFields(objectParser, scriptable, formattable, false, ValueType.GEOPOINT); + declareFields(objectParser, scriptable, formattable, false); } - private static void declareFields( - AbstractObjectParser, T> objectParser, - boolean scriptable, boolean formattable, boolean timezoneAware, ValueType expectedInputType) { + public static void declareFields( + AbstractObjectParser, T> objectParser, + boolean scriptable, boolean formattable, boolean timezoneAware) { objectParser.declareField(ValuesSourceAggregationBuilder::field, XContentParser::text, @@ -74,16 +49,8 @@ private static void declareFields( objectParser.declareField(ValuesSourceAggregationBuilder::missing, XContentParser::objectText, ParseField.CommonFields.MISSING, ObjectParser.ValueType.VALUE); - objectParser.declareField(ValuesSourceAggregationBuilder::userValueTypeHint, p -> { - ValueType valueType = ValueType.resolveForScript(p.text()); - if (expectedInputType != null && valueType.isNotA(expectedInputType)) { - throw new ParsingException(p.getTokenLocation(), - "Aggregation [" + objectParser.getName() + "] was configured with an incompatible value type [" - + valueType + "]. It can only work on value off type [" - + expectedInputType + "]"); - } - return valueType; - }, ValueType.VALUE_TYPE, ObjectParser.ValueType.STRING); + objectParser.declareField(ValuesSourceAggregationBuilder::userValueTypeHint, p -> ValueType.resolveForScript(p.text()), + ValueType.VALUE_TYPE, ObjectParser.ValueType.STRING); if (formattable) { objectParser.declareField(ValuesSourceAggregationBuilder::format, XContentParser::text, diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java index a07efb49b898b..75d31843a82d5 100644 --- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java +++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java @@ -35,7 +35,7 @@ public class BoxplotAggregationBuilder extends ValuesSourceAggregationBuilder.Le public static final ObjectParser PARSER = ObjectParser.fromBuilder(NAME, BoxplotAggregationBuilder::new); static { - ValuesSourceParserHelper.declareAnyFields(PARSER, true, true); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); PARSER.declareDouble(BoxplotAggregationBuilder::compression, COMPRESSION_FIELD); } diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java index 065209efd8ee5..cdfefa7eb44be 100644 --- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java +++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java @@ -33,7 +33,7 @@ public class StringStatsAggregationBuilder extends ValuesSourceAggregationBuilde public static final ObjectParser PARSER = ObjectParser.fromBuilder(NAME, StringStatsAggregationBuilder::new); static { - ValuesSourceParserHelper.declareBytesFields(PARSER, true, true); + ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); PARSER.declareBoolean(StringStatsAggregationBuilder::showDistribution, StringStatsAggregationBuilder.SHOW_DISTRIBUTION_FIELD); } From f187b34d97f7ec6cc986395ae4bf6dce210e1ed5 Mon Sep 17 00:00:00 2001 From: Mark Tozzi Date: Thu, 5 Mar 2020 15:46:08 -0500 Subject: [PATCH 02/10] only really need one declareFields --- .../bucket/geogrid/GeoGridAggregationBuilder.java | 2 +- .../bucket/histogram/HistogramAggregationBuilder.java | 2 +- .../bucket/missing/MissingAggregationBuilder.java | 2 +- .../bucket/range/GeoDistanceAggregationBuilder.java | 2 +- .../bucket/range/IpRangeAggregationBuilder.java | 2 +- .../bucket/sampler/DiversifiedAggregationBuilder.java | 2 +- .../significant/SignificantTermsAggregationBuilder.java | 2 +- .../bucket/terms/RareTermsAggregationBuilder.java | 2 +- .../aggregations/bucket/terms/TermsAggregationBuilder.java | 2 +- .../metrics/AbstractPercentilesAggregationBuilder.java | 2 +- .../aggregations/metrics/CardinalityAggregationBuilder.java | 2 +- .../aggregations/metrics/GeoBoundsAggregationBuilder.java | 2 +- .../aggregations/metrics/GeoCentroidAggregationBuilder.java | 2 +- .../aggregations/metrics/ValueCountAggregationBuilder.java | 2 +- .../aggregations/support/ValuesSourceParserHelper.java | 6 ------ .../xpack/analytics/boxplot/BoxplotAggregationBuilder.java | 2 +- .../stringstats/StringStatsAggregationBuilder.java | 2 +- 17 files changed, 16 insertions(+), 22 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java index b70b2ab3518a5..31446e77b58f8 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java @@ -65,7 +65,7 @@ protected interface PrecisionParser { public static ObjectParser createParser(String name, PrecisionParser precisionParser) { ObjectParser parser = new ObjectParser<>(name); - ValuesSourceParserHelper.declareNonTimezoneFields(parser, false, false); + ValuesSourceParserHelper.declareFields(parser, false, false, false); parser.declareField((p, builder, context) -> builder.precision(precisionParser.parse(p)), FIELD_PRECISION, org.elasticsearch.common.xcontent.ObjectParser.ValueType.INT); parser.declareInt(GeoGridAggregationBuilder::size, FIELD_SIZE); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java index 0b5846a4cb45e..020143a66970c 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java @@ -65,7 +65,7 @@ public class HistogramAggregationBuilder extends ValuesSourceAggregationBuilder< private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(HistogramAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); PARSER.declareDouble(HistogramAggregationBuilder::interval, Histogram.INTERVAL_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java index 90f9368b461c7..b5abdc0278ee7 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java @@ -45,7 +45,7 @@ public class MissingAggregationBuilder extends ValuesSourceAggregationBuilder PARSER; static { PARSER = new ObjectParser<>(MissingAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); } public static MissingAggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java index 75e62e5e58e98..9124aebe4ba9f 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java @@ -61,7 +61,7 @@ public class GeoDistanceAggregationBuilder extends ValuesSourceAggregationBuilde private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoDistanceAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, false, false); PARSER.declareBoolean(GeoDistanceAggregationBuilder::keyed, RangeAggregator.KEYED_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java index 29128c1e4bf4d..9af72b2500bf5 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java @@ -61,7 +61,7 @@ public final class IpRangeAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(IpRangeAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, false, false); + ValuesSourceParserHelper.declareFields(PARSER, false, false, false); PARSER.declareBoolean(IpRangeAggregationBuilder::keyed, RangeAggregator.KEYED_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java index 0c082650eb696..624a6af53dce6 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java @@ -47,7 +47,7 @@ public class DiversifiedAggregationBuilder extends ValuesSourceAggregationBuilde private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(DiversifiedAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, false, false); PARSER.declareInt(DiversifiedAggregationBuilder::shardSize, SamplerAggregator.SHARD_SIZE_FIELD); PARSER.declareInt(DiversifiedAggregationBuilder::maxDocsPerValue, SamplerAggregator.MAX_DOCS_PER_VALUE_FIELD); PARSER.declareString(DiversifiedAggregationBuilder::executionHint, SamplerAggregator.EXECUTION_HINT_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java index 433c6544d552e..2879db2295112 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java @@ -67,7 +67,7 @@ public class SignificantTermsAggregationBuilder extends ValuesSourceAggregationB SignificantTermsAggregationBuilder.NAME, SignificanceHeuristic.class, SignificantTermsAggregationBuilder::significanceHeuristic, null); static { - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); PARSER.declareInt(SignificantTermsAggregationBuilder::shardSize, TermsAggregationBuilder.SHARD_SIZE_FIELD_NAME); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java index 1c18aee46a1cf..800f05cd0f138 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java @@ -51,7 +51,7 @@ public class RareTermsAggregationBuilder extends ValuesSourceAggregationBuilder< private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(RareTermsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); PARSER.declareLong(RareTermsAggregationBuilder::maxDocCount, MAX_DOC_COUNT_FIELD_NAME); PARSER.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(v, b.includeExclude())), diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java index 0bed7ba52bee2..63624d822a0b4 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java @@ -68,7 +68,7 @@ public class TermsAggregationBuilder extends ValuesSourceAggregationBuilder PARSER; static { PARSER = new ObjectParser<>(TermsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); PARSER.declareBoolean(TermsAggregationBuilder::showTermDocCountError, TermsAggregationBuilder.SHOW_TERM_DOC_COUNT_ERROR); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java index c0ab2419f428b..3583bf2c3ab46 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java @@ -105,7 +105,7 @@ public static > ConstructingO return ctor.apply(name, values, percentilesConfig); }); - ValuesSourceParserHelper.declareNonTimezoneFields(parser, true, true); + ValuesSourceParserHelper.declareFields(parser, true, true, false); parser.declareDoubleArray(ConstructingObjectParser.optionalConstructorArg(), valuesField); parser.declareBoolean(T::keyed, KEYED_FIELD); parser.declareObject(ConstructingObjectParser.optionalConstructorArg(), PercentilesMethod.TDIGEST_PARSER, diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java index 5d58ff22b88a1..c40e0282326ff 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java @@ -53,7 +53,7 @@ public final class CardinalityAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(CardinalityAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, false, false); PARSER.declareLong(CardinalityAggregationBuilder::precisionThreshold, CardinalityAggregationBuilder.PRECISION_THRESHOLD_FIELD); PARSER.declareLong((b, v) -> {/*ignore*/}, REHASH); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java index 75f343e194aff..696fc6caab7ff 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java @@ -44,7 +44,7 @@ public class GeoBoundsAggregationBuilder extends ValuesSourceAggregationBuilder< private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoBoundsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, false, false); + ValuesSourceParserHelper.declareFields(PARSER, false, false, false); PARSER.declareBoolean(GeoBoundsAggregationBuilder::wrapLongitude, GeoBoundsAggregator.WRAP_LONGITUDE_FIELD); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java index 6de91fe20c18b..59ef499a3c79b 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java @@ -45,7 +45,7 @@ public class GeoCentroidAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoCentroidAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, false); + ValuesSourceParserHelper.declareFields(PARSER, true, false, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java index e3ca8621f0e02..2f7d925530a87 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java @@ -46,7 +46,7 @@ public class ValueCountAggregationBuilder extends ValuesSourceAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(ValueCountAggregationBuilder.NAME); - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java index efbb100a3947b..54c4e4bd5994f 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java @@ -32,12 +32,6 @@ public final class ValuesSourceParserHelper { private ValuesSourceParserHelper() {} // utility class, no instantiation - public static void declareNonTimezoneFields( - AbstractObjectParser, T> objectParser, - boolean scriptable, boolean formattable) { - declareFields(objectParser, scriptable, formattable, false); - } - public static void declareFields( AbstractObjectParser, T> objectParser, boolean scriptable, boolean formattable, boolean timezoneAware) { diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java index 75d31843a82d5..daa1750e14928 100644 --- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java +++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java @@ -35,7 +35,7 @@ public class BoxplotAggregationBuilder extends ValuesSourceAggregationBuilder.Le public static final ObjectParser PARSER = ObjectParser.fromBuilder(NAME, BoxplotAggregationBuilder::new); static { - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); PARSER.declareDouble(BoxplotAggregationBuilder::compression, COMPRESSION_FIELD); } diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java index cdfefa7eb44be..29412f8d187fd 100644 --- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java +++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java @@ -33,7 +33,7 @@ public class StringStatsAggregationBuilder extends ValuesSourceAggregationBuilde public static final ObjectParser PARSER = ObjectParser.fromBuilder(NAME, StringStatsAggregationBuilder::new); static { - ValuesSourceParserHelper.declareNonTimezoneFields(PARSER, true, true); + ValuesSourceParserHelper.declareFields(PARSER, true, true, false); PARSER.declareBoolean(StringStatsAggregationBuilder::showDistribution, StringStatsAggregationBuilder.SHOW_DISTRIBUTION_FIELD); } From 494ff47473bc2d266799f7222a63e3713c2a7119 Mon Sep 17 00:00:00 2001 From: Mark Tozzi Date: Thu, 5 Mar 2020 15:49:22 -0500 Subject: [PATCH 03/10] No reason to keep the helper to just hold one function --- .../geogrid/GeoGridAggregationBuilder.java | 3 +- .../AutoDateHistogramAggregationBuilder.java | 3 +- .../DateHistogramAggregationBuilder.java | 3 +- .../HistogramAggregationBuilder.java | 3 +- .../missing/MissingAggregationBuilder.java | 3 +- .../range/DateRangeAggregationBuilder.java | 4 +- .../range/GeoDistanceAggregationBuilder.java | 3 +- .../range/IpRangeAggregationBuilder.java | 3 +- .../bucket/range/RangeAggregationBuilder.java | 4 +- .../DiversifiedAggregationBuilder.java | 3 +- .../SignificantTermsAggregationBuilder.java | 3 +- .../terms/RareTermsAggregationBuilder.java | 3 +- .../bucket/terms/TermsAggregationBuilder.java | 3 +- ...AbstractPercentilesAggregationBuilder.java | 3 +- .../metrics/AvgAggregationBuilder.java | 3 +- .../CardinalityAggregationBuilder.java | 3 +- .../ExtendedStatsAggregationBuilder.java | 3 +- .../metrics/GeoBoundsAggregationBuilder.java | 3 +- .../GeoCentroidAggregationBuilder.java | 3 +- .../metrics/MaxAggregationBuilder.java | 3 +- ...anAbsoluteDeviationAggregationBuilder.java | 4 +- .../metrics/MinAggregationBuilder.java | 3 +- .../metrics/StatsAggregationBuilder.java | 3 +- .../metrics/SumAggregationBuilder.java | 3 +- .../metrics/ValueCountAggregationBuilder.java | 3 +- .../ValuesSourceAggregationBuilder.java | 41 +++++++++++ .../support/ValuesSourceParserHelper.java | 73 ------------------- .../boxplot/BoxplotAggregationBuilder.java | 3 +- .../StringStatsAggregationBuilder.java | 3 +- 29 files changed, 71 insertions(+), 127 deletions(-) delete mode 100644 server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java index 31446e77b58f8..df6cc702b872b 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoGridAggregationBuilder.java @@ -38,7 +38,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -65,7 +64,7 @@ protected interface PrecisionParser { public static ObjectParser createParser(String name, PrecisionParser precisionParser) { ObjectParser parser = new ObjectParser<>(name); - ValuesSourceParserHelper.declareFields(parser, false, false, false); + ValuesSourceAggregationBuilder.declareFields(parser, false, false, false); parser.declareField((p, builder, context) -> builder.precision(precisionParser.parse(p)), FIELD_PRECISION, org.elasticsearch.common.xcontent.ObjectParser.ValueType.INT); parser.declareInt(GeoGridAggregationBuilder::size, FIELD_SIZE); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/AutoDateHistogramAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/AutoDateHistogramAggregationBuilder.java index dc46da935c82c..7d299263b3eb0 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/AutoDateHistogramAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/AutoDateHistogramAggregationBuilder.java @@ -38,7 +38,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -60,7 +59,7 @@ public class AutoDateHistogramAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(AutoDateHistogramAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, true); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, true); PARSER.declareInt(AutoDateHistogramAggregationBuilder::setNumBuckets, NUM_BUCKETS_FIELD); PARSER.declareStringOrNull(AutoDateHistogramAggregationBuilder::setMinimumIntervalExpression, MINIMUM_INTERVAL_FIELD); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramAggregationBuilder.java index 2d8540052d201..353d125f4a16c 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramAggregationBuilder.java @@ -49,7 +49,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -93,7 +92,7 @@ public class DateHistogramAggregationBuilder extends ValuesSourceAggregationBuil private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(DateHistogramAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, true); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, true); DateIntervalWrapper.declareIntervalFields(PARSER); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java index 020143a66970c..4c164abc5a0e5 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregationBuilder.java @@ -37,7 +37,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -65,7 +64,7 @@ public class HistogramAggregationBuilder extends ValuesSourceAggregationBuilder< private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(HistogramAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); PARSER.declareDouble(HistogramAggregationBuilder::interval, Histogram.INTERVAL_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java index b5abdc0278ee7..60c7ccb6747b6 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java @@ -33,7 +33,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -45,7 +44,7 @@ public class MissingAggregationBuilder extends ValuesSourceAggregationBuilder PARSER; static { PARSER = new ObjectParser<>(MissingAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); } public static MissingAggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/DateRangeAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/DateRangeAggregationBuilder.java index 03d702731bda7..4d155e8e7564d 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/DateRangeAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/DateRangeAggregationBuilder.java @@ -28,8 +28,8 @@ import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.support.CoreValuesSourceType; +import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -43,7 +43,7 @@ public class DateRangeAggregationBuilder extends AbstractRangeBuilder PARSER; static { PARSER = new ObjectParser<>(DateRangeAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, true); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, true); PARSER.declareBoolean(DateRangeAggregationBuilder::keyed, RangeAggregator.KEYED_FIELD); PARSER.declareObjectArray((agg, ranges) -> { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java index 9124aebe4ba9f..0d85cebce3069 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregationBuilder.java @@ -39,7 +39,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -61,7 +60,7 @@ public class GeoDistanceAggregationBuilder extends ValuesSourceAggregationBuilde private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoDistanceAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, false, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, false, false); PARSER.declareBoolean(GeoDistanceAggregationBuilder::keyed, RangeAggregator.KEYED_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java index 9af72b2500bf5..e3a8ab712b338 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/IpRangeAggregationBuilder.java @@ -40,7 +40,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -61,7 +60,7 @@ public final class IpRangeAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(IpRangeAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, false, false, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, false, false, false); PARSER.declareBoolean(IpRangeAggregationBuilder::keyed, RangeAggregator.KEYED_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregationBuilder.java index d5fba6c6dac54..bf030e81ebf7f 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregationBuilder.java @@ -28,8 +28,8 @@ import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.bucket.range.RangeAggregator.Range; +import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import java.io.IOException; @@ -41,7 +41,7 @@ public class RangeAggregationBuilder extends AbstractRangeBuilder PARSER; static { PARSER = new ObjectParser<>(RangeAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); PARSER.declareBoolean(RangeAggregationBuilder::keyed, RangeAggregator.KEYED_FIELD); PARSER.declareObjectArray((agg, ranges) -> { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java index 624a6af53dce6..e3f4b391856fc 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilder.java @@ -32,7 +32,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -47,7 +46,7 @@ public class DiversifiedAggregationBuilder extends ValuesSourceAggregationBuilde private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(DiversifiedAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, false, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, false, false); PARSER.declareInt(DiversifiedAggregationBuilder::shardSize, SamplerAggregator.SHARD_SIZE_FIELD); PARSER.declareInt(DiversifiedAggregationBuilder::maxDocsPerValue, SamplerAggregator.MAX_DOCS_PER_VALUE_FIELD); PARSER.declareString(DiversifiedAggregationBuilder::executionHint, SamplerAggregator.EXECUTION_HINT_FIELD); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java index 2879db2295112..702f929a2fe2b 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java @@ -42,7 +42,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -67,7 +66,7 @@ public class SignificantTermsAggregationBuilder extends ValuesSourceAggregationB SignificantTermsAggregationBuilder.NAME, SignificanceHeuristic.class, SignificantTermsAggregationBuilder::significanceHeuristic, null); static { - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); PARSER.declareInt(SignificantTermsAggregationBuilder::shardSize, TermsAggregationBuilder.SHARD_SIZE_FIELD_NAME); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java index 800f05cd0f138..97da3945bfc35 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/RareTermsAggregationBuilder.java @@ -33,7 +33,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -51,7 +50,7 @@ public class RareTermsAggregationBuilder extends ValuesSourceAggregationBuilder< private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(RareTermsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); PARSER.declareLong(RareTermsAggregationBuilder::maxDocCount, MAX_DOC_COUNT_FIELD_NAME); PARSER.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(v, b.includeExclude())), diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java index 63624d822a0b4..bc0295478399c 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregationBuilder.java @@ -41,7 +41,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -68,7 +67,7 @@ public class TermsAggregationBuilder extends ValuesSourceAggregationBuilder PARSER; static { PARSER = new ObjectParser<>(TermsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); PARSER.declareBoolean(TermsAggregationBuilder::showTermDocCountError, TermsAggregationBuilder.SHOW_TERM_DOC_COUNT_ERROR); diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java index 3583bf2c3ab46..b9cbc3474a04d 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AbstractPercentilesAggregationBuilder.java @@ -30,7 +30,6 @@ import org.elasticsearch.search.aggregations.AggregatorFactories; import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import java.io.IOException; import java.util.Arrays; @@ -105,7 +104,7 @@ public static > ConstructingO return ctor.apply(name, values, percentilesConfig); }); - ValuesSourceParserHelper.declareFields(parser, true, true, false); + ValuesSourceAggregationBuilder.declareFields(parser, true, true, false); parser.declareDoubleArray(ConstructingObjectParser.optionalConstructorArg(), valuesField); parser.declareBoolean(T::keyed, KEYED_FIELD); parser.declareObject(ConstructingObjectParser.optionalConstructorArg(), PercentilesMethod.TDIGEST_PARSER, diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AvgAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AvgAggregationBuilder.java index 615f26bccbf74..353728dde5671 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AvgAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/AvgAggregationBuilder.java @@ -31,7 +31,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.CoreValuesSourceType; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -44,7 +43,7 @@ public class AvgAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOn private static final ObjectParser PARSER = ObjectParser.fromBuilder(NAME, AvgAggregationBuilder::new); static { - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java index c40e0282326ff..801e0a046f59e 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/CardinalityAggregationBuilder.java @@ -34,7 +34,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -53,7 +52,7 @@ public final class CardinalityAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(CardinalityAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, false, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, false, false); PARSER.declareLong(CardinalityAggregationBuilder::precisionThreshold, CardinalityAggregationBuilder.PRECISION_THRESHOLD_FIELD); PARSER.declareLong((b, v) -> {/*ignore*/}, REHASH); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ExtendedStatsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ExtendedStatsAggregationBuilder.java index 1d675a0165399..d8c61706d8ba2 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ExtendedStatsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ExtendedStatsAggregationBuilder.java @@ -32,7 +32,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -46,7 +45,7 @@ public class ExtendedStatsAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(ExtendedStatsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); PARSER.declareDouble(ExtendedStatsAggregationBuilder::sigma, ExtendedStatsAggregator.SIGMA_FIELD); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java index 696fc6caab7ff..0098323b851d2 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoBoundsAggregationBuilder.java @@ -31,7 +31,6 @@ import org.elasticsearch.search.aggregations.support.CoreValuesSourceType; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -44,7 +43,7 @@ public class GeoBoundsAggregationBuilder extends ValuesSourceAggregationBuilder< private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoBoundsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, false, false, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, false, false, false); PARSER.declareBoolean(GeoBoundsAggregationBuilder::wrapLongitude, GeoBoundsAggregator.WRAP_LONGITUDE_FIELD); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java index 59ef499a3c79b..dd7b2d287c6ec 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidAggregationBuilder.java @@ -32,7 +32,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -45,7 +44,7 @@ public class GeoCentroidAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(GeoCentroidAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, false, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, false, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MaxAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MaxAggregationBuilder.java index 26f079bf7b25b..79a8ece0e4123 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MaxAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MaxAggregationBuilder.java @@ -32,7 +32,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -45,7 +44,7 @@ public class MaxAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOn private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(MaxAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MedianAbsoluteDeviationAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MedianAbsoluteDeviationAggregationBuilder.java index babafd5d47cdb..eed557ea5ebdb 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MedianAbsoluteDeviationAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MedianAbsoluteDeviationAggregationBuilder.java @@ -31,10 +31,10 @@ import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.support.CoreValuesSourceType; import org.elasticsearch.search.aggregations.support.ValuesSource; +import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder.LeafOnly; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -52,7 +52,7 @@ public class MedianAbsoluteDeviationAggregationBuilder extends LeafOnly(NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); PARSER.declareDouble(MedianAbsoluteDeviationAggregationBuilder::compression, COMPRESSION_FIELD); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MinAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MinAggregationBuilder.java index be6410db8fce5..df67238893fe4 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MinAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/MinAggregationBuilder.java @@ -32,7 +32,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -45,7 +44,7 @@ public class MinAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOn private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(AvgAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/StatsAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/StatsAggregationBuilder.java index 571a86073e7d9..a30abe9c8ebd2 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/StatsAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/StatsAggregationBuilder.java @@ -32,7 +32,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -45,7 +44,7 @@ public class StatsAggregationBuilder extends ValuesSourceAggregationBuilder.Leaf private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(StatsAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/SumAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/SumAggregationBuilder.java index 8d103eb9a258c..18adeb3f2f0cc 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/SumAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/SumAggregationBuilder.java @@ -32,7 +32,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -45,7 +44,7 @@ public class SumAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOn private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(SumAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java index 2f7d925530a87..9d17233b518e6 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java @@ -33,7 +33,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -46,7 +45,7 @@ public class ValueCountAggregationBuilder extends ValuesSourceAggregationBuilder private static final ObjectParser PARSER; static { PARSER = new ObjectParser<>(ValueCountAggregationBuilder.NAME); - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); } public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java index 6e6213938c754..e1d9a42a59414 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java @@ -19,9 +19,13 @@ package org.elasticsearch.search.aggregations.support; import org.elasticsearch.Version; +import org.elasticsearch.common.ParseField; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; +import org.elasticsearch.common.xcontent.AbstractObjectParser; +import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; @@ -31,12 +35,49 @@ import java.io.IOException; import java.time.ZoneId; +import java.time.ZoneOffset; import java.util.Map; import java.util.Objects; public abstract class ValuesSourceAggregationBuilder> extends AbstractAggregationBuilder { + public static void declareFields( + AbstractObjectParser, T> objectParser, + boolean scriptable, boolean formattable, boolean timezoneAware) { + + + objectParser.declareField(ValuesSourceAggregationBuilder::field, XContentParser::text, + ParseField.CommonFields.FIELD, ObjectParser.ValueType.STRING); + + objectParser.declareField(ValuesSourceAggregationBuilder::missing, XContentParser::objectText, + ParseField.CommonFields.MISSING, ObjectParser.ValueType.VALUE); + + objectParser.declareField(ValuesSourceAggregationBuilder::userValueTypeHint, p -> ValueType.resolveForScript(p.text()), + ValueType.VALUE_TYPE, ObjectParser.ValueType.STRING); + + if (formattable) { + objectParser.declareField(ValuesSourceAggregationBuilder::format, XContentParser::text, + ParseField.CommonFields.FORMAT, ObjectParser.ValueType.STRING); + } + + if (scriptable) { + objectParser.declareField(ValuesSourceAggregationBuilder::script, + (parser, context) -> Script.parse(parser), + Script.SCRIPT_PARSE_FIELD, ObjectParser.ValueType.OBJECT_OR_STRING); + } + + if (timezoneAware) { + objectParser.declareField(ValuesSourceAggregationBuilder::timeZone, p -> { + if (p.currentToken() == XContentParser.Token.VALUE_STRING) { + return ZoneId.of(p.text()); + } else { + return ZoneOffset.ofHours(p.intValue()); + } + }, ParseField.CommonFields.TIME_ZONE, ObjectParser.ValueType.LONG); + } + } + public abstract static class LeafOnly> extends ValuesSourceAggregationBuilder { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java deleted file mode 100644 index 54c4e4bd5994f..0000000000000 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceParserHelper.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.search.aggregations.support; - -import org.elasticsearch.common.ParseField; -import org.elasticsearch.common.xcontent.AbstractObjectParser; -import org.elasticsearch.common.xcontent.ObjectParser; -import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.script.Script; - -import java.time.ZoneId; -import java.time.ZoneOffset; - -public final class ValuesSourceParserHelper { - - private ValuesSourceParserHelper() {} // utility class, no instantiation - - public static void declareFields( - AbstractObjectParser, T> objectParser, - boolean scriptable, boolean formattable, boolean timezoneAware) { - - - objectParser.declareField(ValuesSourceAggregationBuilder::field, XContentParser::text, - ParseField.CommonFields.FIELD, ObjectParser.ValueType.STRING); - - objectParser.declareField(ValuesSourceAggregationBuilder::missing, XContentParser::objectText, - ParseField.CommonFields.MISSING, ObjectParser.ValueType.VALUE); - - objectParser.declareField(ValuesSourceAggregationBuilder::userValueTypeHint, p -> ValueType.resolveForScript(p.text()), - ValueType.VALUE_TYPE, ObjectParser.ValueType.STRING); - - if (formattable) { - objectParser.declareField(ValuesSourceAggregationBuilder::format, XContentParser::text, - ParseField.CommonFields.FORMAT, ObjectParser.ValueType.STRING); - } - - if (scriptable) { - objectParser.declareField(ValuesSourceAggregationBuilder::script, - (parser, context) -> Script.parse(parser), - Script.SCRIPT_PARSE_FIELD, ObjectParser.ValueType.OBJECT_OR_STRING); - } - - if (timezoneAware) { - objectParser.declareField(ValuesSourceAggregationBuilder::timeZone, p -> { - if (p.currentToken() == XContentParser.Token.VALUE_STRING) { - return ZoneId.of(p.text()); - } else { - return ZoneOffset.ofHours(p.intValue()); - } - }, ParseField.CommonFields.TIME_ZONE, ObjectParser.ValueType.LONG); - } - } - - - -} diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java index daa1750e14928..a683f175d175f 100644 --- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java +++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/boxplot/BoxplotAggregationBuilder.java @@ -19,7 +19,6 @@ import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; @@ -35,7 +34,7 @@ public class BoxplotAggregationBuilder extends ValuesSourceAggregationBuilder.Le public static final ObjectParser PARSER = ObjectParser.fromBuilder(NAME, BoxplotAggregationBuilder::new); static { - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); PARSER.declareDouble(BoxplotAggregationBuilder::compression, COMPRESSION_FIELD); } diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java index 29412f8d187fd..e12cd047234eb 100644 --- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java +++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/stringstats/StringStatsAggregationBuilder.java @@ -17,7 +17,6 @@ import org.elasticsearch.search.aggregations.support.CoreValuesSourceType; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper; import org.elasticsearch.search.aggregations.support.ValuesSourceRegistry; import org.elasticsearch.search.aggregations.support.ValuesSourceType; @@ -33,7 +32,7 @@ public class StringStatsAggregationBuilder extends ValuesSourceAggregationBuilde public static final ObjectParser PARSER = ObjectParser.fromBuilder(NAME, StringStatsAggregationBuilder::new); static { - ValuesSourceParserHelper.declareFields(PARSER, true, true, false); + ValuesSourceAggregationBuilder.declareFields(PARSER, true, true, false); PARSER.declareBoolean(StringStatsAggregationBuilder::showDistribution, StringStatsAggregationBuilder.SHOW_DISTRIBUTION_FIELD); } From 901195b1467ceb9da9051680cef6f5434f4bf45e Mon Sep 17 00:00:00 2001 From: Mark Tozzi Date: Thu, 5 Mar 2020 17:16:23 -0500 Subject: [PATCH 04/10] remove isA usage from MultiVSAB --- .../support/MultiValuesSourceParseHelper.java | 9 +++++++-- .../search/aggregations/support/ValueTypeTests.java | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java index 3bbb8bfb702fc..5016c8155d06a 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java @@ -25,15 +25,20 @@ import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentParser; +import java.util.Set; + public final class MultiValuesSourceParseHelper { - public static void declareCommon( + // FIXME: Hard coding here to support WeightedAverage. See https://github.com/elastic/elasticsearch/issues/53194 + private static Set expectedValueTypes = Set.of(ValueType.DOUBLE, ValueType.LONG, ValueType.NUMERIC, ValueType.NUMBER); + + public static void declareCommon( AbstractObjectParser, T> objectParser, boolean formattable, ValueType expectedValueType) { objectParser.declareField(MultiValuesSourceAggregationBuilder::userValueTypeHint, p -> { ValueType valueType = ValueType.resolveForScript(p.text()); - if (expectedValueType != null && valueType.isNotA(expectedValueType)) { + if (expectedValueTypes.contains(valueType) == false) { throw new ParsingException(p.getTokenLocation(), "Aggregation [" + objectParser.getName() + "] was configured with an incompatible value type [" + valueType + "]. It can only work on value off type [" diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/support/ValueTypeTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/support/ValueTypeTests.java index 55ae7deb52a04..70fa4620c9a3d 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/support/ValueTypeTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/support/ValueTypeTests.java @@ -35,7 +35,7 @@ public void testResolve() { assertEquals(ValueType.IP, ValueType.resolveForScript("ip")); assertEquals(ValueType.BOOLEAN, ValueType.resolveForScript("boolean")); } - + public void testCompatibility() { assertTrue(ValueType.DOUBLE.isA(ValueType.NUMERIC)); assertTrue(ValueType.DOUBLE.isA(ValueType.NUMBER)); From 50cf3c44d744a158ce69fb417c34a466c09a2846 Mon Sep 17 00:00:00 2001 From: Mark Tozzi Date: Thu, 5 Mar 2020 17:17:16 -0500 Subject: [PATCH 05/10] rename for clarity (and shade) --- .../CompositeValuesSourceParserHelper.java | 2 +- .../support/MultiValuesSourceParseHelper.java | 2 +- .../aggregations/support/ValueType.java | 2 +- .../ValuesSourceAggregationBuilder.java | 2 +- .../aggregations/support/ValueTypeTests.java | 20 +++++++++---------- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceParserHelper.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceParserHelper.java index e7b152de93266..230eb5de2daf4 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceParserHelper.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceParserHelper.java @@ -44,7 +44,7 @@ static , T> void declareValuesSource objectParser.declareBoolean(VB::missingBucket, new ParseField("missing_bucket")); objectParser.declareField(VB::valueType, p -> { - ValueType valueType = ValueType.resolveForScript(p.text()); + ValueType valueType = ValueType.lenientParse(p.text()); if (expectedValueType != null && valueType.isNotA(expectedValueType)) { throw new ParsingException(p.getTokenLocation(), "Aggregation [" + objectParser.getName() + "] was configured with an incompatible value type [" diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java index 5016c8155d06a..ece7246c24641 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java @@ -37,7 +37,7 @@ public static void declareCommon( ValueType expectedValueType) { objectParser.declareField(MultiValuesSourceAggregationBuilder::userValueTypeHint, p -> { - ValueType valueType = ValueType.resolveForScript(p.text()); + ValueType valueType = ValueType.lenientParse(p.text()); if (expectedValueTypes.contains(valueType) == false) { throw new ParsingException(p.getTokenLocation(), "Aggregation [" + objectParser.getName() + "] was configured with an incompatible value type [" diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java index c2fbab66028ce..44e7c1179b070 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java @@ -84,7 +84,7 @@ public DocValueFormat defaultFormat() { return defaultFormat; } - public static ValueType resolveForScript(String type) { + public static ValueType lenientParse(String type) { switch (type) { case "string": return STRING; case "double": diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java index e1d9a42a59414..f7bdecfa3e448 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregationBuilder.java @@ -53,7 +53,7 @@ public static void declareFields( objectParser.declareField(ValuesSourceAggregationBuilder::missing, XContentParser::objectText, ParseField.CommonFields.MISSING, ObjectParser.ValueType.VALUE); - objectParser.declareField(ValuesSourceAggregationBuilder::userValueTypeHint, p -> ValueType.resolveForScript(p.text()), + objectParser.declareField(ValuesSourceAggregationBuilder::userValueTypeHint, p -> ValueType.lenientParse(p.text()), ValueType.VALUE_TYPE, ObjectParser.ValueType.STRING); if (formattable) { diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/support/ValueTypeTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/support/ValueTypeTests.java index 70fa4620c9a3d..9bc7eb9a22988 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/support/ValueTypeTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/support/ValueTypeTests.java @@ -24,16 +24,16 @@ public class ValueTypeTests extends ESTestCase { public void testResolve() { - assertEquals(ValueType.STRING, ValueType.resolveForScript("string")); - assertEquals(ValueType.DOUBLE, ValueType.resolveForScript("float")); - assertEquals(ValueType.DOUBLE, ValueType.resolveForScript("double")); - assertEquals(ValueType.LONG, ValueType.resolveForScript("byte")); - assertEquals(ValueType.LONG, ValueType.resolveForScript("short")); - assertEquals(ValueType.LONG, ValueType.resolveForScript("integer")); - assertEquals(ValueType.LONG, ValueType.resolveForScript("long")); - assertEquals(ValueType.DATE, ValueType.resolveForScript("date")); - assertEquals(ValueType.IP, ValueType.resolveForScript("ip")); - assertEquals(ValueType.BOOLEAN, ValueType.resolveForScript("boolean")); + assertEquals(ValueType.STRING, ValueType.lenientParse("string")); + assertEquals(ValueType.DOUBLE, ValueType.lenientParse("float")); + assertEquals(ValueType.DOUBLE, ValueType.lenientParse("double")); + assertEquals(ValueType.LONG, ValueType.lenientParse("byte")); + assertEquals(ValueType.LONG, ValueType.lenientParse("short")); + assertEquals(ValueType.LONG, ValueType.lenientParse("integer")); + assertEquals(ValueType.LONG, ValueType.lenientParse("long")); + assertEquals(ValueType.DATE, ValueType.lenientParse("date")); + assertEquals(ValueType.IP, ValueType.lenientParse("ip")); + assertEquals(ValueType.BOOLEAN, ValueType.lenientParse("boolean")); } public void testCompatibility() { From a830d6d6402b471b6ea30e42f55f85d980f42a67 Mon Sep 17 00:00:00 2001 From: Mark Tozzi Date: Fri, 6 Mar 2020 11:57:23 -0500 Subject: [PATCH 06/10] move isA hard coded logic into ValueType --- .../CompositeValuesSourceParserHelper.java | 3 +- .../support/CoreValuesSourceType.java | 35 +++++-------------- .../aggregations/support/ValueType.java | 21 ++++++++++- .../support/ValuesSourceType.java | 3 -- 4 files changed, 30 insertions(+), 32 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceParserHelper.java b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceParserHelper.java index 230eb5de2daf4..3328e95527949 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceParserHelper.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceParserHelper.java @@ -26,9 +26,9 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.AbstractObjectParser; import org.elasticsearch.common.xcontent.ObjectParser; +import org.elasticsearch.common.xcontent.ToXContent.Params; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.common.xcontent.ToXContent.Params; import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.support.ValueType; @@ -37,6 +37,7 @@ import static org.elasticsearch.common.xcontent.XContentParserUtils.ensureExpectedToken; public class CompositeValuesSourceParserHelper { + static , T> void declareValuesSourceFields(AbstractObjectParser objectParser, ValueType expectedValueType) { objectParser.declareField(VB::field, XContentParser::text, diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/CoreValuesSourceType.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/CoreValuesSourceType.java index a433c53ca9c93..860a42b088996 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/CoreValuesSourceType.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/CoreValuesSourceType.java @@ -43,7 +43,7 @@ * {@link CoreValuesSourceType} holds the {@link ValuesSourceType} implementations for the core aggregations package. */ public enum CoreValuesSourceType implements ValuesSourceType { - NUMERIC(EquivalenceType.NUMBER) { + NUMERIC() { @Override public ValuesSource getEmpty() { return ValuesSource.Numeric.EMPTY; @@ -77,7 +77,7 @@ public ValuesSource replaceMissing(ValuesSource valuesSource, Object rawMissing, return MissingValues.replaceMissing((ValuesSource.Numeric) valuesSource, missing); } }, - BYTES(EquivalenceType.STRING) { + BYTES() { @Override public ValuesSource getEmpty() { return ValuesSource.Bytes.WithOrdinals.EMPTY; @@ -114,7 +114,7 @@ public ValuesSource replaceMissing(ValuesSource valuesSource, Object rawMissing, } } }, - GEOPOINT(EquivalenceType.GEO) { + GEOPOINT() { @Override public ValuesSource getEmpty() { return ValuesSource.GeoPoint.EMPTY; @@ -148,7 +148,7 @@ public DocValueFormat getFormatter(String format, ZoneId tz) { return DocValueFormat.GEOHASH; } }, - RANGE(EquivalenceType.RANGE) { + RANGE() { @Override public ValuesSource getEmpty() { // TODO: Is this the correct exception type here? @@ -177,7 +177,7 @@ public ValuesSource replaceMissing(ValuesSource valuesSource, Object rawMissing, throw new IllegalArgumentException("Can't apply missing values on a " + valuesSource.getClass()); } }, - HISTOGRAM(EquivalenceType.HISTOGRAM) { + HISTOGRAM() { @Override public ValuesSource getEmpty() { // TODO: Is this the correct exception type here? @@ -205,8 +205,7 @@ public ValuesSource replaceMissing(ValuesSource valuesSource, Object rawMissing, throw new IllegalArgumentException("Can't apply missing values on a " + valuesSource.getClass()); } }, - // TODO: Ordinal Numbering sync with types from master - IP(EquivalenceType.STRING) { + IP() { @Override public ValuesSource getEmpty() { return BYTES.getEmpty(); @@ -232,7 +231,7 @@ public DocValueFormat getFormatter(String format, ZoneId tz) { return DocValueFormat.IP; } }, - DATE(EquivalenceType.NUMBER) { + DATE() { @Override public ValuesSource getEmpty() { return NUMERIC.getEmpty(); @@ -263,7 +262,7 @@ public DocValueFormat getFormatter(String format, ZoneId tz) { DateFieldMapper.Resolution.MILLISECONDS); } }, - BOOLEAN(EquivalenceType.NUMBER) { + BOOLEAN() { @Override public ValuesSource getEmpty() { return NUMERIC.getEmpty(); @@ -291,24 +290,6 @@ public DocValueFormat getFormatter(String format, ZoneId tz) { } ; - enum EquivalenceType { - STRING, NUMBER, GEO, RANGE, HISTOGRAM; - } - - EquivalenceType equivalenceType; - - CoreValuesSourceType(EquivalenceType equivalenceType) { - this.equivalenceType = equivalenceType; - } - @Override - public boolean isCastableTo(ValuesSourceType valuesSourceType) { - if (valuesSourceType instanceof CoreValuesSourceType == false) { - return false; - } - CoreValuesSourceType other = (CoreValuesSourceType) valuesSourceType; - return this.equivalenceType == other.equivalenceType; - } - public static ValuesSourceType fromString(String name) { return valueOf(name.trim().toUpperCase(Locale.ROOT)); } diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java index 44e7c1179b070..f19f2fbad93f5 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java @@ -28,6 +28,7 @@ import java.io.IOException; import java.time.ZoneOffset; +import java.util.Set; public enum ValueType implements Writeable { @@ -72,8 +73,26 @@ public ValuesSourceType getValuesSourceType() { return valuesSourceType; } + static Set numericValueTypes = Set.of(ValueType.DOUBLE, ValueType.DATE, ValueType.LONG, ValueType.NUMBER, ValueType.NUMERIC, + ValueType.BOOLEAN); + static Set stringValueTypes = Set.of(ValueType.STRING, ValueType.IP); + + /** + * This is a bit of a hack to mirror the old {@link ValueType} behavior, which would allow a rough compatibility between types. This + * behavior is being phased out in the aggregations framework, in favor of explicitly listing supported types, but we haven't gotten + * to fixing composite yet. + * + * @param valueType The value type the user suggested + * @return True iff the two value types are interchangeable + */ public boolean isA(ValueType valueType) { - return valueType.valuesSourceType.isCastableTo(valuesSourceType); + if (numericValueTypes.contains(this)) { + return numericValueTypes.contains(valueType); + } + if (stringValueTypes.contains(this)) { + return stringValueTypes.contains(valueType); + } + return this.equals(valueType); } public boolean isNotA(ValueType valueType) { diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceType.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceType.java index d18438827bbc4..040ede186c7ab 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceType.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceType.java @@ -85,7 +85,4 @@ ValuesSource replaceMissing(ValuesSource valuesSource, Object rawMissing, DocVal default DocValueFormat getFormatter(String format, ZoneId tz) { return DocValueFormat.RAW; } - - // TODO: This is scaffolding to shore up the parser logic while we're still refactoring. Don't merge this to master - boolean isCastableTo(ValuesSourceType valuesSourceType); } From b2f83fc8573740795ebf1d9807adc61256b02ded Mon Sep 17 00:00:00 2001 From: Mark Tozzi Date: Fri, 6 Mar 2020 12:13:57 -0500 Subject: [PATCH 07/10] Undo duplicate hack --- .../aggregations/support/MultiValuesSourceParseHelper.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java index ece7246c24641..bafa6426480be 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSourceParseHelper.java @@ -25,20 +25,15 @@ import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentParser; -import java.util.Set; - public final class MultiValuesSourceParseHelper { - // FIXME: Hard coding here to support WeightedAverage. See https://github.com/elastic/elasticsearch/issues/53194 - private static Set expectedValueTypes = Set.of(ValueType.DOUBLE, ValueType.LONG, ValueType.NUMERIC, ValueType.NUMBER); - public static void declareCommon( AbstractObjectParser, T> objectParser, boolean formattable, ValueType expectedValueType) { objectParser.declareField(MultiValuesSourceAggregationBuilder::userValueTypeHint, p -> { ValueType valueType = ValueType.lenientParse(p.text()); - if (expectedValueTypes.contains(valueType) == false) { + if (expectedValueType != null && valueType.isNotA(expectedValueType)) { throw new ParsingException(p.getTokenLocation(), "Aggregation [" + objectParser.getName() + "] was configured with an incompatible value type [" + valueType + "]. It can only work on value off type [" From 62d6227b194a0aaaa45b45ce30420cd2e2af814e Mon Sep 17 00:00:00 2001 From: Mark Tozzi Date: Fri, 6 Mar 2020 12:26:59 -0500 Subject: [PATCH 08/10] these can be private --- .../elasticsearch/search/aggregations/support/ValueType.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java index f19f2fbad93f5..e4f961942055d 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java @@ -73,9 +73,9 @@ public ValuesSourceType getValuesSourceType() { return valuesSourceType; } - static Set numericValueTypes = Set.of(ValueType.DOUBLE, ValueType.DATE, ValueType.LONG, ValueType.NUMBER, ValueType.NUMERIC, + private static Set numericValueTypes = Set.of(ValueType.DOUBLE, ValueType.DATE, ValueType.LONG, ValueType.NUMBER, ValueType.NUMERIC, ValueType.BOOLEAN); - static Set stringValueTypes = Set.of(ValueType.STRING, ValueType.IP); + private static Set stringValueTypes = Set.of(ValueType.STRING, ValueType.IP); /** * This is a bit of a hack to mirror the old {@link ValueType} behavior, which would allow a rough compatibility between types. This From b4709cc79a71a37acb5607bf2c5c1c249e91c34c Mon Sep 17 00:00:00 2001 From: Mark Tozzi Date: Fri, 6 Mar 2020 12:38:31 -0500 Subject: [PATCH 09/10] Fix checkstyle --- .../elasticsearch/search/aggregations/support/ValueType.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java index e4f961942055d..068790030bd49 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/support/ValueType.java @@ -73,8 +73,8 @@ public ValuesSourceType getValuesSourceType() { return valuesSourceType; } - private static Set numericValueTypes = Set.of(ValueType.DOUBLE, ValueType.DATE, ValueType.LONG, ValueType.NUMBER, ValueType.NUMERIC, - ValueType.BOOLEAN); + private static Set numericValueTypes = Set.of(ValueType.DOUBLE, ValueType.DATE, ValueType.LONG, ValueType.NUMBER, + ValueType.NUMERIC, ValueType.BOOLEAN); private static Set stringValueTypes = Set.of(ValueType.STRING, ValueType.IP); /** From f82ebe39935938e2a066c6dfa17a49f483e3fcb2 Mon Sep 17 00:00:00 2001 From: Mark Tozzi Date: Thu, 12 Mar 2020 16:46:54 -0400 Subject: [PATCH 10/10] fix AnalyticsVST complie error - forgot to add the file when merging --- .../support/AnalyticsValuesSourceType.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/aggregations/support/AnalyticsValuesSourceType.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/aggregations/support/AnalyticsValuesSourceType.java index 7c4bbfd8da13d..8ff07fda257b5 100644 --- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/aggregations/support/AnalyticsValuesSourceType.java +++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/aggregations/support/AnalyticsValuesSourceType.java @@ -10,7 +10,6 @@ import org.elasticsearch.script.AggregationScript; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.aggregations.AggregationExecutionException; -import org.elasticsearch.search.aggregations.support.CoreValuesSourceType; import org.elasticsearch.search.aggregations.support.FieldContext; import org.elasticsearch.search.aggregations.support.ValueType; import org.elasticsearch.search.aggregations.support.ValuesSource; @@ -50,17 +49,6 @@ public ValuesSource replaceMissing(ValuesSource valuesSource, Object rawMissing, }; - @Override - public boolean isCastableTo(ValuesSourceType valuesSourceType) { - // TODO right now only have to care about Histo, but in future we may - // have types that are castable to CoreValuesSourceTypes - if (valuesSourceType instanceof CoreValuesSourceType) { - return false; - } - AnalyticsValuesSourceType other = (AnalyticsValuesSourceType) valuesSourceType; - return other.value().equals(AnalyticsValuesSourceType.HISTOGRAM.value()); - } - public static ValuesSourceType fromString(String name) { return valueOf(name.trim().toUpperCase(Locale.ROOT)); }