From 7da753a4d78bcfd682d96065d185f574b9b5d7a5 Mon Sep 17 00:00:00 2001 From: Nik Everett Date: Mon, 4 Jul 2016 22:49:24 -0400 Subject: [PATCH] Migrate sampler and missing aggregations to NamedWriteable This is another step down the path to removing aggregation's special "streams" which reimplement NamedWriteable. --- .../elasticsearch/search/SearchModule.java | 12 +++---- .../bucket/missing/InternalMissing.java | 35 +++++-------------- .../missing/MissingAggregationBuilder.java | 8 +++-- .../bucket/sampler/InternalSampler.java | 35 ++++++------------- .../sampler/SamplerAggregationBuilder.java | 8 +++-- .../bucket/sampler/UnmappedSampler.java | 35 ++++++------------- .../search/aggregations/bucket/MissingIT.java | 3 -- 7 files changed, 45 insertions(+), 91 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/search/SearchModule.java b/core/src/main/java/org/elasticsearch/search/SearchModule.java index 369750a214b..dd144e413a2 100644 --- a/core/src/main/java/org/elasticsearch/search/SearchModule.java +++ b/core/src/main/java/org/elasticsearch/search/SearchModule.java @@ -551,13 +551,16 @@ public class SearchModule extends AbstractModule { CardinalityAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalCardinality::new)); registerAggregation(new AggregationSpec(GlobalAggregationBuilder::new, GlobalAggregationBuilder::parse, GlobalAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalGlobal::new)); - registerAggregation(MissingAggregationBuilder::new, new MissingParser(), MissingAggregationBuilder.AGGREGATION_NAME_FIELD); + registerAggregation( + new AggregationSpec(MissingAggregationBuilder::new, new MissingParser(), MissingAggregationBuilder.AGGREGATION_NAME_FIELD) + .addResultReader(InternalMissing::new)); registerAggregation(new AggregationSpec(FilterAggregationBuilder::new, FilterAggregationBuilder::parse, FilterAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalFilter::new)); registerAggregation(new AggregationSpec(FiltersAggregationBuilder::new, FiltersAggregationBuilder::parse, FiltersAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalFilters::new)); - registerAggregation(SamplerAggregationBuilder::new, SamplerAggregationBuilder::parse, - SamplerAggregationBuilder.AGGREGATION_NAME_FIELD); + registerAggregation(new AggregationSpec(SamplerAggregationBuilder::new, SamplerAggregationBuilder::parse, + SamplerAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalSampler.NAME, InternalSampler::new) + .addResultReader(UnmappedSampler.NAME, UnmappedSampler::new)); registerAggregation(DiversifiedAggregationBuilder::new, new DiversifiedSamplerParser(), DiversifiedAggregationBuilder.AGGREGATION_NAME_FIELD); registerAggregation(TermsAggregationBuilder::new, new TermsParser(), TermsAggregationBuilder.AGGREGATION_NAME_FIELD); @@ -767,9 +770,6 @@ public class SearchModule extends AbstractModule { static { // buckets - InternalSampler.registerStreams(); - UnmappedSampler.registerStreams(); - InternalMissing.registerStreams(); StringTerms.registerStreams(); LongTerms.registerStreams(); SignificantStringTerms.registerStreams(); diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/InternalMissing.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/InternalMissing.java index 78293dd5832..5a46e4ce95f 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/InternalMissing.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/InternalMissing.java @@ -19,7 +19,6 @@ package org.elasticsearch.search.aggregations.bucket.missing; import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.search.aggregations.AggregationStreams; import org.elasticsearch.search.aggregations.InternalAggregations; import org.elasticsearch.search.aggregations.bucket.InternalSingleBucketAggregation; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; @@ -28,37 +27,21 @@ import java.io.IOException; import java.util.List; import java.util.Map; -/** - * - */ public class InternalMissing extends InternalSingleBucketAggregation implements Missing { - - public static final Type TYPE = new Type("missing"); - - public static final AggregationStreams.Stream STREAM = new AggregationStreams.Stream() { - @Override - public InternalMissing readResult(StreamInput in) throws IOException { - InternalMissing missing = new InternalMissing(); - missing.readFrom(in); - return missing; - } - }; - - public static void registerStreams() { - AggregationStreams.registerStream(STREAM, TYPE.stream()); - } - - - InternalMissing() { - } - InternalMissing(String name, long docCount, InternalAggregations aggregations, List pipelineAggregators, Map metaData) { super(name, docCount, aggregations, pipelineAggregators, metaData); } + /** + * Read from a stream. + */ + public InternalMissing(StreamInput in) throws IOException { + super(in); + } + @Override - public Type type() { - return TYPE; + public String getWriteableName() { + return MissingAggregationBuilder.NAME; } @Override diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java index f10f7683841..05868f96df2 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/missing/MissingAggregationBuilder.java @@ -24,6 +24,7 @@ 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.AggregatorFactories.Builder; +import org.elasticsearch.search.aggregations.InternalAggregation.Type; import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.support.AggregationContext; import org.elasticsearch.search.aggregations.support.ValueType; @@ -36,18 +37,19 @@ import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; public class MissingAggregationBuilder extends ValuesSourceAggregationBuilder { - public static final String NAME = InternalMissing.TYPE.name(); + public static final String NAME = "missing"; + public static final Type TYPE = new Type(NAME); public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME); public MissingAggregationBuilder(String name, ValueType targetValueType) { - super(name, InternalMissing.TYPE, ValuesSourceType.ANY, targetValueType); + super(name, TYPE, ValuesSourceType.ANY, targetValueType); } /** * Read from a stream. */ public MissingAggregationBuilder(StreamInput in) throws IOException { - super(in, InternalMissing.TYPE, ValuesSourceType.ANY); + super(in, TYPE, ValuesSourceType.ANY); } @Override diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/InternalSampler.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/InternalSampler.java index c7bbeba38eb..224de07e93d 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/InternalSampler.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/InternalSampler.java @@ -19,7 +19,6 @@ package org.elasticsearch.search.aggregations.bucket.sampler; import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.search.aggregations.AggregationStreams; import org.elasticsearch.search.aggregations.InternalAggregations; import org.elasticsearch.search.aggregations.bucket.InternalSingleBucketAggregation; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; @@ -28,36 +27,22 @@ import java.io.IOException; import java.util.List; import java.util.Map; -/** -* -*/ public class InternalSampler extends InternalSingleBucketAggregation implements Sampler { - - public static final Type TYPE = new Type("sampler"); - - public static final AggregationStreams.Stream STREAM = new AggregationStreams.Stream() { - @Override - public InternalSampler readResult(StreamInput in) throws IOException { - InternalSampler result = new InternalSampler(); - result.readFrom(in); - return result; - } - }; - - public static void registerStreams() { - AggregationStreams.registerStream(STREAM, TYPE.stream()); - } - - InternalSampler() { - } // for serialization - + public static final String NAME = "mapped_sampler"; InternalSampler(String name, long docCount, InternalAggregations subAggregations, List pipelineAggregators, Map metaData) { super(name, docCount, subAggregations, pipelineAggregators, metaData); } + /** + * Read from a stream. + */ + public InternalSampler(StreamInput in) throws IOException { + super(in); + } + @Override - public Type type() { - return TYPE; + public String getWriteableName() { + return NAME; } @Override diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregationBuilder.java index bdbff785043..1f34d4987e5 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregationBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/sampler/SamplerAggregationBuilder.java @@ -29,13 +29,15 @@ import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactory; +import org.elasticsearch.search.aggregations.InternalAggregation.Type; import org.elasticsearch.search.aggregations.support.AggregationContext; import java.io.IOException; import java.util.Objects; public class SamplerAggregationBuilder extends AbstractAggregationBuilder { - public static final String NAME = InternalSampler.TYPE.name(); + public static final String NAME = "sampler"; + private static final Type TYPE = new Type(NAME); public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME); public static final int DEFAULT_SHARD_SAMPLE_SIZE = 100; @@ -43,14 +45,14 @@ public class SamplerAggregationBuilder extends AbstractAggregationBuilder pipelineAggregators, Map metaData) { super(name, 0, InternalAggregations.EMPTY, pipelineAggregators, metaData); } + /** + * Read from a stream. + */ + public UnmappedSampler(StreamInput in) throws IOException { + super(in); + } + @Override - public Type type() { - return TYPE; + public String getWriteableName() { + return NAME; } @Override diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/MissingIT.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/MissingIT.java index c1baf8b3678..ade53a2164a 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/MissingIT.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/MissingIT.java @@ -40,9 +40,6 @@ import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.hamcrest.core.IsNull.notNullValue; -/** - * - */ @ESIntegTestCase.SuiteScopeTestCase public class MissingIT extends ESIntegTestCase {