diff options
author | Nik Everett <nik9000@gmail.com> | 2016-04-15 13:59:20 -0400 |
---|---|---|
committer | Nik Everett <nik9000@gmail.com> | 2016-04-18 08:19:08 -0400 |
commit | 070b78517e4edd60d06c8f14c27a9644bd008a0a (patch) | |
tree | b98403a98d9df11bfdd8389627bb693412e895c5 | |
parent | 6e4273ae0b1d3dfdc0fdd3c470b13c57a5b99a4c (diff) |
Cut stats_bucket and extended_stats_bucket to registerPipelineAggregation
and remove their PROTOTYPE.
Relates to #17085
8 files changed, 108 insertions, 113 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/SearchModule.java b/core/src/main/java/org/elasticsearch/search/SearchModule.java index 06b09e6e74..0f9e55a4ae 100644 --- a/core/src/main/java/org/elasticsearch/search/SearchModule.java +++ b/core/src/main/java/org/elasticsearch/search/SearchModule.java @@ -198,10 +198,11 @@ import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.min.MinBucke import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.min.MinBucketPipelineAggregator; import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.percentile.PercentilesBucketParser; import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.percentile.PercentilesBucketPipelineAggregator; -import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.stats.StatsBucketParser; import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.stats.StatsBucketPipelineAggregator; +import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.stats.StatsBucketPipelineAggregatorBuilder; import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.stats.extended.ExtendedStatsBucketParser; import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.stats.extended.ExtendedStatsBucketPipelineAggregator; +import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.stats.extended.ExtendedStatsBucketPipelineAggregatorBuilder; import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.sum.SumBucketParser; import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.sum.SumBucketPipelineAggregator; import org.elasticsearch.search.aggregations.pipeline.bucketscript.BucketScriptParser; @@ -501,8 +502,10 @@ public class SearchModule extends AbstractModule { registerPipelineParser(new MinBucketParser()); registerPipelineParser(new AvgBucketParser()); registerPipelineParser(new SumBucketParser()); - registerPipelineParser(new StatsBucketParser()); - registerPipelineParser(new ExtendedStatsBucketParser()); + registerPipelineAggregation(StatsBucketPipelineAggregatorBuilder::new, StatsBucketPipelineAggregatorBuilder.PARSER, + StatsBucketPipelineAggregatorBuilder.AGGREGATION_NAME_FIELD); + registerPipelineAggregation(ExtendedStatsBucketPipelineAggregatorBuilder::new, new ExtendedStatsBucketParser(), + ExtendedStatsBucketPipelineAggregatorBuilder.AGGREGATION_NAME_FIELD); registerPipelineParser(new PercentilesBucketParser()); registerPipelineParser(new MovAvgParser(movAvgModelParserMapper)); registerPipelineParser(new CumulativeSumParser()); diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/PipelineAggregatorBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/PipelineAggregatorBuilder.java index 9e94341223..08e1b19ca0 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/PipelineAggregatorBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/PipelineAggregatorBuilder.java @@ -163,6 +163,7 @@ public abstract class PipelineAggregatorBuilder<PAB extends PipelineAggregatorBu @Override public String getWriteableName() { + assert false == usesNewStyleSerialization() : "Migrated aggregations should just return NAME"; return type; } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/BucketMetricsPipelineAggregatorBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/BucketMetricsPipelineAggregatorBuilder.java index c28ebed7a7..a3eeed6b5d 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/BucketMetricsPipelineAggregatorBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/BucketMetricsPipelineAggregatorBuilder.java @@ -39,11 +39,48 @@ public abstract class BucketMetricsPipelineAggregatorBuilder<AF extends BucketMe private String format = null; private GapPolicy gapPolicy = GapPolicy.SKIP; - public BucketMetricsPipelineAggregatorBuilder(String name, String type, String[] bucketsPaths) { + protected BucketMetricsPipelineAggregatorBuilder(String name, String type, String[] bucketsPaths) { super(name, type, bucketsPaths); } /** + * Read from a stream. + */ + protected BucketMetricsPipelineAggregatorBuilder(StreamInput in, String type) throws IOException { + super(in, type); + format = in.readOptionalString(); + gapPolicy = GapPolicy.readFrom(in); + } + + @Override + protected final void doWriteTo(StreamOutput out) throws IOException { + if (false == usesNewStyleSerialization()) { + innerWriteTo(out); + } + out.writeOptionalString(format); + gapPolicy.writeTo(out); + if (usesNewStyleSerialization()) { + innerWriteTo(out); + } + } + + protected abstract void innerWriteTo(StreamOutput out) throws IOException; + + @Override + protected final PipelineAggregatorBuilder<AF> doReadFrom(String name, String[] bucketsPaths, StreamInput in) throws IOException { + BucketMetricsPipelineAggregatorBuilder<AF> factory = innerReadFrom(name, bucketsPaths, in); + factory.format = in.readOptionalString(); + factory.gapPolicy = GapPolicy.readFrom(in); + return factory; + } + + protected BucketMetricsPipelineAggregatorBuilder<AF> innerReadFrom(String name, String[] bucketsPaths, StreamInput in) + throws IOException { + throw new UnsupportedOperationException(); // NORELEASE remove before 5.0.0 GA + } + + + /** * Sets the format to use on the output of this aggregation. */ @SuppressWarnings("unchecked") @@ -110,26 +147,6 @@ public abstract class BucketMetricsPipelineAggregatorBuilder<AF extends BucketMe protected abstract XContentBuilder doXContentBody(XContentBuilder builder, Params params) throws IOException; @Override - protected final PipelineAggregatorBuilder<AF> doReadFrom(String name, String[] bucketsPaths, StreamInput in) throws IOException { - BucketMetricsPipelineAggregatorBuilder<AF> factory = innerReadFrom(name, bucketsPaths, in); - factory.format = in.readOptionalString(); - factory.gapPolicy = GapPolicy.readFrom(in); - return factory; - } - - protected abstract BucketMetricsPipelineAggregatorBuilder<AF> innerReadFrom(String name, String[] bucketsPaths, StreamInput in) - throws IOException; - - @Override - protected final void doWriteTo(StreamOutput out) throws IOException { - innerWriteTo(out); - out.writeOptionalString(format); - gapPolicy.writeTo(out); - } - - protected abstract void innerWriteTo(StreamOutput out) throws IOException; - - @Override protected final int doHashCode() { return Objects.hash(format, gapPolicy, innerHashCode()); } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/StatsBucketParser.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/StatsBucketParser.java deleted file mode 100644 index dd4215618d..0000000000 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/StatsBucketParser.java +++ /dev/null @@ -1,42 +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.pipeline.bucketmetrics.stats; - -import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.BucketMetricsParser; - -import java.util.Map; - -public class StatsBucketParser extends BucketMetricsParser { - @Override - public String type() { - return StatsBucketPipelineAggregator.TYPE.name(); - } - - @Override - protected StatsBucketPipelineAggregatorBuilder buildFactory(String pipelineAggregatorName, - String bucketsPath, Map<String, Object> unparsedParams) { - return new StatsBucketPipelineAggregatorBuilder(pipelineAggregatorName, bucketsPath); - } - - @Override - public StatsBucketPipelineAggregatorBuilder getFactoryPrototype() { - return StatsBucketPipelineAggregatorBuilder.PROTOTYPE; - } -} diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/StatsBucketPipelineAggregatorBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/StatsBucketPipelineAggregatorBuilder.java index 91fe885f93..37ba5e3c1f 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/StatsBucketPipelineAggregatorBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/StatsBucketPipelineAggregatorBuilder.java @@ -19,30 +19,45 @@ package org.elasticsearch.search.aggregations.pipeline.bucketmetrics.stats; +import org.elasticsearch.common.ParseField; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; -import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorBuilder; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator.Parser; +import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorBuilder; +import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.BucketMetricsParser; import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.BucketMetricsPipelineAggregatorBuilder; import java.io.IOException; import java.util.List; import java.util.Map; -public class StatsBucketPipelineAggregatorBuilder - extends BucketMetricsPipelineAggregatorBuilder<StatsBucketPipelineAggregatorBuilder> { - - static final StatsBucketPipelineAggregatorBuilder PROTOTYPE = new StatsBucketPipelineAggregatorBuilder("", ""); +public class StatsBucketPipelineAggregatorBuilder extends BucketMetricsPipelineAggregatorBuilder<StatsBucketPipelineAggregatorBuilder> { + public static final String NAME = StatsBucketPipelineAggregator.TYPE.name(); + public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME); public StatsBucketPipelineAggregatorBuilder(String name, String bucketsPath) { - this(name, new String[] { bucketsPath }); + super(name, StatsBucketPipelineAggregator.TYPE.name(), new String[] { bucketsPath }); + } + + /** + * Read from a stream. + */ + public StatsBucketPipelineAggregatorBuilder(StreamInput in) + throws IOException { + super(in, StatsBucketPipelineAggregator.TYPE.name()); } - private StatsBucketPipelineAggregatorBuilder(String name, String[] bucketsPaths) { - super(name, StatsBucketPipelineAggregator.TYPE.name(), bucketsPaths); + @Override + protected void innerWriteTo(StreamOutput out) throws IOException { + // Do nothing, no extra state to write to stream + } + + @Override + protected boolean usesNewStyleSerialization() { + return true; } @Override @@ -64,16 +79,13 @@ public class StatsBucketPipelineAggregatorBuilder return builder; } - @Override - protected StatsBucketPipelineAggregatorBuilder innerReadFrom(String name, String[] bucketsPaths, StreamInput in) - throws IOException { - return new StatsBucketPipelineAggregatorBuilder(name, bucketsPaths); - } - - @Override - protected void innerWriteTo(StreamOutput out) throws IOException { - // Do nothing, no extra state to write to stream - } + public static final PipelineAggregator.Parser PARSER = new BucketMetricsParser() { + @Override + protected StatsBucketPipelineAggregatorBuilder buildFactory(String pipelineAggregatorName, + String bucketsPath, Map<String, Object> unparsedParams) { + return new StatsBucketPipelineAggregatorBuilder(pipelineAggregatorName, bucketsPath); + } + }; @Override protected int innerHashCode() { @@ -85,4 +97,8 @@ public class StatsBucketPipelineAggregatorBuilder return true; } + @Override + public String getWriteableName() { + return NAME; + } }
\ No newline at end of file diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketParser.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketParser.java index 996adfd649..698af21387 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketParser.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketParser.java @@ -29,11 +29,6 @@ public class ExtendedStatsBucketParser extends BucketMetricsParser { static final ParseField SIGMA = new ParseField("sigma"); @Override - public String type() { - return ExtendedStatsBucketPipelineAggregator.TYPE.name(); - } - - @Override protected ExtendedStatsBucketPipelineAggregatorBuilder buildFactory(String pipelineAggregatorName, String bucketsPath, Map<String, Object> unparsedParams) throws ParseException { @@ -56,9 +51,4 @@ public class ExtendedStatsBucketParser extends BucketMetricsParser { } return factory; } - - @Override - public ExtendedStatsBucketPipelineAggregatorBuilder getFactoryPrototype() { - return ExtendedStatsBucketPipelineAggregatorBuilder.PROTOTYPE; - } } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregatorBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregatorBuilder.java index 6121a49d13..8856def674 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregatorBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregatorBuilder.java @@ -19,13 +19,14 @@ package org.elasticsearch.search.aggregations.pipeline.bucketmetrics.stats.extended; +import org.elasticsearch.common.ParseField; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; -import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorBuilder; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator.Parser; +import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorBuilder; import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.BucketMetricsPipelineAggregatorBuilder; import java.io.IOException; @@ -35,17 +36,31 @@ import java.util.Objects; public class ExtendedStatsBucketPipelineAggregatorBuilder extends BucketMetricsPipelineAggregatorBuilder<ExtendedStatsBucketPipelineAggregatorBuilder> { - - static final ExtendedStatsBucketPipelineAggregatorBuilder PROTOTYPE = new ExtendedStatsBucketPipelineAggregatorBuilder("", ""); + public static final String NAME = ExtendedStatsBucketPipelineAggregator.TYPE.name(); + public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME); private double sigma = 2.0; public ExtendedStatsBucketPipelineAggregatorBuilder(String name, String bucketsPath) { - this(name, new String[] { bucketsPath }); + super(name, ExtendedStatsBucketPipelineAggregator.TYPE.name(), new String[] { bucketsPath }); + } + + /** + * Read from a stream. + */ + public ExtendedStatsBucketPipelineAggregatorBuilder(StreamInput in) throws IOException { + super(in, ExtendedStatsBucketPipelineAggregator.TYPE.name()); + sigma = in.readDouble(); } - private ExtendedStatsBucketPipelineAggregatorBuilder(String name, String[] bucketsPaths) { - super(name, ExtendedStatsBucketPipelineAggregator.TYPE.name(), bucketsPaths); + @Override + protected void innerWriteTo(StreamOutput out) throws IOException { + out.writeDouble(sigma); + } + + @Override + protected boolean usesNewStyleSerialization() { + return true; } /** @@ -94,19 +109,6 @@ public class ExtendedStatsBucketPipelineAggregatorBuilder } @Override - protected ExtendedStatsBucketPipelineAggregatorBuilder innerReadFrom(String name, String[] bucketsPaths, StreamInput in) - throws IOException { - ExtendedStatsBucketPipelineAggregatorBuilder factory = new ExtendedStatsBucketPipelineAggregatorBuilder(name, bucketsPaths); - factory.sigma = in.readDouble(); - return factory; - } - - @Override - protected void innerWriteTo(StreamOutput out) throws IOException { - out.writeDouble(sigma); - } - - @Override protected int innerHashCode() { return Objects.hash(sigma); } @@ -117,4 +119,8 @@ public class ExtendedStatsBucketPipelineAggregatorBuilder return Objects.equals(sigma, other.sigma); } + @Override + public String getWriteableName() { + return NAME; + } }
\ No newline at end of file diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/derivative/DerivativePipelineAggregatorBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/derivative/DerivativePipelineAggregatorBuilder.java index 01238b48d5..65d1168107 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/derivative/DerivativePipelineAggregatorBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/derivative/DerivativePipelineAggregatorBuilder.java @@ -273,4 +273,8 @@ public class DerivativePipelineAggregatorBuilder extends PipelineAggregatorBuild return Objects.hash(format, gapPolicy, units); } + @Override + public String getWriteableName() { + return NAME; + } }
\ No newline at end of file |