From ccfd12312f53fa3a981bad35ce6615f3d72f337a Mon Sep 17 00:00:00 2001 From: javanna Date: Fri, 16 Feb 2018 16:55:08 +0100 Subject: [PATCH 1/3] Remove AcknowledgedRestListener in favour of RestToXContentListener This commit makes AcknowledgedResponse implement ToXContentObject, so that the response knows how to print its own content out to XContent, which allows us to remove AcknowledgedRestListener. --- .../ingest/common/GrokProcessorGetAction.java | 4 +- .../reroute/ClusterRerouteResponse.java | 15 ++++- .../ClusterUpdateSettingsResponse.java | 9 +-- .../indices/alias/IndicesAliasesResponse.java | 12 +--- .../indices/close/CloseIndexResponse.java | 14 +---- .../indices/create/CreateIndexResponse.java | 15 +---- .../indices/delete/DeleteIndexResponse.java | 12 +--- .../mapping/put/PutMappingResponse.java | 14 +---- .../admin/indices/open/OpenIndexResponse.java | 11 +--- .../support/master/AcknowledgedResponse.java | 14 ++++- .../rest/action/AcknowledgedRestListener.java | 58 ------------------- .../cluster/RestClusterRerouteAction.java | 26 ++------- .../cluster/RestDeleteRepositoryAction.java | 4 +- .../cluster/RestDeleteSnapshotAction.java | 4 +- .../cluster/RestDeleteStoredScriptAction.java | 4 +- .../cluster/RestPutRepositoryAction.java | 4 +- .../cluster/RestPutStoredScriptAction.java | 4 +- .../admin/indices/RestCloseIndexAction.java | 4 +- .../admin/indices/RestCreateIndexAction.java | 11 +--- .../admin/indices/RestDeleteIndexAction.java | 4 +- .../RestDeleteIndexTemplateAction.java | 4 +- .../indices/RestIndexDeleteAliasesAction.java | 4 +- .../indices/RestIndexPutAliasAction.java | 4 +- .../indices/RestIndicesAliasesAction.java | 7 +-- .../admin/indices/RestOpenIndexAction.java | 11 +--- .../indices/RestPutIndexTemplateAction.java | 4 +- .../admin/indices/RestPutMappingAction.java | 4 +- .../admin/indices/RestShrinkIndexAction.java | 11 +--- .../admin/indices/RestSplitIndexAction.java | 11 +--- .../indices/RestUpdateSettingsAction.java | 4 +- .../ingest/RestDeletePipelineAction.java | 4 +- .../action/ingest/RestPutPipelineAction.java | 4 +- 32 files changed, 88 insertions(+), 227 deletions(-) delete mode 100644 server/src/main/java/org/elasticsearch/rest/action/AcknowledgedRestListener.java diff --git a/modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/GrokProcessorGetAction.java b/modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/GrokProcessorGetAction.java index 45ffcc53a4d3d..c68f498c0eaf1 100644 --- a/modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/GrokProcessorGetAction.java +++ b/modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/GrokProcessorGetAction.java @@ -23,9 +23,9 @@ import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionRequestBuilder; import org.elasticsearch.action.ActionRequestValidationException; +import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.support.ActionFilters; import org.elasticsearch.action.support.HandledTransportAction; -import org.elasticsearch.action.support.master.AcknowledgedResponse; import org.elasticsearch.client.ElasticsearchClient; import org.elasticsearch.client.node.NodeClient; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; @@ -85,7 +85,7 @@ public RequestBuilder(ElasticsearchClient client) { } } - public static class Response extends AcknowledgedResponse implements ToXContentObject { + public static class Response extends ActionResponse implements ToXContentObject { private Map grokPatterns; public Response(Map grokPatterns) { diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/reroute/ClusterRerouteResponse.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/reroute/ClusterRerouteResponse.java index 74bf8f341f393..f3233f4147ea8 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/cluster/reroute/ClusterRerouteResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/reroute/ClusterRerouteResponse.java @@ -24,13 +24,16 @@ import org.elasticsearch.cluster.routing.allocation.RoutingExplanations; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; +import org.elasticsearch.common.xcontent.ToXContent; +import org.elasticsearch.common.xcontent.ToXContentObject; +import org.elasticsearch.common.xcontent.XContentBuilder; import java.io.IOException; /** * Response returned after a cluster reroute request */ -public class ClusterRerouteResponse extends AcknowledgedResponse { +public class ClusterRerouteResponse extends AcknowledgedResponse implements ToXContentObject { private ClusterState state; private RoutingExplanations explanations; @@ -71,4 +74,14 @@ public void writeTo(StreamOutput out) throws IOException { writeAcknowledged(out); RoutingExplanations.writeTo(explanations, out); } + + @Override + protected void addCustomFields(XContentBuilder builder, Params params) throws IOException { + builder.startObject("state"); + state.toXContent(builder, params); + builder.endObject(); + if (params.paramAsBoolean("explain", false)) { + explanations.toXContent(builder, ToXContent.EMPTY_PARAMS); + } + } } diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/settings/ClusterUpdateSettingsResponse.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/settings/ClusterUpdateSettingsResponse.java index 7ef0e76330da9..18b114efaad6f 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/cluster/settings/ClusterUpdateSettingsResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/settings/ClusterUpdateSettingsResponse.java @@ -25,7 +25,6 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.ConstructingObjectParser; -import org.elasticsearch.common.xcontent.ToXContentObject; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; @@ -34,7 +33,7 @@ /** * A response for a cluster update settings action. */ -public class ClusterUpdateSettingsResponse extends AcknowledgedResponse implements ToXContentObject { +public class ClusterUpdateSettingsResponse extends AcknowledgedResponse { private static final ParseField PERSISTENT = new ParseField("persistent"); private static final ParseField TRANSIENT = new ParseField("transient"); @@ -90,17 +89,13 @@ public void writeTo(StreamOutput out) throws IOException { } @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); - addAcknowledgedField(builder); + protected void addCustomFields(XContentBuilder builder, Params params) throws IOException { builder.startObject(PERSISTENT.getPreferredName()); persistentSettings.toXContent(builder, params); builder.endObject(); builder.startObject(TRANSIENT.getPreferredName()); transientSettings.toXContent(builder, params); builder.endObject(); - builder.endObject(); - return builder; } public static ClusterUpdateSettingsResponse fromXContent(XContentParser parser) throws IOException { diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/alias/IndicesAliasesResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/alias/IndicesAliasesResponse.java index c3cc0b5ebd40b..d26050af083f1 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/alias/IndicesAliasesResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/alias/IndicesAliasesResponse.java @@ -23,8 +23,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ConstructingObjectParser; -import org.elasticsearch.common.xcontent.ToXContentObject; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import java.io.IOException; @@ -32,7 +30,7 @@ /** * A response for a add/remove alias action. */ -public class IndicesAliasesResponse extends AcknowledgedResponse implements ToXContentObject { +public class IndicesAliasesResponse extends AcknowledgedResponse { private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>("indices_aliases", true, args -> new IndicesAliasesResponse((boolean) args[0])); @@ -59,14 +57,6 @@ public void writeTo(StreamOutput out) throws IOException { writeAcknowledged(out); } - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); - addAcknowledgedField(builder); - builder.endObject(); - return builder; - } - public static IndicesAliasesResponse fromXContent(XContentParser parser) throws IOException { return PARSER.apply(parser, null); } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/close/CloseIndexResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/close/CloseIndexResponse.java index 4607586d9fa91..de56c52f9f6de 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/close/CloseIndexResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/close/CloseIndexResponse.java @@ -23,8 +23,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ConstructingObjectParser; -import org.elasticsearch.common.xcontent.ToXContentObject; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import java.io.IOException; @@ -32,7 +30,7 @@ /** * A response for a close index action. */ -public class CloseIndexResponse extends AcknowledgedResponse implements ToXContentObject { +public class CloseIndexResponse extends AcknowledgedResponse { private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>("close_index", true, args -> new CloseIndexResponse((boolean) args[0])); @@ -59,15 +57,7 @@ public void writeTo(StreamOutput out) throws IOException { writeAcknowledged(out); } - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); - addAcknowledgedField(builder); - builder.endObject(); - return builder; - } - - public static CloseIndexResponse fromXContent(XContentParser parser) throws IOException { + public static CloseIndexResponse fromXContent(XContentParser parser) { return PARSER.apply(parser, null); } } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexResponse.java index be30a8c97b189..cd7d46e5f5084 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexResponse.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.ObjectParser; -import org.elasticsearch.common.xcontent.ToXContentObject; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; @@ -37,7 +36,7 @@ /** * A response for a create index action. */ -public class CreateIndexResponse extends AcknowledgedResponse implements ToXContentObject { +public class CreateIndexResponse extends AcknowledgedResponse { private static final ParseField SHARDS_ACKNOWLEDGED = new ParseField("shards_acknowledged"); private static final ParseField INDEX = new ParseField("index"); @@ -102,20 +101,12 @@ public String index() { return index; } - public void addCustomFields(XContentBuilder builder) throws IOException { + @Override + protected void addCustomFields(XContentBuilder builder, Params params) throws IOException { builder.field(SHARDS_ACKNOWLEDGED.getPreferredName(), isShardsAcknowledged()); builder.field(INDEX.getPreferredName(), index()); } - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); - addAcknowledgedField(builder); - addCustomFields(builder); - builder.endObject(); - return builder; - } - public static CreateIndexResponse fromXContent(XContentParser parser) { return PARSER.apply(parser, null); } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexResponse.java index 8217668e2177d..802db0b3c4b7d 100755 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexResponse.java @@ -23,8 +23,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ConstructingObjectParser; -import org.elasticsearch.common.xcontent.ToXContentObject; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import java.io.IOException; @@ -32,7 +30,7 @@ /** * A response for a delete index action. */ -public class DeleteIndexResponse extends AcknowledgedResponse implements ToXContentObject { +public class DeleteIndexResponse extends AcknowledgedResponse { private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>("delete_index", true, args -> new DeleteIndexResponse((boolean) args[0])); @@ -60,14 +58,6 @@ public void writeTo(StreamOutput out) throws IOException { writeAcknowledged(out); } - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); - addAcknowledgedField(builder); - builder.endObject(); - return builder; - } - public static DeleteIndexResponse fromXContent(XContentParser parser) throws IOException { return PARSER.apply(parser, null); } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingResponse.java index f427a316c2e81..8ccc5c8006a18 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingResponse.java @@ -23,8 +23,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ConstructingObjectParser; -import org.elasticsearch.common.xcontent.ToXContentObject; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import java.io.IOException; @@ -32,7 +30,7 @@ /** * The response of put mapping operation. */ -public class PutMappingResponse extends AcknowledgedResponse implements ToXContentObject { +public class PutMappingResponse extends AcknowledgedResponse { private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>("put_mapping", true, args -> new PutMappingResponse((boolean) args[0])); @@ -61,15 +59,7 @@ public void writeTo(StreamOutput out) throws IOException { writeAcknowledged(out); } - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); - addAcknowledgedField(builder); - builder.endObject(); - return builder; - } - - public static PutMappingResponse fromXContent(XContentParser parser) throws IOException { + public static PutMappingResponse fromXContent(XContentParser parser) { return PARSER.apply(parser, null); } } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/open/OpenIndexResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/open/OpenIndexResponse.java index 4e98c60265c76..93ac39594c4c1 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/open/OpenIndexResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/open/OpenIndexResponse.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.ObjectParser; -import org.elasticsearch.common.xcontent.ToXContentObject; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; @@ -37,7 +36,7 @@ /** * A response for a open index action. */ -public class OpenIndexResponse extends AcknowledgedResponse implements ToXContentObject { +public class OpenIndexResponse extends AcknowledgedResponse { private static final String SHARDS_ACKNOWLEDGED = "shards_acknowledged"; private static final ParseField SHARDS_ACKNOWLEDGED_PARSER = new ParseField(SHARDS_ACKNOWLEDGED); @@ -89,15 +88,11 @@ public void writeTo(StreamOutput out) throws IOException { } @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); - addAcknowledgedField(builder); + protected void addCustomFields(XContentBuilder builder, Params params) throws IOException { builder.field(SHARDS_ACKNOWLEDGED, isShardsAcknowledged()); - builder.endObject(); - return builder; } - public static OpenIndexResponse fromXContent(XContentParser parser) throws IOException { + public static OpenIndexResponse fromXContent(XContentParser parser) { return PARSER.apply(parser, null); } } diff --git a/server/src/main/java/org/elasticsearch/action/support/master/AcknowledgedResponse.java b/server/src/main/java/org/elasticsearch/action/support/master/AcknowledgedResponse.java index 18cb416a763fe..b2a6903313310 100755 --- a/server/src/main/java/org/elasticsearch/action/support/master/AcknowledgedResponse.java +++ b/server/src/main/java/org/elasticsearch/action/support/master/AcknowledgedResponse.java @@ -24,6 +24,7 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.ObjectParser; +import org.elasticsearch.common.xcontent.ToXContentObject; import org.elasticsearch.common.xcontent.XContentBuilder; import java.io.IOException; @@ -34,7 +35,7 @@ * Abstract class that allows to mark action responses that support acknowledgements. * Facilitates consistency across different api. */ -public abstract class AcknowledgedResponse extends ActionResponse { +public abstract class AcknowledgedResponse extends ActionResponse implements ToXContentObject { private static final ParseField ACKNOWLEDGED = new ParseField("acknowledged"); @@ -75,7 +76,16 @@ protected void writeAcknowledged(StreamOutput out) throws IOException { out.writeBoolean(acknowledged); } - protected void addAcknowledgedField(XContentBuilder builder) throws IOException { + @Override + public final XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { + builder.startObject(); builder.field(ACKNOWLEDGED.getPreferredName(), isAcknowledged()); + addCustomFields(builder, params); + builder.endObject(); + return builder; + } + + protected void addCustomFields(XContentBuilder builder, Params params) throws IOException { + } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/AcknowledgedRestListener.java b/server/src/main/java/org/elasticsearch/rest/action/AcknowledgedRestListener.java deleted file mode 100644 index 9f08c43fa0f3f..0000000000000 --- a/server/src/main/java/org/elasticsearch/rest/action/AcknowledgedRestListener.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.rest.action; - -import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; -import org.elasticsearch.rest.RestResponse; - -import java.io.IOException; - -import static org.elasticsearch.rest.RestStatus.OK; - -public class AcknowledgedRestListener extends RestBuilderListener { - - public AcknowledgedRestListener(RestChannel channel) { - super(channel); - } - - @Override - public RestResponse buildResponse(T response, XContentBuilder builder) throws Exception { - // TODO - Once AcknowledgedResponse implements ToXContent, this method should be updated to call response.toXContent. - builder.startObject() - .field(Fields.ACKNOWLEDGED, response.isAcknowledged()); - addCustomFields(builder, response); - builder.endObject(); - return new BytesRestResponse(OK, builder); - } - - /** - * Adds api specific fields to the rest response - * Does nothing by default but can be overridden by subclasses - */ - protected void addCustomFields(XContentBuilder builder, T response) throws IOException { - - } - - static final class Fields { - static final String ACKNOWLEDGED = "acknowledged"; - } -} diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterRerouteAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterRerouteAction.java index 1eafe29cfe7fb..4b019e98e6231 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterRerouteAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterRerouteAction.java @@ -20,7 +20,6 @@ package org.elasticsearch.rest.action.admin.cluster; import org.elasticsearch.action.admin.cluster.reroute.ClusterRerouteRequest; -import org.elasticsearch.action.admin.cluster.reroute.ClusterRerouteResponse; import org.elasticsearch.client.Requests; import org.elasticsearch.client.node.NodeClient; import org.elasticsearch.cluster.ClusterState; @@ -31,12 +30,10 @@ import org.elasticsearch.common.settings.SettingsFilter; import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.ObjectParser.ValueType; -import org.elasticsearch.common.xcontent.ToXContent; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; import java.util.Collections; @@ -71,27 +68,16 @@ public String getName() { @Override public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { ClusterRerouteRequest clusterRerouteRequest = createRequest(request); - + settingsFilter.addFilterSettingParams(request); + if (clusterRerouteRequest.explain()) { + request.params().put("explain", Boolean.TRUE.toString()); + } // by default, return everything but metadata final String metric = request.param("metric"); if (metric == null) { request.params().put("metric", DEFAULT_METRICS); } - - return channel -> - client.admin().cluster().reroute(clusterRerouteRequest, new AcknowledgedRestListener(channel) { - @Override - protected void addCustomFields(XContentBuilder builder, ClusterRerouteResponse response) throws IOException { - builder.startObject("state"); - settingsFilter.addFilterSettingParams(request); - response.getState().toXContent(builder, request); - builder.endObject(); - if (clusterRerouteRequest.explain()) { - assert response.getExplanations() != null; - response.getExplanations().toXContent(builder, ToXContent.EMPTY_PARAMS); - } - } - }); + return channel -> client.admin().cluster().reroute(clusterRerouteRequest, new RestToXContentListener<>(channel)); } private static final Set RESPONSE_PARAMS; diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteRepositoryAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteRepositoryAction.java index 33455365dcccc..d2740827d1ebf 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteRepositoryAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteRepositoryAction.java @@ -25,7 +25,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -52,6 +52,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC deleteRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteRepositoryRequest.masterNodeTimeout())); deleteRepositoryRequest.timeout(request.paramAsTime("timeout", deleteRepositoryRequest.timeout())); deleteRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteRepositoryRequest.masterNodeTimeout())); - return channel -> client.admin().cluster().deleteRepository(deleteRepositoryRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().cluster().deleteRepository(deleteRepositoryRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteSnapshotAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteSnapshotAction.java index fbd8822a84ea4..6b18e9a3d5043 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteSnapshotAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteSnapshotAction.java @@ -25,7 +25,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -50,6 +50,6 @@ public String getName() { public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { DeleteSnapshotRequest deleteSnapshotRequest = deleteSnapshotRequest(request.param("repository"), request.param("snapshot")); deleteSnapshotRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteSnapshotRequest.masterNodeTimeout())); - return channel -> client.admin().cluster().deleteSnapshot(deleteSnapshotRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().cluster().deleteSnapshot(deleteSnapshotRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteStoredScriptAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteStoredScriptAction.java index 0085de36f1925..2da902df9dab6 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteStoredScriptAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestDeleteStoredScriptAction.java @@ -24,7 +24,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -50,6 +50,6 @@ public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client deleteStoredScriptRequest.timeout(request.paramAsTime("timeout", deleteStoredScriptRequest.timeout())); deleteStoredScriptRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteStoredScriptRequest.masterNodeTimeout())); - return channel -> client.admin().cluster().deleteStoredScript(deleteStoredScriptRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().cluster().deleteStoredScript(deleteStoredScriptRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestPutRepositoryAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestPutRepositoryAction.java index b87871e064e3a..62cc06cc404ce 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestPutRepositoryAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestPutRepositoryAction.java @@ -26,7 +26,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -58,6 +58,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC putRepositoryRequest.verify(request.paramAsBoolean("verify", true)); putRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", putRepositoryRequest.masterNodeTimeout())); putRepositoryRequest.timeout(request.paramAsTime("timeout", putRepositoryRequest.timeout())); - return channel -> client.admin().cluster().putRepository(putRepositoryRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().cluster().putRepository(putRepositoryRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestPutStoredScriptAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestPutStoredScriptAction.java index 27083503195e0..4a4530b6fa3ee 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestPutStoredScriptAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestPutStoredScriptAction.java @@ -26,7 +26,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import org.elasticsearch.script.StoredScriptSource; import java.io.IOException; @@ -61,6 +61,6 @@ public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client PutStoredScriptRequest putRequest = new PutStoredScriptRequest(id, context, content, request.getXContentType(), source); putRequest.masterNodeTimeout(request.paramAsTime("master_timeout", putRequest.masterNodeTimeout())); putRequest.timeout(request.paramAsTime("timeout", putRequest.timeout())); - return channel -> client.admin().cluster().putStoredScript(putRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().cluster().putStoredScript(putRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestCloseIndexAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestCloseIndexAction.java index d750dedd4b8d0..b2475cafcbeb6 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestCloseIndexAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestCloseIndexAction.java @@ -27,7 +27,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -49,7 +49,7 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC closeIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", closeIndexRequest.masterNodeTimeout())); closeIndexRequest.timeout(request.paramAsTime("timeout", closeIndexRequest.timeout())); closeIndexRequest.indicesOptions(IndicesOptions.fromRequest(request, closeIndexRequest.indicesOptions())); - return channel -> client.admin().indices().close(closeIndexRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().indices().close(closeIndexRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestCreateIndexAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestCreateIndexAction.java index 0934d8557158b..201a3b66b086d 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestCreateIndexAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestCreateIndexAction.java @@ -20,15 +20,13 @@ package org.elasticsearch.rest.action.admin.indices; import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; -import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; import org.elasticsearch.action.support.ActiveShardCount; import org.elasticsearch.client.node.NodeClient; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -52,11 +50,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC createIndexRequest.timeout(request.paramAsTime("timeout", createIndexRequest.timeout())); createIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", createIndexRequest.masterNodeTimeout())); createIndexRequest.waitForActiveShards(ActiveShardCount.parseString(request.param("wait_for_active_shards"))); - return channel -> client.admin().indices().create(createIndexRequest, new AcknowledgedRestListener(channel) { - @Override - public void addCustomFields(XContentBuilder builder, CreateIndexResponse response) throws IOException { - response.addCustomFields(builder); - } - }); + return channel -> client.admin().indices().create(createIndexRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestDeleteIndexAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestDeleteIndexAction.java index d3f2566026151..f6c4c17857287 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestDeleteIndexAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestDeleteIndexAction.java @@ -27,7 +27,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -49,6 +49,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC deleteIndexRequest.timeout(request.paramAsTime("timeout", deleteIndexRequest.timeout())); deleteIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteIndexRequest.masterNodeTimeout())); deleteIndexRequest.indicesOptions(IndicesOptions.fromRequest(request, deleteIndexRequest.indicesOptions())); - return channel -> client.admin().indices().delete(deleteIndexRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().indices().delete(deleteIndexRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestDeleteIndexTemplateAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestDeleteIndexTemplateAction.java index c3fad98087755..114e043e2e17a 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestDeleteIndexTemplateAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestDeleteIndexTemplateAction.java @@ -24,7 +24,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -43,6 +43,6 @@ public String getName() { public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { DeleteIndexTemplateRequest deleteIndexTemplateRequest = new DeleteIndexTemplateRequest(request.param("name")); deleteIndexTemplateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteIndexTemplateRequest.masterNodeTimeout())); - return channel -> client.admin().indices().deleteTemplate(deleteIndexTemplateRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().indices().deleteTemplate(deleteIndexTemplateRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndexDeleteAliasesAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndexDeleteAliasesAction.java index 696b7768404b4..270a9c8fdc4f8 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndexDeleteAliasesAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndexDeleteAliasesAction.java @@ -26,7 +26,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -53,6 +53,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC indicesAliasesRequest.addAliasAction(AliasActions.remove().indices(indices).aliases(aliases)); indicesAliasesRequest.masterNodeTimeout(request.paramAsTime("master_timeout", indicesAliasesRequest.masterNodeTimeout())); - return channel -> client.admin().indices().aliases(indicesAliasesRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().indices().aliases(indicesAliasesRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndexPutAliasAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndexPutAliasAction.java index dc95e15802e88..73e9bad45a57b 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndexPutAliasAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndexPutAliasAction.java @@ -27,7 +27,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; import java.util.Map; @@ -118,6 +118,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC aliasAction.filter(filter); } indicesAliasesRequest.addAliasAction(aliasAction); - return channel -> client.admin().indices().aliases(indicesAliasesRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().indices().aliases(indicesAliasesRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndicesAliasesAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndicesAliasesAction.java index faae93803c84b..fe4155f8cb292 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndicesAliasesAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestIndicesAliasesAction.java @@ -20,16 +20,13 @@ package org.elasticsearch.rest.action.admin.indices; import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest; -import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions; import org.elasticsearch.client.node.NodeClient; -import org.elasticsearch.common.ParseField; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -58,6 +55,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC if (indicesAliasesRequest.getAliasActions().isEmpty()) { throw new IllegalArgumentException("No action specified"); } - return channel -> client.admin().indices().aliases(indicesAliasesRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().indices().aliases(indicesAliasesRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestOpenIndexAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestOpenIndexAction.java index 73817c1565d4a..fcf2422be7c2b 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestOpenIndexAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestOpenIndexAction.java @@ -20,17 +20,15 @@ package org.elasticsearch.rest.action.admin.indices; import org.elasticsearch.action.admin.indices.open.OpenIndexRequest; -import org.elasticsearch.action.admin.indices.open.OpenIndexResponse; import org.elasticsearch.action.support.ActiveShardCount; import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.client.node.NodeClient; import org.elasticsearch.common.Strings; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -56,11 +54,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC if (waitForActiveShards != null) { openIndexRequest.waitForActiveShards(ActiveShardCount.parseString(waitForActiveShards)); } - return channel -> client.admin().indices().open(openIndexRequest, new AcknowledgedRestListener(channel) { - @Override - protected void addCustomFields(XContentBuilder builder, OpenIndexResponse response) throws IOException { - builder.field("shards_acknowledged", response.isShardsAcknowledged()); - } - }); + return channel -> client.admin().indices().open(openIndexRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutIndexTemplateAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutIndexTemplateAction.java index c96f127ee7a94..58f5dcb3e9c4e 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutIndexTemplateAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutIndexTemplateAction.java @@ -28,7 +28,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; import java.util.Arrays; @@ -63,7 +63,7 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC putRequest.create(request.paramAsBoolean("create", false)); putRequest.cause(request.param("cause", "")); putRequest.source(request.requiredContent(), request.getXContentType()); - return channel -> client.admin().indices().putTemplate(putRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().indices().putTemplate(putRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutMappingAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutMappingAction.java index cdac83037db30..6d3804eddc90e 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutMappingAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutMappingAction.java @@ -27,7 +27,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -73,6 +73,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC putMappingRequest.timeout(request.paramAsTime("timeout", putMappingRequest.timeout())); putMappingRequest.masterNodeTimeout(request.paramAsTime("master_timeout", putMappingRequest.masterNodeTimeout())); putMappingRequest.indicesOptions(IndicesOptions.fromRequest(request, putMappingRequest.indicesOptions())); - return channel -> client.admin().indices().putMapping(putMappingRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().indices().putMapping(putMappingRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestShrinkIndexAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestShrinkIndexAction.java index c72dad2654e61..bff0ca6e473d5 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestShrinkIndexAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestShrinkIndexAction.java @@ -20,16 +20,14 @@ package org.elasticsearch.rest.action.admin.indices; import org.elasticsearch.action.admin.indices.shrink.ResizeRequest; -import org.elasticsearch.action.admin.indices.shrink.ResizeResponse; import org.elasticsearch.action.admin.indices.shrink.ResizeType; import org.elasticsearch.action.support.ActiveShardCount; import org.elasticsearch.client.node.NodeClient; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -59,11 +57,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC shrinkIndexRequest.timeout(request.paramAsTime("timeout", shrinkIndexRequest.timeout())); shrinkIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", shrinkIndexRequest.masterNodeTimeout())); shrinkIndexRequest.setWaitForActiveShards(ActiveShardCount.parseString(request.param("wait_for_active_shards"))); - return channel -> client.admin().indices().resizeIndex(shrinkIndexRequest, new AcknowledgedRestListener(channel) { - @Override - public void addCustomFields(XContentBuilder builder, ResizeResponse response) throws IOException { - response.addCustomFields(builder); - } - }); + return channel -> client.admin().indices().resizeIndex(shrinkIndexRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestSplitIndexAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestSplitIndexAction.java index 9bd1711d15a6e..f506f28090568 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestSplitIndexAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestSplitIndexAction.java @@ -20,16 +20,14 @@ package org.elasticsearch.rest.action.admin.indices; import org.elasticsearch.action.admin.indices.shrink.ResizeRequest; -import org.elasticsearch.action.admin.indices.shrink.ResizeResponse; import org.elasticsearch.action.admin.indices.shrink.ResizeType; import org.elasticsearch.action.support.ActiveShardCount; import org.elasticsearch.client.node.NodeClient; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -59,11 +57,6 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC shrinkIndexRequest.timeout(request.paramAsTime("timeout", shrinkIndexRequest.timeout())); shrinkIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", shrinkIndexRequest.masterNodeTimeout())); shrinkIndexRequest.setWaitForActiveShards(ActiveShardCount.parseString(request.param("wait_for_active_shards"))); - return channel -> client.admin().indices().resizeIndex(shrinkIndexRequest, new AcknowledgedRestListener(channel) { - @Override - public void addCustomFields(XContentBuilder builder, ResizeResponse response) throws IOException { - response.addCustomFields(builder); - } - }); + return channel -> client.admin().indices().resizeIndex(shrinkIndexRequest, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestUpdateSettingsAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestUpdateSettingsAction.java index c2b6b09fa3ae3..93090ba25eee6 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestUpdateSettingsAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestUpdateSettingsAction.java @@ -28,7 +28,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; import java.util.HashMap; @@ -73,7 +73,7 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC } updateSettingsRequest.settings(settings); - return channel -> client.admin().indices().updateSettings(updateSettingsRequest, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().indices().updateSettings(updateSettingsRequest, new RestToXContentListener<>(channel)); } @Override diff --git a/server/src/main/java/org/elasticsearch/rest/action/ingest/RestDeletePipelineAction.java b/server/src/main/java/org/elasticsearch/rest/action/ingest/RestDeletePipelineAction.java index 5ad478deea628..8fca614f63c1c 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/ingest/RestDeletePipelineAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/ingest/RestDeletePipelineAction.java @@ -25,7 +25,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -45,6 +45,6 @@ public RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient cl DeletePipelineRequest request = new DeletePipelineRequest(restRequest.param("id")); request.masterNodeTimeout(restRequest.paramAsTime("master_timeout", request.masterNodeTimeout())); request.timeout(restRequest.paramAsTime("timeout", request.timeout())); - return channel -> client.admin().cluster().deletePipeline(request, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().cluster().deletePipeline(request, new RestToXContentListener<>(channel)); } } diff --git a/server/src/main/java/org/elasticsearch/rest/action/ingest/RestPutPipelineAction.java b/server/src/main/java/org/elasticsearch/rest/action/ingest/RestPutPipelineAction.java index aa3149fc13d19..9cd66c8c9e456 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/ingest/RestPutPipelineAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/ingest/RestPutPipelineAction.java @@ -28,7 +28,7 @@ import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.action.AcknowledgedRestListener; +import org.elasticsearch.rest.action.RestToXContentListener; import java.io.IOException; @@ -50,7 +50,7 @@ public RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient cl PutPipelineRequest request = new PutPipelineRequest(restRequest.param("id"), sourceTuple.v2(), sourceTuple.v1()); request.masterNodeTimeout(restRequest.paramAsTime("master_timeout", request.masterNodeTimeout())); request.timeout(restRequest.paramAsTime("timeout", request.timeout())); - return channel -> client.admin().cluster().putPipeline(request, new AcknowledgedRestListener<>(channel)); + return channel -> client.admin().cluster().putPipeline(request, new RestToXContentListener<>(channel)); } } From c899ee0997f58031afa10058fc11ddf14196441f Mon Sep 17 00:00:00 2001 From: javanna Date: Wed, 21 Feb 2018 10:49:54 +0100 Subject: [PATCH 2/3] adjust ShardsAcknowledgedResponse xcontent output --- .../action/admin/indices/create/CreateIndexResponse.java | 1 + .../action/admin/indices/rollover/RolloverResponse.java | 8 ++------ .../action/support/master/ShardsAcknowledgedResponse.java | 3 ++- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexResponse.java index c0ea47e3b90b9..b95d29a206a8c 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexResponse.java @@ -88,6 +88,7 @@ public String index() { @Override protected void addCustomFields(XContentBuilder builder, Params params) throws IOException { + super.addCustomFields(builder, params); builder.field(INDEX.getPreferredName(), index()); } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/rollover/RolloverResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/rollover/RolloverResponse.java index 58c84385f49fc..c241b99848770 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/rollover/RolloverResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/rollover/RolloverResponse.java @@ -145,21 +145,17 @@ public void writeTo(StreamOutput out) throws IOException { } @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); + protected void addCustomFields(XContentBuilder builder, Params params) throws IOException { + super.addCustomFields(builder, params); builder.field(OLD_INDEX.getPreferredName(), oldIndex); builder.field(NEW_INDEX.getPreferredName(), newIndex); builder.field(ROLLED_OVER.getPreferredName(), rolledOver); builder.field(DRY_RUN.getPreferredName(), dryRun); - addAcknowledgedField(builder); - addShardsAcknowledgedField(builder); builder.startObject(CONDITIONS.getPreferredName()); for (Map.Entry entry : conditionStatus.entrySet()) { builder.field(entry.getKey(), entry.getValue()); } builder.endObject(); - builder.endObject(); - return builder; } public static RolloverResponse fromXContent(XContentParser parser) { diff --git a/server/src/main/java/org/elasticsearch/action/support/master/ShardsAcknowledgedResponse.java b/server/src/main/java/org/elasticsearch/action/support/master/ShardsAcknowledgedResponse.java index c8672456acb33..515b659af28c0 100644 --- a/server/src/main/java/org/elasticsearch/action/support/master/ShardsAcknowledgedResponse.java +++ b/server/src/main/java/org/elasticsearch/action/support/master/ShardsAcknowledgedResponse.java @@ -70,7 +70,8 @@ protected void writeShardsAcknowledged(StreamOutput out) throws IOException { out.writeBoolean(shardsAcknowledged); } - protected void addShardsAcknowledgedField(XContentBuilder builder) throws IOException { + @Override + protected void addCustomFields(XContentBuilder builder, Params params) throws IOException { builder.field(SHARDS_ACKNOWLEDGED.getPreferredName(), isShardsAcknowledged()); } } From 4fc3f8bfb2fc4e0ca999f052456cfeb3a0c3d572 Mon Sep 17 00:00:00 2001 From: javanna Date: Wed, 21 Feb 2018 15:57:54 +0100 Subject: [PATCH 3/3] add test --- .../reroute/ClusterRerouteResponseTests.java | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 server/src/test/java/org/elasticsearch/action/admin/cluster/reroute/ClusterRerouteResponseTests.java diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/reroute/ClusterRerouteResponseTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/reroute/ClusterRerouteResponseTests.java new file mode 100644 index 0000000000000..79b4fa6dedc1e --- /dev/null +++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/reroute/ClusterRerouteResponseTests.java @@ -0,0 +1,202 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.elasticsearch.action.admin.cluster.reroute; + +import org.elasticsearch.Version; +import org.elasticsearch.cluster.ClusterName; +import org.elasticsearch.cluster.ClusterState; +import org.elasticsearch.cluster.metadata.IndexMetaData; +import org.elasticsearch.cluster.metadata.MetaData; +import org.elasticsearch.cluster.node.DiscoveryNode; +import org.elasticsearch.cluster.node.DiscoveryNodes; +import org.elasticsearch.cluster.routing.allocation.RerouteExplanation; +import org.elasticsearch.cluster.routing.allocation.RoutingExplanations; +import org.elasticsearch.cluster.routing.allocation.command.AllocateReplicaAllocationCommand; +import org.elasticsearch.cluster.routing.allocation.decider.Decision; +import org.elasticsearch.common.collect.ImmutableOpenMap; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.transport.TransportAddress; +import org.elasticsearch.common.xcontent.ToXContent; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.json.JsonXContent; +import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.test.ESTestCase; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +public class ClusterRerouteResponseTests extends ESTestCase { + + public void testToXContent() throws IOException { + DiscoveryNode node0 = new DiscoveryNode("node0", new TransportAddress(TransportAddress.META_ADDRESS, 9000), Version.CURRENT); + DiscoveryNodes nodes = new DiscoveryNodes.Builder().add(node0).masterNodeId(node0.getId()).build(); + IndexMetaData indexMetaData = IndexMetaData.builder("index").settings(Settings.builder() + .put(IndexSettings.INDEX_CHECK_ON_STARTUP.getKey(), true) + .put(IndexSettings.MAX_SCRIPT_FIELDS_SETTING.getKey(), 10) + .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1) + .put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0) + .put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT).build()).build(); + ImmutableOpenMap.Builder openMapBuilder = ImmutableOpenMap.builder(); + openMapBuilder.put("index", indexMetaData); + MetaData metaData = MetaData.builder().indices(openMapBuilder.build()).build(); + ClusterState clusterState = ClusterState.builder(new ClusterName("test")).nodes(nodes).metaData(metaData).build(); + + RoutingExplanations routingExplanations = new RoutingExplanations(); + routingExplanations.add(new RerouteExplanation(new AllocateReplicaAllocationCommand("index", 0, "node0"), Decision.YES)); + ClusterRerouteResponse clusterRerouteResponse = new ClusterRerouteResponse(true, clusterState, routingExplanations); + { + XContentBuilder builder = JsonXContent.contentBuilder().prettyPrint(); + clusterRerouteResponse.toXContent(builder, ToXContent.EMPTY_PARAMS); + assertEquals("{\n" + + " \"acknowledged\" : true,\n" + + " \"state\" : {\n" + + " \"version\" : 0,\n" + + " \"state_uuid\" : \"" + clusterState.stateUUID() + "\",\n" + + " \"master_node\" : \"node0\",\n" + + " \"blocks\" : { },\n" + + " \"nodes\" : {\n" + + " \"node0\" : {\n" + + " \"name\" : \"\",\n" + + " \"ephemeral_id\" : \"" + node0.getEphemeralId() + "\",\n" + + " \"transport_address\" : \"0.0.0.0:9000\",\n" + + " \"attributes\" : { }\n" + + " }\n" + + " },\n" + + " \"metadata\" : {\n" + + " \"cluster_uuid\" : \"_na_\",\n" + + " \"templates\" : { },\n" + + " \"indices\" : {\n" + + " \"index\" : {\n" + + " \"state\" : \"open\",\n" + + " \"settings\" : {\n" + + " \"index\" : {\n" + + " \"shard\" : {\n" + + " \"check_on_startup\" : \"true\"\n" + + " },\n" + + " \"number_of_shards\" : \"1\",\n" + + " \"number_of_replicas\" : \"0\",\n" + + " \"version\" : {\n" + + " \"created\" : \"" + Version.CURRENT.id + "\"\n" + + " },\n" + + " \"max_script_fields\" : \"10\"\n" + + " }\n" + + " },\n" + + " \"mappings\" : { },\n" + + " \"aliases\" : [ ],\n" + + " \"primary_terms\" : {\n" + + " \"0\" : 0\n" + + " },\n" + + " \"in_sync_allocations\" : {\n" + + " \"0\" : [ ]\n" + + " }\n" + + " }\n" + + " },\n" + + " \"index-graveyard\" : {\n" + + " \"tombstones\" : [ ]\n" + + " }\n" + + " },\n" + + " \"routing_table\" : {\n" + + " \"indices\" : { }\n" + + " },\n" + + " \"routing_nodes\" : {\n" + + " \"unassigned\" : [ ],\n" + + " \"nodes\" : {\n" + + " \"node0\" : [ ]\n" + + " }\n" + + " }\n" + + " }\n" + + "}", builder.string()); + + } + { + XContentBuilder builder = JsonXContent.contentBuilder().prettyPrint(); + Map params = new HashMap<>(); + params.put("explain", "true"); + params.put("metric", "version,master_node"); + clusterRerouteResponse.toXContent(builder, new ToXContent.MapParams(params)); + assertEquals("{\n" + + " \"acknowledged\" : true,\n" + + " \"state\" : {\n" + + " \"version\" : 0,\n" + + " \"state_uuid\" : \"" + clusterState.stateUUID() + "\",\n" + + " \"master_node\" : \"node0\"\n" + + " },\n" + + " \"explanations\" : [\n" + + " {\n" + + " \"command\" : \"allocate_replica\",\n" + + " \"parameters\" : {\n" + + " \"index\" : \"index\",\n" + + " \"shard\" : 0,\n" + + " \"node\" : \"node0\"\n" + + " },\n" + + " \"decisions\" : [\n" + + " {\n" + + " \"decider\" : null,\n" + + " \"decision\" : \"YES\",\n" + + " \"explanation\" : \"none\"\n" + + " }\n" + + " ]\n" + + " }\n" + + " ]\n" + + "}", builder.string()); + } + { + XContentBuilder builder = JsonXContent.contentBuilder().prettyPrint(); + Map params = new HashMap<>(); + params.put("metric", "metadata"); + params.put("settings_filter", "index.number*,index.version.created"); + clusterRerouteResponse.toXContent(builder, new ToXContent.MapParams(params)); + assertEquals("{\n" + + " \"acknowledged\" : true,\n" + + " \"state\" : {\n" + + " \"metadata\" : {\n" + + " \"cluster_uuid\" : \"_na_\",\n" + + " \"templates\" : { },\n" + + " \"indices\" : {\n" + + " \"index\" : {\n" + + " \"state\" : \"open\",\n" + + " \"settings\" : {\n" + + " \"index\" : {\n" + + " \"max_script_fields\" : \"10\",\n" + + " \"shard\" : {\n" + + " \"check_on_startup\" : \"true\"\n" + + " }\n" + + " }\n" + + " },\n" + + " \"mappings\" : { },\n" + + " \"aliases\" : [ ],\n" + + " \"primary_terms\" : {\n" + + " \"0\" : 0\n" + + " },\n" + + " \"in_sync_allocations\" : {\n" + + " \"0\" : [ ]\n" + + " }\n" + + " }\n" + + " },\n" + + " \"index-graveyard\" : {\n" + + " \"tombstones\" : [ ]\n" + + " }\n" + + " }\n" + + " }\n" + + "}", builder.string()); + } + } +}