From 78a38fed6eb15acf91964a659d6489eb87bfd206 Mon Sep 17 00:00:00 2001 From: javanna Date: Mon, 22 May 2017 10:01:51 +0200 Subject: [PATCH] Move getType to Aggregation interface Given that both InternalAggregation and ParsedAggregation have this method, it makes sense to move it to the interface they both implement. --- .../elasticsearch/search/aggregations/Aggregation.java | 7 +++++++ .../search/aggregations/InternalAggregation.java | 6 +----- .../search/aggregations/ParsedAggregation.java | 8 -------- .../InternalMultiBucketAggregationTestCase.java | 2 +- .../elasticsearch/test/InternalAggregationTestCase.java | 2 +- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/Aggregation.java b/core/src/main/java/org/elasticsearch/search/aggregations/Aggregation.java index eb55f1e7abcd1..2d8a81b080829 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/Aggregation.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/Aggregation.java @@ -39,6 +39,13 @@ public interface Aggregation extends ToXContent { */ String getName(); + /** + * @return a string representing the type of the aggregation. This type is added to + * the aggregation name in the response, so that it can later be used by clients + * to determine type of the aggregation and parse it into the proper object. + */ + String getType(); + /** * Get the optional byte array metadata that was set on the aggregation */ diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/InternalAggregation.java b/core/src/main/java/org/elasticsearch/search/aggregations/InternalAggregation.java index c86d8afed5b3a..2143e4f14ab61 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/InternalAggregation.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/InternalAggregation.java @@ -169,11 +169,7 @@ public List pipelineAggregators() { return pipelineAggregators; } - /** - * Returns a string representing the type of the aggregation. This type is added to - * the aggregation name in the response, so that it can later be used by REST clients - * to determine the internal type of the aggregation. - */ + @Override public String getType() { return getWriteableName(); } diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/ParsedAggregation.java b/core/src/main/java/org/elasticsearch/search/aggregations/ParsedAggregation.java index 97f27043124ae..d79baac06b097 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/ParsedAggregation.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/ParsedAggregation.java @@ -57,14 +57,6 @@ public final Map getMetaData() { return metadata; } - /** - * Returns a string representing the type of the aggregation. This type is added to - * the aggregation name in the response, so that it can later be used by REST clients - * to determine the internal type of the aggregation. - */ - //TODO it may make sense to move getType to the Aggregation interface given that we are duplicating it in both implementations - public abstract String getType(); - @Override public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params params) throws IOException { // Concatenates the type and the name of the aggregation (ex: top_hits#foo) diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/InternalMultiBucketAggregationTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/InternalMultiBucketAggregationTestCase.java index a4e61d56ca210..64f7c3cca208a 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/InternalMultiBucketAggregationTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/InternalMultiBucketAggregationTestCase.java @@ -122,7 +122,7 @@ protected void assertMultiBucketsAggregation(MultiBucketsAggregation expected, M assertTrue(expected instanceof InternalAggregation); assertEquals(expected.getName(), actual.getName()); assertEquals(expected.getMetaData(), actual.getMetaData()); - assertEquals(((InternalAggregation) expected).getType(), ((ParsedAggregation) actual).getType()); + assertEquals(expected.getType(), actual.getType()); } protected void assertBucket(MultiBucketsAggregation.Bucket expected, MultiBucketsAggregation.Bucket actual, boolean checkOrder) { diff --git a/test/framework/src/main/java/org/elasticsearch/test/InternalAggregationTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/InternalAggregationTestCase.java index 1eefe6f6c2b63..90cec479f1fa2 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/InternalAggregationTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/InternalAggregationTestCase.java @@ -333,7 +333,7 @@ protected

P parseAndAssert(final InternalAggregati assertEquals(aggregation.getMetaData(), parsedAggregation.getMetaData()); assertTrue(parsedAggregation instanceof ParsedAggregation); - assertEquals(aggregation.getType(), ((ParsedAggregation) parsedAggregation).getType()); + assertEquals(aggregation.getType(), parsedAggregation.getType()); } BytesReference parsedBytes = toXContent(parsedAggregation, xContentType, params, humanReadable);