Skip to content

Commit 266d0f3

Browse files
authored
Remove some deprecation warnings parsing aggs (elastic#53026)
With elastic#50871 aggrgations should now be parsed directly by an `ObjectParser` or `ConstructingObjectParser` without the need for the ceremonial `parse` method. This removes 10 of those `parse` methods and parses the aggregation directly from their `ObjectParser`.
1 parent c741e49 commit 266d0f3

12 files changed

+44
-101
lines changed

server/src/main/java/org/elasticsearch/search/SearchModule.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -331,28 +331,28 @@ public Map<String, Highlighter> getHighlighters() {
331331
}
332332

333333
private void registerAggregations(List<SearchPlugin> plugins) {
334-
registerAggregation(new AggregationSpec(AvgAggregationBuilder.NAME, AvgAggregationBuilder::new, AvgAggregationBuilder::parse)
334+
registerAggregation(new AggregationSpec(AvgAggregationBuilder.NAME, AvgAggregationBuilder::new, AvgAggregationBuilder.PARSER)
335335
.addResultReader(InternalAvg::new));
336336
registerAggregation(new AggregationSpec(WeightedAvgAggregationBuilder.NAME, WeightedAvgAggregationBuilder::new,
337-
WeightedAvgAggregationBuilder::parse).addResultReader(InternalWeightedAvg::new));
338-
registerAggregation(new AggregationSpec(SumAggregationBuilder.NAME, SumAggregationBuilder::new, SumAggregationBuilder::parse)
337+
WeightedAvgAggregationBuilder.PARSER).addResultReader(InternalWeightedAvg::new));
338+
registerAggregation(new AggregationSpec(SumAggregationBuilder.NAME, SumAggregationBuilder::new, SumAggregationBuilder.PARSER)
339339
.addResultReader(InternalSum::new));
340-
registerAggregation(new AggregationSpec(MinAggregationBuilder.NAME, MinAggregationBuilder::new, MinAggregationBuilder::parse)
340+
registerAggregation(new AggregationSpec(MinAggregationBuilder.NAME, MinAggregationBuilder::new, MinAggregationBuilder.PARSER)
341341
.addResultReader(InternalMin::new));
342-
registerAggregation(new AggregationSpec(MaxAggregationBuilder.NAME, MaxAggregationBuilder::new, MaxAggregationBuilder::parse)
342+
registerAggregation(new AggregationSpec(MaxAggregationBuilder.NAME, MaxAggregationBuilder::new, MaxAggregationBuilder.PARSER)
343343
.addResultReader(InternalMax::new));
344-
registerAggregation(new AggregationSpec(StatsAggregationBuilder.NAME, StatsAggregationBuilder::new, StatsAggregationBuilder::parse)
344+
registerAggregation(new AggregationSpec(StatsAggregationBuilder.NAME, StatsAggregationBuilder::new, StatsAggregationBuilder.PARSER)
345345
.addResultReader(InternalStats::new));
346346
registerAggregation(new AggregationSpec(ExtendedStatsAggregationBuilder.NAME, ExtendedStatsAggregationBuilder::new,
347-
ExtendedStatsAggregationBuilder::parse).addResultReader(InternalExtendedStats::new));
347+
ExtendedStatsAggregationBuilder.PARSER).addResultReader(InternalExtendedStats::new));
348348
registerAggregation(new AggregationSpec(ValueCountAggregationBuilder.NAME, ValueCountAggregationBuilder::new,
349-
ValueCountAggregationBuilder::parse).addResultReader(InternalValueCount::new));
349+
ValueCountAggregationBuilder.PARSER).addResultReader(InternalValueCount::new));
350350
registerAggregation(new AggregationSpec(PercentilesAggregationBuilder.NAME, PercentilesAggregationBuilder::new,
351-
PercentilesAggregationBuilder::parse)
351+
PercentilesAggregationBuilder.PARSER)
352352
.addResultReader(InternalTDigestPercentiles.NAME, InternalTDigestPercentiles::new)
353353
.addResultReader(InternalHDRPercentiles.NAME, InternalHDRPercentiles::new));
354354
registerAggregation(new AggregationSpec(PercentileRanksAggregationBuilder.NAME, PercentileRanksAggregationBuilder::new,
355-
PercentileRanksAggregationBuilder::parse)
355+
PercentileRanksAggregationBuilder.PARSER)
356356
.addResultReader(InternalTDigestPercentileRanks.NAME, InternalTDigestPercentileRanks::new)
357357
.addResultReader(InternalHDRPercentileRanks.NAME, InternalHDRPercentileRanks::new));
358358
registerAggregation(new AggregationSpec(MedianAbsoluteDeviationAggregationBuilder.NAME,

server/src/main/java/org/elasticsearch/search/aggregations/metrics/AvgAggregationBuilder.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,34 +23,29 @@
2323
import org.elasticsearch.common.io.stream.StreamOutput;
2424
import org.elasticsearch.common.xcontent.ObjectParser;
2525
import org.elasticsearch.common.xcontent.XContentBuilder;
26-
import org.elasticsearch.common.xcontent.XContentParser;
2726
import org.elasticsearch.index.query.QueryShardContext;
2827
import org.elasticsearch.search.aggregations.AggregationBuilder;
2928
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
3029
import org.elasticsearch.search.aggregations.AggregatorFactory;
30+
import org.elasticsearch.search.aggregations.support.CoreValuesSourceType;
3131
import org.elasticsearch.search.aggregations.support.ValueType;
3232
import org.elasticsearch.search.aggregations.support.ValuesSource;
3333
import org.elasticsearch.search.aggregations.support.ValuesSource.Numeric;
3434
import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder;
3535
import org.elasticsearch.search.aggregations.support.ValuesSourceConfig;
3636
import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper;
37-
import org.elasticsearch.search.aggregations.support.CoreValuesSourceType;
3837

3938
import java.io.IOException;
4039
import java.util.Map;
4140

4241
public class AvgAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly<ValuesSource.Numeric, AvgAggregationBuilder> {
4342
public static final String NAME = "avg";
4443

45-
private static final ObjectParser<AvgAggregationBuilder, String> PARSER = ObjectParser.fromBuilder(NAME, AvgAggregationBuilder::new);
44+
public static final ObjectParser<AvgAggregationBuilder, String> PARSER = ObjectParser.fromBuilder(NAME, AvgAggregationBuilder::new);
4645
static {
4746
ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false);
4847
}
4948

50-
public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException {
51-
return PARSER.parse(parser, aggregationName);
52-
}
53-
5449
public AvgAggregationBuilder(String name) {
5550
super(name, CoreValuesSourceType.NUMERIC, ValueType.NUMERIC);
5651
}

server/src/main/java/org/elasticsearch/search/aggregations/metrics/ExtendedStatsAggregationBuilder.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.elasticsearch.common.io.stream.StreamOutput;
2424
import org.elasticsearch.common.xcontent.ObjectParser;
2525
import org.elasticsearch.common.xcontent.XContentBuilder;
26-
import org.elasticsearch.common.xcontent.XContentParser;
2726
import org.elasticsearch.index.query.QueryShardContext;
2827
import org.elasticsearch.search.aggregations.AggregationBuilder;
2928
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
@@ -44,17 +43,13 @@ public class ExtendedStatsAggregationBuilder
4443
extends ValuesSourceAggregationBuilder.LeafOnly<ValuesSource.Numeric, ExtendedStatsAggregationBuilder> {
4544
public static final String NAME = "extended_stats";
4645

47-
private static final ObjectParser<ExtendedStatsAggregationBuilder, Void> PARSER;
46+
public static final ObjectParser<ExtendedStatsAggregationBuilder, String> PARSER =
47+
ObjectParser.fromBuilder(NAME, ExtendedStatsAggregationBuilder::new);
4848
static {
49-
PARSER = new ObjectParser<>(ExtendedStatsAggregationBuilder.NAME);
5049
ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false);
5150
PARSER.declareDouble(ExtendedStatsAggregationBuilder::sigma, ExtendedStatsAggregator.SIGMA_FIELD);
5251
}
5352

54-
public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException {
55-
return PARSER.parse(parser, new ExtendedStatsAggregationBuilder(aggregationName), null);
56-
}
57-
5853
private double sigma = 2.0;
5954

6055
public ExtendedStatsAggregationBuilder(String name) {

server/src/main/java/org/elasticsearch/search/aggregations/metrics/MaxAggregationBuilder.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.elasticsearch.common.io.stream.StreamOutput;
2424
import org.elasticsearch.common.xcontent.ObjectParser;
2525
import org.elasticsearch.common.xcontent.XContentBuilder;
26-
import org.elasticsearch.common.xcontent.XContentParser;
2726
import org.elasticsearch.index.query.QueryShardContext;
2827
import org.elasticsearch.search.aggregations.AggregationBuilder;
2928
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
@@ -42,16 +41,11 @@
4241
public class MaxAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly<ValuesSource.Numeric, MaxAggregationBuilder> {
4342
public static final String NAME = "max";
4443

45-
private static final ObjectParser<MaxAggregationBuilder, Void> PARSER;
44+
public static final ObjectParser<MaxAggregationBuilder, String> PARSER = ObjectParser.fromBuilder(NAME, MaxAggregationBuilder::new);
4645
static {
47-
PARSER = new ObjectParser<>(MaxAggregationBuilder.NAME);
4846
ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false);
4947
}
5048

51-
public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException {
52-
return PARSER.parse(parser, new MaxAggregationBuilder(aggregationName), null);
53-
}
54-
5549
public MaxAggregationBuilder(String name) {
5650
super(name, CoreValuesSourceType.NUMERIC, ValueType.NUMERIC);
5751
}

server/src/main/java/org/elasticsearch/search/aggregations/metrics/MinAggregationBuilder.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.elasticsearch.common.io.stream.StreamOutput;
2424
import org.elasticsearch.common.xcontent.ObjectParser;
2525
import org.elasticsearch.common.xcontent.XContentBuilder;
26-
import org.elasticsearch.common.xcontent.XContentParser;
2726
import org.elasticsearch.index.query.QueryShardContext;
2827
import org.elasticsearch.search.aggregations.AggregationBuilder;
2928
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
@@ -42,16 +41,11 @@
4241
public class MinAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly<ValuesSource.Numeric, MinAggregationBuilder> {
4342
public static final String NAME = "min";
4443

45-
private static final ObjectParser<MinAggregationBuilder, Void> PARSER;
44+
public static final ObjectParser<MinAggregationBuilder, String> PARSER = ObjectParser.fromBuilder(NAME, MinAggregationBuilder::new);
4645
static {
47-
PARSER = new ObjectParser<>(AvgAggregationBuilder.NAME);
4846
ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false);
4947
}
5048

51-
public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException {
52-
return PARSER.parse(parser, new MinAggregationBuilder(aggregationName), null);
53-
}
54-
5549
public MinAggregationBuilder(String name) {
5650
super(name, CoreValuesSourceType.NUMERIC, ValueType.NUMERIC);
5751
}

server/src/main/java/org/elasticsearch/search/aggregations/metrics/PercentileRanksAggregationBuilder.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.elasticsearch.common.ParseField;
2323
import org.elasticsearch.common.io.stream.StreamInput;
2424
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
25-
import org.elasticsearch.common.xcontent.XContentParser;
2625
import org.elasticsearch.index.query.QueryShardContext;
2726
import org.elasticsearch.search.aggregations.AggregationBuilder;
2827
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
@@ -36,20 +35,14 @@
3635

3736
public class PercentileRanksAggregationBuilder extends AbstractPercentilesAggregationBuilder<PercentileRanksAggregationBuilder> {
3837
public static final String NAME = PercentileRanks.TYPE_NAME;
39-
4038
private static final ParseField VALUES_FIELD = new ParseField("values");
41-
private static final ConstructingObjectParser<PercentileRanksAggregationBuilder, String> PARSER;
42-
static {
43-
PARSER = AbstractPercentilesAggregationBuilder.createParser(
44-
PercentileRanksAggregationBuilder.NAME,
45-
PercentileRanksAggregationBuilder::new,
46-
PercentilesConfig.TDigest::new,
47-
VALUES_FIELD);
48-
}
4939

50-
public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException {
51-
return PARSER.parse(parser, aggregationName);
52-
}
40+
public static final ConstructingObjectParser<PercentileRanksAggregationBuilder, String> PARSER =
41+
AbstractPercentilesAggregationBuilder.createParser(
42+
PercentileRanksAggregationBuilder.NAME,
43+
PercentileRanksAggregationBuilder::new,
44+
PercentilesConfig.TDigest::new,
45+
VALUES_FIELD);
5346

5447
public PercentileRanksAggregationBuilder(String name, double[] values) {
5548
this(name, values, null);

server/src/main/java/org/elasticsearch/search/aggregations/metrics/PercentilesAggregationBuilder.java

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.elasticsearch.common.ParseField;
2323
import org.elasticsearch.common.io.stream.StreamInput;
2424
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
25-
import org.elasticsearch.common.xcontent.XContentParser;
2625
import org.elasticsearch.index.query.QueryShardContext;
2726
import org.elasticsearch.search.aggregations.AggregationBuilder;
2827
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
@@ -41,30 +40,24 @@ public class PercentilesAggregationBuilder extends AbstractPercentilesAggregatio
4140
private static final double[] DEFAULT_PERCENTS = new double[] { 1, 5, 25, 50, 75, 95, 99 };
4241
private static final ParseField PERCENTS_FIELD = new ParseField("percents");
4342

44-
private static final ConstructingObjectParser<PercentilesAggregationBuilder, String> PARSER;
45-
static {
46-
PARSER = AbstractPercentilesAggregationBuilder.createParser(
47-
PercentilesAggregationBuilder.NAME,
48-
(name, values, percentileConfig) -> {
49-
if (values == null) {
50-
values = DEFAULT_PERCENTS; // this is needed because Percentiles has a default, while Ranks does not
51-
} else {
52-
values = validatePercentiles(values, name);
53-
}
54-
return new PercentilesAggregationBuilder(name, values, percentileConfig);
55-
},
56-
PercentilesConfig.TDigest::new,
57-
PERCENTS_FIELD);
58-
}
43+
public static final ConstructingObjectParser<PercentilesAggregationBuilder, String> PARSER =
44+
AbstractPercentilesAggregationBuilder.createParser(
45+
PercentilesAggregationBuilder.NAME,
46+
(name, values, percentileConfig) -> {
47+
if (values == null) {
48+
values = DEFAULT_PERCENTS; // this is needed because Percentiles has a default, while Ranks does not
49+
} else {
50+
values = validatePercentiles(values, name);
51+
}
52+
return new PercentilesAggregationBuilder(name, values, percentileConfig);
53+
},
54+
PercentilesConfig.TDigest::new,
55+
PERCENTS_FIELD);
5956

6057
public PercentilesAggregationBuilder(StreamInput in) throws IOException {
6158
super(in);
6259
}
6360

64-
public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException {
65-
return PARSER.parse(parser, aggregationName);
66-
}
67-
6861
public PercentilesAggregationBuilder(String name) {
6962
this(name, DEFAULT_PERCENTS, null);
7063
}

server/src/main/java/org/elasticsearch/search/aggregations/metrics/StatsAggregationBuilder.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,35 +23,30 @@
2323
import org.elasticsearch.common.io.stream.StreamOutput;
2424
import org.elasticsearch.common.xcontent.ObjectParser;
2525
import org.elasticsearch.common.xcontent.XContentBuilder;
26-
import org.elasticsearch.common.xcontent.XContentParser;
2726
import org.elasticsearch.index.query.QueryShardContext;
2827
import org.elasticsearch.search.aggregations.AggregationBuilder;
2928
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
3029
import org.elasticsearch.search.aggregations.AggregatorFactory;
30+
import org.elasticsearch.search.aggregations.support.CoreValuesSourceType;
3131
import org.elasticsearch.search.aggregations.support.ValueType;
3232
import org.elasticsearch.search.aggregations.support.ValuesSource;
3333
import org.elasticsearch.search.aggregations.support.ValuesSource.Numeric;
3434
import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder;
3535
import org.elasticsearch.search.aggregations.support.ValuesSourceConfig;
3636
import org.elasticsearch.search.aggregations.support.ValuesSourceParserHelper;
37-
import org.elasticsearch.search.aggregations.support.CoreValuesSourceType;
3837

3938
import java.io.IOException;
4039
import java.util.Map;
4140

4241
public class StatsAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly<ValuesSource.Numeric, StatsAggregationBuilder> {
4342
public static final String NAME = "stats";
4443

45-
private static final ObjectParser<StatsAggregationBuilder, Void> PARSER;
44+
public static final ObjectParser<StatsAggregationBuilder, String> PARSER =
45+
ObjectParser.fromBuilder(NAME, StatsAggregationBuilder::new);
4646
static {
47-
PARSER = new ObjectParser<>(StatsAggregationBuilder.NAME);
4847
ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false);
4948
}
5049

51-
public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException {
52-
return PARSER.parse(parser, new StatsAggregationBuilder(aggregationName), null);
53-
}
54-
5550
public StatsAggregationBuilder(String name) {
5651
super(name, CoreValuesSourceType.NUMERIC, ValueType.NUMERIC);
5752
}

server/src/main/java/org/elasticsearch/search/aggregations/metrics/SumAggregationBuilder.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.elasticsearch.common.io.stream.StreamOutput;
2424
import org.elasticsearch.common.xcontent.ObjectParser;
2525
import org.elasticsearch.common.xcontent.XContentBuilder;
26-
import org.elasticsearch.common.xcontent.XContentParser;
2726
import org.elasticsearch.index.query.QueryShardContext;
2827
import org.elasticsearch.search.aggregations.AggregationBuilder;
2928
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
@@ -42,16 +41,11 @@
4241
public class SumAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly<ValuesSource.Numeric, SumAggregationBuilder> {
4342
public static final String NAME = "sum";
4443

45-
private static final ObjectParser<SumAggregationBuilder, Void> PARSER;
44+
public static final ObjectParser<SumAggregationBuilder, String> PARSER = ObjectParser.fromBuilder(NAME, SumAggregationBuilder::new);
4645
static {
47-
PARSER = new ObjectParser<>(SumAggregationBuilder.NAME);
4846
ValuesSourceParserHelper.declareNumericFields(PARSER, true, true, false);
4947
}
5048

51-
public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException {
52-
return PARSER.parse(parser, new SumAggregationBuilder(aggregationName), null);
53-
}
54-
5549
public SumAggregationBuilder(String name) {
5650
super(name, CoreValuesSourceType.NUMERIC, ValueType.NUMERIC);
5751
}

server/src/main/java/org/elasticsearch/search/aggregations/metrics/ValueCountAggregationBuilder.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.elasticsearch.common.io.stream.StreamOutput;
2525
import org.elasticsearch.common.xcontent.ObjectParser;
2626
import org.elasticsearch.common.xcontent.XContentBuilder;
27-
import org.elasticsearch.common.xcontent.XContentParser;
2827
import org.elasticsearch.index.query.QueryShardContext;
2928
import org.elasticsearch.search.aggregations.AggregationBuilder;
3029
import org.elasticsearch.search.aggregations.AggregatorFactories;
@@ -42,16 +41,12 @@
4241
public class ValueCountAggregationBuilder extends ValuesSourceAggregationBuilder.LeafOnly<ValuesSource, ValueCountAggregationBuilder> {
4342
public static final String NAME = "value_count";
4443

45-
private static final ObjectParser<ValueCountAggregationBuilder, Void> PARSER;
44+
public static final ObjectParser<ValueCountAggregationBuilder, String> PARSER =
45+
ObjectParser.fromBuilder(NAME, name -> new ValueCountAggregationBuilder(name, null));
4646
static {
47-
PARSER = new ObjectParser<>(ValueCountAggregationBuilder.NAME);
4847
ValuesSourceParserHelper.declareAnyFields(PARSER, true, true);
4948
}
5049

51-
public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException {
52-
return PARSER.parse(parser, new ValueCountAggregationBuilder(aggregationName, null), null);
53-
}
54-
5550
public ValueCountAggregationBuilder(String name, ValueType targetValueType) {
5651
super(name, CoreValuesSourceType.ANY, targetValueType);
5752
}

0 commit comments

Comments
 (0)