diff options
author | Nik Everett <nik9000@gmail.com> | 2016-04-15 11:08:32 -0400 |
---|---|---|
committer | Nik Everett <nik9000@gmail.com> | 2016-04-15 14:01:48 -0400 |
commit | c94302d2460a6882e5b1c1ff28e5e75bf7814e45 (patch) | |
tree | f42fd1f12485dfa793affc376c28431456a4ddd9 /core/src/main/java/org/elasticsearch/search/aggregations/bucket/range | |
parent | b55368b39de3a5138ae578b68fedda62bf9da365 (diff) |
Cut geo aggregations to registerAggregation
and remove their prototypes.
Relates to #17085
Diffstat (limited to 'core/src/main/java/org/elasticsearch/search/aggregations/bucket/range')
2 files changed, 40 insertions, 45 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceAggregatorBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceAggregatorBuilder.java index 841f706ba5..c99c242705 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceAggregatorBuilder.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceAggregatorBuilder.java @@ -19,24 +19,23 @@ package org.elasticsearch.search.aggregations.bucket.range.geodistance; +import org.elasticsearch.common.ParseField; import org.elasticsearch.common.geo.GeoDistance; import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.unit.DistanceUnit; import org.elasticsearch.common.xcontent.XContentBuilder; -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.InternalRange; import org.elasticsearch.search.aggregations.bucket.range.RangeAggregator; import org.elasticsearch.search.aggregations.bucket.range.geodistance.GeoDistanceParser.Range; import org.elasticsearch.search.aggregations.support.AggregationContext; -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.ValuesSourceAggregatorFactory; import org.elasticsearch.search.aggregations.support.ValuesSourceConfig; -import org.elasticsearch.search.aggregations.support.ValuesSourceType; import java.io.IOException; import java.util.ArrayList; @@ -44,8 +43,8 @@ import java.util.List; import java.util.Objects; public class GeoDistanceAggregatorBuilder extends ValuesSourceAggregatorBuilder<ValuesSource.GeoPoint, GeoDistanceAggregatorBuilder> { - - static final GeoDistanceAggregatorBuilder PROTOTYPE = new GeoDistanceAggregatorBuilder("", new GeoPoint()); + public static final String NAME = InternalGeoDistance.TYPE.name(); + public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME); private final GeoPoint origin; private List<Range> ranges = new ArrayList<>(); @@ -66,6 +65,41 @@ public class GeoDistanceAggregatorBuilder extends ValuesSourceAggregatorBuilder< this.origin = origin; } + /** + * Read from a stream. + */ + public GeoDistanceAggregatorBuilder(StreamInput in) throws IOException { + super(in, InternalGeoDistance.FACTORY.type(), InternalGeoDistance.FACTORY.getValueSourceType(), + InternalGeoDistance.FACTORY.getValueType()); + origin = new GeoPoint(in.readDouble(), in.readDouble()); + int size = in.readVInt(); + ranges = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + ranges.add(Range.PROTOTYPE.readFrom(in)); + } + keyed = in.readBoolean(); + distanceType = GeoDistance.readFromStream(in); + unit = DistanceUnit.readFromStream(in); + } + + @Override + protected void innerWriteTo(StreamOutput out) throws IOException { + out.writeDouble(origin.lat()); + out.writeDouble(origin.lon()); + out.writeVInt(ranges.size()); + for (Range range : ranges) { + range.writeTo(out); + } + out.writeBoolean(keyed); + distanceType.writeTo(out); + unit.writeTo(out); + } + + @Override + protected boolean usesNewStyleSerialization() { + return true; + } + public GeoDistanceAggregatorBuilder addRange(Range range) { if (range == null) { throw new IllegalArgumentException("[range] must not be null: [" + name + "]"); @@ -146,7 +180,7 @@ public class GeoDistanceAggregatorBuilder extends ValuesSourceAggregatorBuilder< @Override public String getWriteableName() { - return InternalGeoDistance.TYPE.name(); + return NAME; } public GeoDistanceAggregatorBuilder unit(DistanceUnit unit) { @@ -201,34 +235,6 @@ public class GeoDistanceAggregatorBuilder extends ValuesSourceAggregatorBuilder< } @Override - protected GeoDistanceAggregatorBuilder innerReadFrom( - String name, ValuesSourceType valuesSourceType, ValueType targetValueType, StreamInput in) throws IOException { - GeoPoint origin = new GeoPoint(in.readDouble(), in.readDouble()); - int size = in.readVInt(); - GeoDistanceAggregatorBuilder factory = new GeoDistanceAggregatorBuilder(name, origin); - for (int i = 0; i < size; i++) { - factory.addRange(Range.PROTOTYPE.readFrom(in)); - } - factory.keyed = in.readBoolean(); - factory.distanceType = GeoDistance.readFromStream(in); - factory.unit = DistanceUnit.readFromStream(in); - return factory; - } - - @Override - protected void innerWriteTo(StreamOutput out) throws IOException { - out.writeDouble(origin.lat()); - out.writeDouble(origin.lon()); - out.writeVInt(ranges.size()); - for (Range range : ranges) { - range.writeTo(out); - } - out.writeBoolean(keyed); - distanceType.writeTo(out); - unit.writeTo(out); - } - - @Override protected int innerHashCode() { return Objects.hash(origin, ranges, keyed, distanceType, unit); } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceParser.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceParser.java index 670e4dda0d..bc4353d18b 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceParser.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceParser.java @@ -53,11 +53,6 @@ public class GeoDistanceParser extends GeoPointValuesSourceParser { super(true, false); } - @Override - public String type() { - return InternalGeoDistance.TYPE.name(); - } - public static class Range extends RangeAggregator.Range { static final Range PROTOTYPE = new Range(null, null, null); @@ -181,10 +176,4 @@ public class GeoDistanceParser extends GeoPointValuesSourceParser { } return false; } - - @Override - public GeoDistanceAggregatorBuilder getFactoryPrototypes() { - return GeoDistanceAggregatorBuilder.PROTOTYPE; - } - }
\ No newline at end of file |