diff options
author | Nik Everett <nik9000@gmail.com> | 2016-04-14 13:39:50 -0400 |
---|---|---|
committer | Nik Everett <nik9000@gmail.com> | 2016-04-15 08:14:05 -0400 |
commit | beafae8ea5a29ceb1c134ea13984dfc65bbf0b32 (patch) | |
tree | 17fe99b45cb815575ca17c666173a0c01b12e902 /core/src/main/java/org/elasticsearch/search/aggregations/bucket/range | |
parent | d863cbaa07d30c4e66f8ffe84b652ae7494d0851 (diff) |
Cut range aggregations to registerAggregation
and remove their PROTOTYPES. Does not remove the PROTOTYPEs from their
Range implementations which will have to wait for another commit.
Diffstat (limited to 'core/src/main/java/org/elasticsearch/search/aggregations/bucket/range')
7 files changed, 68 insertions, 93 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/AbstractRangeBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/AbstractRangeBuilder.java index 7fe87b0774..1e2e3f52da 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/AbstractRangeBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/AbstractRangeBuilder.java @@ -20,13 +20,13 @@ package org.elasticsearch.search.aggregations.bucket.range; import org.elasticsearch.common.io.stream.StreamInput; +import org.elasticsearch.common.io.stream.StreamInputReader; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.search.aggregations.bucket.range.RangeAggregator.Range; -import org.elasticsearch.search.aggregations.support.ValueType; import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorBuilder; -import org.elasticsearch.search.aggregations.support.ValuesSourceType; + import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -44,6 +44,31 @@ public abstract class AbstractRangeBuilder<AB extends AbstractRangeBuilder<AB, R this.rangeFactory = rangeFactory; } + /** + * Read from a stream. + */ + protected AbstractRangeBuilder(StreamInput in, InternalRange.Factory<?, ?> rangeFactory, StreamInputReader<R> rangeReader) + throws IOException { + super(in, rangeFactory.type(), rangeFactory.getValueSourceType(), rangeFactory.getValueType()); + this.rangeFactory = rangeFactory; + ranges = in.readList(rangeReader); + keyed = in.readBoolean(); + } + + @Override + protected void innerWriteTo(StreamOutput out) throws IOException { + out.writeVInt(ranges.size()); + for (Range range : ranges) { + range.writeTo(out); + } + out.writeBoolean(keyed); + } + + @Override + protected boolean usesNewStyleSerialization() { + return true; + } + public AB addRange(R range) { if (range == null) { throw new IllegalArgumentException("[range] must not be null: [" + name + "]"); @@ -73,25 +98,6 @@ public abstract class AbstractRangeBuilder<AB extends AbstractRangeBuilder<AB, R } @Override - protected AB innerReadFrom(String name, ValuesSourceType valuesSourceType, - ValueType targetValueType, StreamInput in) throws IOException { - AbstractRangeBuilder<AB, R> factory = createFactoryFromStream(name, in); - factory.keyed = in.readBoolean(); - return (AB) factory; - } - - protected abstract AbstractRangeBuilder<AB, R> createFactoryFromStream(String name, StreamInput in) throws IOException; - - @Override - protected void innerWriteTo(StreamOutput out) throws IOException { - out.writeVInt(ranges.size()); - for (Range range : ranges) { - range.writeTo(out); - } - out.writeBoolean(keyed); - } - - @Override protected int innerHashCode() { return Objects.hash(ranges, keyed); } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregatorBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregatorBuilder.java index 60de6a473c..5241243e3a 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregatorBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregatorBuilder.java @@ -19,25 +19,33 @@ package org.elasticsearch.search.aggregations.bucket.range; +import org.elasticsearch.common.ParseField; import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.search.aggregations.AggregatorFactory; 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.AggregationContext; -import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; import org.elasticsearch.search.aggregations.support.ValuesSource.Numeric; +import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; import java.io.IOException; public class RangeAggregatorBuilder extends AbstractRangeBuilder<RangeAggregatorBuilder, Range> { - - static final RangeAggregatorBuilder PROTOTYPE = new RangeAggregatorBuilder(""); + public static final String NAME = InternalRange.TYPE.name(); + public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME); public RangeAggregatorBuilder(String name) { super(name, InternalRange.FACTORY); } /** + * Read from a stream. + */ + public RangeAggregatorBuilder(StreamInput in) throws IOException { + super(in, InternalRange.FACTORY, Range.PROTOTYPE::readFrom); + } + + /** * Add a new range to this aggregation. * * @param key @@ -111,12 +119,7 @@ public class RangeAggregatorBuilder extends AbstractRangeBuilder<RangeAggregator } @Override - protected RangeAggregatorBuilder createFactoryFromStream(String name, StreamInput in) throws IOException { - int size = in.readVInt(); - RangeAggregatorBuilder factory = new RangeAggregatorBuilder(name); - for (int i = 0; i < size; i++) { - factory.addRange(Range.PROTOTYPE.readFrom(in)); - } - return factory; + public String getWriteableName() { + return NAME; } }
\ No newline at end of file diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeParser.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeParser.java index 27018b4cb1..841edba36a 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeParser.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeParser.java @@ -41,16 +41,14 @@ public class RangeParser extends NumericValuesSourceParser { this(true, true, false); } + /** + * Used by subclasses that parse slightly different kinds of ranges. + */ protected RangeParser(boolean scriptable, boolean formattable, boolean timezoneAware) { super(scriptable, formattable, timezoneAware); } @Override - public String type() { - return InternalRange.TYPE.name(); - } - - @Override protected AbstractRangeBuilder<?, ?> createFactory(String aggregationName, ValuesSourceType valuesSourceType, ValueType targetValueType, Map<ParseField, Object> otherOptions) { RangeAggregatorBuilder factory = new RangeAggregatorBuilder(aggregationName); @@ -92,9 +90,4 @@ public class RangeParser extends NumericValuesSourceParser { protected Range parseRange(XContentParser parser, ParseFieldMatcher parseFieldMatcher) throws IOException { return Range.PROTOTYPE.fromXContent(parser, parseFieldMatcher); } - - @Override - public AbstractRangeBuilder<?, ?> getFactoryPrototypes() { - return RangeAggregatorBuilder.PROTOTYPE; - } } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeAggregatorBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeAggregatorBuilder.java index abd3ad6372..94fdeb7bf4 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeAggregatorBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeAggregatorBuilder.java @@ -19,30 +19,38 @@ package org.elasticsearch.search.aggregations.bucket.range.date; +import org.elasticsearch.common.ParseField; import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; +import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.bucket.range.AbstractRangeBuilder; import org.elasticsearch.search.aggregations.bucket.range.RangeAggregator; import org.elasticsearch.search.aggregations.bucket.range.RangeAggregator.Range; import org.elasticsearch.search.aggregations.support.AggregationContext; -import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; import org.elasticsearch.search.aggregations.support.ValuesSource.Numeric; +import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; import org.joda.time.DateTime; import java.io.IOException; public class DateRangeAggregatorBuilder extends AbstractRangeBuilder<DateRangeAggregatorBuilder, RangeAggregator.Range> { - - static final DateRangeAggregatorBuilder PROTOTYPE = new DateRangeAggregatorBuilder(""); + public static final String NAME = InternalDateRange.TYPE.name(); + public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME); public DateRangeAggregatorBuilder(String name) { super(name, InternalDateRange.FACTORY); } + /** + * Read from a stream. + */ + public DateRangeAggregatorBuilder(StreamInput in) throws IOException { + super(in, InternalDateRange.FACTORY, Range.PROTOTYPE::readFrom); + } + @Override public String getWriteableName() { - return InternalDateRange.TYPE.name(); + return NAME; } /** @@ -254,15 +262,4 @@ public class DateRangeAggregatorBuilder extends AbstractRangeBuilder<DateRangeAg return new DateRangeAggregatorFactory(name, type, config, ranges, keyed, rangeFactory, context, parent, subFactoriesBuilder, metaData); } - - @Override - protected DateRangeAggregatorBuilder createFactoryFromStream(String name, StreamInput in) throws IOException { - int size = in.readVInt(); - DateRangeAggregatorBuilder factory = new DateRangeAggregatorBuilder(name); - for (int i = 0; i < size; i++) { - factory.addRange(Range.PROTOTYPE.readFrom(in)); - } - return factory; - } - } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeParser.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeParser.java index 336d906919..cc6dca1e54 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeParser.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeParser.java @@ -38,11 +38,6 @@ public class DateRangeParser extends RangeParser { } @Override - public String type() { - return InternalDateRange.TYPE.name(); - } - - @Override protected DateRangeAggregatorBuilder createFactory(String aggregationName, ValuesSourceType valuesSourceType, ValueType targetValueType, Map<ParseField, Object> otherOptions) { DateRangeAggregatorBuilder factory = new DateRangeAggregatorBuilder(aggregationName); @@ -57,9 +52,4 @@ public class DateRangeParser extends RangeParser { } return factory; } - - @Override - public DateRangeAggregatorBuilder getFactoryPrototypes() { - return DateRangeAggregatorBuilder.PROTOTYPE; - } } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ipv4/IPv4RangeAggregatorBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ipv4/IPv4RangeAggregatorBuilder.java index 7c867d56fa..80989d5930 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ipv4/IPv4RangeAggregatorBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ipv4/IPv4RangeAggregatorBuilder.java @@ -40,16 +40,23 @@ import java.io.IOException; import java.util.Objects; public class IPv4RangeAggregatorBuilder extends AbstractRangeBuilder<IPv4RangeAggregatorBuilder, IPv4RangeAggregatorBuilder.Range> { - - static final IPv4RangeAggregatorBuilder PROTOTYPE = new IPv4RangeAggregatorBuilder(""); + public static final String NAME = InternalIPv4Range.TYPE.name(); + public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME); public IPv4RangeAggregatorBuilder(String name) { super(name, InternalIPv4Range.FACTORY); } + /** + * Read from a stream. + */ + public IPv4RangeAggregatorBuilder(StreamInput in) throws IOException { + super(in, InternalIPv4Range.FACTORY, Range.PROTOTYPE::readFrom); + } + @Override public String getWriteableName() { - return InternalIPv4Range.TYPE.name(); + return NAME; } /** @@ -132,16 +139,6 @@ public class IPv4RangeAggregatorBuilder extends AbstractRangeBuilder<IPv4RangeAg metaData); } - @Override - protected IPv4RangeAggregatorBuilder createFactoryFromStream(String name, StreamInput in) throws IOException { - int size = in.readVInt(); - IPv4RangeAggregatorBuilder factory = new IPv4RangeAggregatorBuilder(name); - for (int i = 0; i < size; i++) { - factory.addRange(Range.PROTOTYPE.readFrom(in)); - } - return factory; - } - public static class Range extends RangeAggregator.Range { static final Range PROTOTYPE = new Range(null, null, null, null, null, null); diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ipv4/IpRangeParser.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ipv4/IpRangeParser.java index 40d317684d..1f6fea5553 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ipv4/IpRangeParser.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ipv4/IpRangeParser.java @@ -41,14 +41,9 @@ public class IpRangeParser extends RangeParser { } @Override - public String type() { - return InternalIPv4Range.TYPE.name(); - } - - @Override protected Range parseRange(XContentParser parser, ParseFieldMatcher parseFieldMatcher) throws IOException { return IPv4RangeAggregatorBuilder.Range.PROTOTYPE.fromXContent(parser, parseFieldMatcher); - } + } @Override protected IPv4RangeAggregatorBuilder createFactory(String aggregationName, ValuesSourceType valuesSourceType, @@ -65,11 +60,5 @@ public class IpRangeParser extends RangeParser { factory.keyed(keyed); } return factory; - } - - @Override - public IPv4RangeAggregatorBuilder getFactoryPrototypes() { - return IPv4RangeAggregatorBuilder.PROTOTYPE; } - } |