summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range
diff options
context:
space:
mode:
authorNik Everett <nik9000@gmail.com>2016-04-15 11:08:32 -0400
committerNik Everett <nik9000@gmail.com>2016-04-15 14:01:48 -0400
commitc94302d2460a6882e5b1c1ff28e5e75bf7814e45 (patch)
treef42fd1f12485dfa793affc376c28431456a4ddd9 /core/src/main/java/org/elasticsearch/search/aggregations/bucket/range
parentb55368b39de3a5138ae578b68fedda62bf9da365 (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')
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceAggregatorBuilder.java74
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/GeoDistanceParser.java11
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