diff --git a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ParsedGeoBounds.java b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ParsedGeoBounds.java index 2b29ae15119d9..cbe1494b13f9d 100644 --- a/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ParsedGeoBounds.java +++ b/server/src/main/java/org/elasticsearch/search/aggregations/metrics/ParsedGeoBounds.java @@ -19,6 +19,7 @@ package org.elasticsearch.search.aggregations.metrics; +import org.elasticsearch.common.Nullable; import org.elasticsearch.common.collect.Tuple; import org.elasticsearch.common.geo.GeoBoundingBox; import org.elasticsearch.common.geo.GeoPoint; @@ -30,14 +31,17 @@ import java.io.IOException; -import static org.elasticsearch.common.xcontent.ConstructingObjectParser.constructorArg; import static org.elasticsearch.common.geo.GeoBoundingBox.BOTTOM_RIGHT_FIELD; import static org.elasticsearch.common.geo.GeoBoundingBox.BOUNDS_FIELD; import static org.elasticsearch.common.geo.GeoBoundingBox.LAT_FIELD; import static org.elasticsearch.common.geo.GeoBoundingBox.LON_FIELD; import static org.elasticsearch.common.geo.GeoBoundingBox.TOP_LEFT_FIELD; +import static org.elasticsearch.common.xcontent.ConstructingObjectParser.constructorArg; public class ParsedGeoBounds extends ParsedAggregation implements GeoBounds { + + // A top of Double.NEGATIVE_INFINITY yields an empty xContent, so the bounding box is null + @Nullable private GeoBoundingBox geoBoundingBox; @Override @@ -54,13 +58,15 @@ public XContentBuilder doXContentBody(XContentBuilder builder, Params params) th } @Override + @Nullable public GeoPoint topLeft() { - return geoBoundingBox.topLeft(); + return geoBoundingBox != null ? geoBoundingBox.topLeft() : null; } @Override + @Nullable public GeoPoint bottomRight() { - return geoBoundingBox.bottomRight(); + return geoBoundingBox != null ? geoBoundingBox.bottomRight() : null; } private static final ObjectParser PARSER = new ObjectParser<>(ParsedGeoBounds.class.getSimpleName(), true, diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/metrics/InternalGeoBoundsTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/metrics/InternalGeoBoundsTests.java index aa2e527b2e605..27ef688a8666d 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/metrics/InternalGeoBoundsTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/metrics/InternalGeoBoundsTests.java @@ -21,8 +21,6 @@ import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.search.aggregations.ParsedAggregation; -import org.elasticsearch.search.aggregations.metrics.InternalGeoBounds; -import org.elasticsearch.search.aggregations.metrics.ParsedGeoBounds; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; import org.elasticsearch.test.InternalAggregationTestCase;