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-14 13:39:50 -0400
committerNik Everett <nik9000@gmail.com>2016-04-15 08:14:05 -0400
commitbeafae8ea5a29ceb1c134ea13984dfc65bbf0b32 (patch)
tree17fe99b45cb815575ca17c666173a0c01b12e902 /core/src/main/java/org/elasticsearch/search/aggregations/bucket/range
parentd863cbaa07d30c4e66f8ffe84b652ae7494d0851 (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')
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/AbstractRangeBuilder.java48
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregatorBuilder.java25
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeParser.java13
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeAggregatorBuilder.java29
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/date/DateRangeParser.java10
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ipv4/IPv4RangeAggregatorBuilder.java23
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/ipv4/IpRangeParser.java13
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;
}
-
}