From a0e1d44a44e1a1bc41c8387cd6a7ae6ba0ed179d Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Tue, 4 Oct 2016 12:46:54 -0400 Subject: [PATCH] Remove lenient URL parameter parsing This commit adapts x-plugins for a change in core Elasticsearch that removes lenient URL parameter parsing. Relates elastic/elasticsearch#3641 Original commit: elastic/x-pack-elasticsearch@cc0687f32cecfb152d2383cb59b9a0521016ce68 --- .../org/elasticsearch/license/Licensing.java | 16 ++--- .../license/RestDeleteLicenseAction.java | 8 ++- .../license/RestGetLicenseAction.java | 6 +- .../license/RestPutLicenseAction.java | 7 +- .../graph/rest/action/RestGraphAction.java | 7 +- .../action/MonitoringBulkRequest.java | 2 +- .../action/MonitoringBulkRequestBuilder.java | 5 +- ...BackwardsCompatibilityAliasesResource.java | 5 +- .../rest/MonitoringRestHandler.java | 1 + .../rest/action/RestMonitoringBulkAction.java | 8 ++- .../xpack/rest/XPackRestHandler.java | 13 ++-- .../rest/action/RestXPackInfoAction.java | 68 ++++++++++--------- .../rest/action/RestXPackUsageAction.java | 33 +++++---- .../action/role/PutRoleRequestBuilder.java | 3 +- .../xpack/security/client/SecurityClient.java | 2 +- .../rest/action/RestAuthenticateAction.java | 9 +-- .../realm/RestClearRealmCacheAction.java | 7 +- .../role/RestClearRolesCacheAction.java | 7 +- .../action/role/RestDeleteRoleAction.java | 19 +++--- .../rest/action/role/RestGetRolesAction.java | 9 +-- .../rest/action/role/RestPutRoleAction.java | 12 ++-- .../action/user/RestChangePasswordAction.java | 35 ++++++---- .../action/user/RestDeleteUserAction.java | 11 +-- .../rest/action/user/RestGetUsersAction.java | 9 +-- .../rest/action/user/RestPutUserAction.java | 7 +- .../action/user/RestSetEnabledAction.java | 18 ++--- .../watcher/rest/WatcherRestHandler.java | 14 ++-- .../rest/action/RestAckWatchAction.java | 7 +- .../rest/action/RestActivateWatchAction.java | 45 ++++++------ .../rest/action/RestDeleteWatchAction.java | 10 +-- .../rest/action/RestExecuteWatchAction.java | 5 +- .../rest/action/RestGetWatchAction.java | 7 +- .../action/RestHijackOperationAction.java | 31 +++++---- .../rest/action/RestPutWatchAction.java | 10 +-- .../rest/action/RestWatchServiceAction.java | 28 ++++---- .../rest/action/RestWatcherStatsAction.java | 6 +- .../exporter/http/HttpExporterIT.java | 1 - .../action/RestExecuteWatchActionTests.java | 4 +- 38 files changed, 265 insertions(+), 230 deletions(-) diff --git a/elasticsearch/src/main/java/org/elasticsearch/license/Licensing.java b/elasticsearch/src/main/java/org/elasticsearch/license/Licensing.java index 5d93ec95c22..42874669db9 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/license/Licensing.java +++ b/elasticsearch/src/main/java/org/elasticsearch/license/Licensing.java @@ -5,29 +5,22 @@ */ package org.elasticsearch.license; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.cluster.metadata.MetaData; -import org.elasticsearch.cluster.service.ClusterService; -import org.elasticsearch.common.inject.Module; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.env.Environment; import org.elasticsearch.plugins.ActionPlugin; import org.elasticsearch.rest.RestHandler; -import org.elasticsearch.watcher.ResourceWatcherService; -import org.elasticsearch.xpack.support.clock.Clock; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; import static java.util.Collections.emptyList; import static org.elasticsearch.xpack.XPackPlugin.isTribeNode; import static org.elasticsearch.xpack.XPackPlugin.transportClientMode; - public class Licensing implements ActionPlugin { public static final String NAME = "license"; @@ -69,4 +62,5 @@ public class Licensing implements ActionPlugin { // TODO convert this wildcard to a real setting return Collections.singletonList(Setting.groupSetting("license.", Setting.Property.NodeScope)); } + } diff --git a/elasticsearch/src/main/java/org/elasticsearch/license/RestDeleteLicenseAction.java b/elasticsearch/src/main/java/org/elasticsearch/license/RestDeleteLicenseAction.java index d4c54a5cc3e..f9c0b0ead2c 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/license/RestDeleteLicenseAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/license/RestDeleteLicenseAction.java @@ -7,13 +7,14 @@ package org.elasticsearch.license; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.action.AcknowledgedRestListener; import org.elasticsearch.xpack.XPackClient; import org.elasticsearch.xpack.rest.XPackRestHandler; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.DELETE; public class RestDeleteLicenseAction extends XPackRestHandler { @@ -33,9 +34,10 @@ public class RestDeleteLicenseAction extends XPackRestHandler { } @Override - public void handleRequest(final RestRequest request, final RestChannel channel, final XPackClient client) { - client.es().admin().cluster().execute(DeleteLicenseAction.INSTANCE, + public RestChannelConsumer doPrepareRequest(final RestRequest request, final XPackClient client) throws IOException { + return channel -> client.es().admin().cluster().execute(DeleteLicenseAction.INSTANCE, new DeleteLicenseRequest(), new AcknowledgedRestListener<>(channel)); } + } diff --git a/elasticsearch/src/main/java/org/elasticsearch/license/RestGetLicenseAction.java b/elasticsearch/src/main/java/org/elasticsearch/license/RestGetLicenseAction.java index ab0cb22e818..4ed5cd87f00 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/license/RestGetLicenseAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/license/RestGetLicenseAction.java @@ -10,7 +10,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -18,6 +17,7 @@ import org.elasticsearch.rest.action.RestBuilderListener; import org.elasticsearch.xpack.XPackClient; import org.elasticsearch.xpack.rest.XPackRestHandler; +import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -48,14 +48,14 @@ public class RestGetLicenseAction extends XPackRestHandler { * The licenses are sorted by latest issue_date */ @Override - public void handleRequest(final RestRequest request, final RestChannel channel, final XPackClient client) { + public RestChannelConsumer doPrepareRequest(final RestRequest request, final XPackClient client) throws IOException { final Map overrideParams = new HashMap<>(2); overrideParams.put(License.REST_VIEW_MODE, "true"); overrideParams.put(License.LICENSE_VERSION_MODE, String.valueOf(License.VERSION_CURRENT)); final ToXContent.Params params = new ToXContent.DelegatingMapParams(overrideParams, request); GetLicenseRequest getLicenseRequest = new GetLicenseRequest(); getLicenseRequest.local(request.paramAsBoolean("local", getLicenseRequest.local())); - client.es().admin().cluster().execute(GetLicenseAction.INSTANCE, getLicenseRequest, + return channel -> client.es().admin().cluster().execute(GetLicenseAction.INSTANCE, getLicenseRequest, new RestBuilderListener(channel) { @Override public RestResponse buildResponse(GetLicenseResponse response, XContentBuilder builder) throws Exception { diff --git a/elasticsearch/src/main/java/org/elasticsearch/license/RestPutLicenseAction.java b/elasticsearch/src/main/java/org/elasticsearch/license/RestPutLicenseAction.java index 186b6a81046..b2935cc6a02 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/license/RestPutLicenseAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/license/RestPutLicenseAction.java @@ -10,7 +10,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -19,6 +18,8 @@ import org.elasticsearch.rest.action.RestBuilderListener; import org.elasticsearch.xpack.XPackClient; import org.elasticsearch.xpack.rest.XPackRestHandler; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; @@ -45,11 +46,11 @@ public class RestPutLicenseAction extends XPackRestHandler { } @Override - public void handleRequest(final RestRequest request, final RestChannel channel, final XPackClient client) { + public RestChannelConsumer doPrepareRequest(final RestRequest request, final XPackClient client) throws IOException { PutLicenseRequest putLicenseRequest = new PutLicenseRequest(); putLicenseRequest.license(request.content().utf8ToString()); putLicenseRequest.acknowledge(request.paramAsBoolean("acknowledge", false)); - client.es().admin().cluster().execute(PutLicenseAction.INSTANCE, putLicenseRequest, + return channel -> client.es().admin().cluster().execute(PutLicenseAction.INSTANCE, putLicenseRequest, new RestBuilderListener(channel) { @Override public RestResponse buildResponse(PutLicenseResponse response, XContentBuilder builder) throws Exception { diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/graph/rest/action/RestGraphAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/graph/rest/action/RestGraphAction.java index 6a3a645d63f..6120391026a 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/graph/rest/action/RestGraphAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/graph/rest/action/RestGraphAction.java @@ -26,20 +26,17 @@ import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.indices.query.IndicesQueriesRegistry; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.action.RestActions; import org.elasticsearch.rest.action.RestToXContentListener; import org.elasticsearch.xpack.XPackClient; import org.elasticsearch.xpack.graph.action.GraphExploreRequest; -import org.elasticsearch.xpack.graph.action.GraphExploreResponse; import org.elasticsearch.xpack.graph.action.Hop; import org.elasticsearch.xpack.graph.action.VertexRequest; import org.elasticsearch.xpack.graph.action.GraphExploreRequest.TermBoost; import org.elasticsearch.xpack.rest.XPackRestHandler; - /** * @see GraphExploreRequest */ @@ -84,7 +81,7 @@ public class RestGraphAction extends XPackRestHandler { } @Override - public void handleRequest(final RestRequest request, final RestChannel channel, final XPackClient client) throws IOException { + public RestChannelConsumer doPrepareRequest(final RestRequest request, final XPackClient client) throws IOException { GraphExploreRequest graphRequest = new GraphExploreRequest(Strings.splitStringByCommaToArray(request.param("index"))); graphRequest.indicesOptions(IndicesOptions.fromRequest(request, graphRequest.indicesOptions())); graphRequest.routing(request.param("routing")); @@ -111,7 +108,7 @@ public class RestGraphAction extends XPackRestHandler { } graphRequest.types(Strings.splitStringByCommaToArray(request.param("type"))); - client.es().execute(INSTANCE, graphRequest, new RestToXContentListener(channel)); + return channel -> client.es().execute(INSTANCE, graphRequest, new RestToXContentListener<>(channel)); } private void parseHop(XContentParser parser, QueryParseContext context, Hop currentHop, diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/action/MonitoringBulkRequest.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/action/MonitoringBulkRequest.java index cbbc56d506f..673f1f7bb86 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/action/MonitoringBulkRequest.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/action/MonitoringBulkRequest.java @@ -85,7 +85,7 @@ public class MonitoringBulkRequest extends ActionRequest * Parses a monitoring bulk request and builds the list of documents to be indexed. */ public MonitoringBulkRequest add(BytesReference content, String defaultMonitoringId, String defaultMonitoringApiVersion, - String defaultType) throws Exception { + String defaultType) throws IOException { // MonitoringBulkRequest accepts a body request that has the same format as the BulkRequest: // instead of duplicating the parsing logic here we use a new BulkRequest instance to parse the content. BulkRequest bulkRequest = Requests.bulkRequest().add(content, null, defaultType); diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/action/MonitoringBulkRequestBuilder.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/action/MonitoringBulkRequestBuilder.java index 69aa19a6a17..c83bcf8da88 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/action/MonitoringBulkRequestBuilder.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/action/MonitoringBulkRequestBuilder.java @@ -9,6 +9,8 @@ import org.elasticsearch.action.ActionRequestBuilder; import org.elasticsearch.client.ElasticsearchClient; import org.elasticsearch.common.bytes.BytesReference; +import java.io.IOException; + public class MonitoringBulkRequestBuilder extends ActionRequestBuilder { @@ -22,8 +24,9 @@ public class MonitoringBulkRequestBuilder } public MonitoringBulkRequestBuilder add(BytesReference content, String defaultId, String defaultApiVersion, String defaultType) - throws Exception { + throws IOException { request.add(content, defaultId, defaultApiVersion, defaultType); return this; } + } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/BackwardsCompatibilityAliasesResource.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/BackwardsCompatibilityAliasesResource.java index d0a59618e3c..471b3ee4854 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/BackwardsCompatibilityAliasesResource.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/BackwardsCompatibilityAliasesResource.java @@ -23,6 +23,7 @@ import org.elasticsearch.common.xcontent.json.JsonXContent; import org.elasticsearch.rest.RestStatus; import java.io.IOException; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -52,9 +53,7 @@ public class BackwardsCompatibilityAliasesResource extends HttpResource { boolean needNewAliases = false; XContentBuilder request; try { - Map params = parameters(); - params.put("filter_path", "*.aliases"); - Response response = client.performRequest("GET", "/.marvel-es-1-*", params); + Response response = client.performRequest("GET", "/.marvel-es-1-*", Collections.singletonMap("filter_path", "*.aliases")); try (XContentParser parser = JsonXContent.jsonXContent.createParser(response.getEntity().getContent())) { Map indices = parser.map(); request = JsonXContent.contentBuilder(); diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/rest/MonitoringRestHandler.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/rest/MonitoringRestHandler.java index 042882e1012..02b758fb4ae 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/rest/MonitoringRestHandler.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/rest/MonitoringRestHandler.java @@ -15,4 +15,5 @@ public abstract class MonitoringRestHandler extends XPackRestHandler { public MonitoringRestHandler(Settings settings) { super(settings); } + } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/rest/action/RestMonitoringBulkAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/rest/action/RestMonitoringBulkAction.java index 9ff72fb2852..f73a8163a0d 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/rest/action/RestMonitoringBulkAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/monitoring/rest/action/RestMonitoringBulkAction.java @@ -11,7 +11,6 @@ import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -22,6 +21,8 @@ import org.elasticsearch.xpack.monitoring.action.MonitoringBulkRequestBuilder; import org.elasticsearch.xpack.monitoring.action.MonitoringBulkResponse; import org.elasticsearch.xpack.monitoring.rest.MonitoringRestHandler; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; @@ -41,7 +42,7 @@ public class RestMonitoringBulkAction extends MonitoringRestHandler { } @Override - public void handleRequest(RestRequest request, RestChannel channel, XPackClient client) throws Exception { + public RestChannelConsumer doPrepareRequest(RestRequest request, XPackClient client) throws IOException { String defaultType = request.param("type"); String id = request.param(MONITORING_ID); @@ -64,7 +65,7 @@ public class RestMonitoringBulkAction extends MonitoringRestHandler { MonitoringBulkRequestBuilder requestBuilder = client.monitoring().prepareMonitoringBulk(); requestBuilder.add(request.content(), id, version, defaultType); - requestBuilder.execute(new RestBuilderListener(channel) { + return channel -> requestBuilder.execute(new RestBuilderListener(channel) { @Override public RestResponse buildResponse(MonitoringBulkResponse response, XContentBuilder builder) throws Exception { builder.startObject(); @@ -87,4 +88,5 @@ public class RestMonitoringBulkAction extends MonitoringRestHandler { static final String ERRORS = "errors"; static final String ERROR = "error"; } + } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/XPackRestHandler.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/XPackRestHandler.java index 931a0ea448d..690f09f4176 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/XPackRestHandler.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/XPackRestHandler.java @@ -8,13 +8,11 @@ package org.elasticsearch.xpack.rest; import org.elasticsearch.client.node.NodeClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.rest.BaseRestHandler; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.xpack.XPackClient; -/** - * - */ +import java.io.IOException; + public abstract class XPackRestHandler extends BaseRestHandler { protected static String URI_BASE = "/_xpack"; @@ -24,9 +22,10 @@ public abstract class XPackRestHandler extends BaseRestHandler { } @Override - public final void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws Exception { - handleRequest(request, channel, new XPackClient(client)); + public final RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { + return doPrepareRequest(request, new XPackClient(client)); } - protected abstract void handleRequest(RestRequest request, RestChannel channel, XPackClient client) throws Exception; + protected abstract RestChannelConsumer doPrepareRequest(RestRequest request, XPackClient client) throws IOException; + } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/action/RestXPackInfoAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/action/RestXPackInfoAction.java index e5de600ab08..ef6f7c088f6 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/action/RestXPackInfoAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/action/RestXPackInfoAction.java @@ -5,13 +5,13 @@ */ package org.elasticsearch.xpack.rest.action; +import java.io.IOException; import java.util.EnumSet; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -35,49 +35,53 @@ public class RestXPackInfoAction extends XPackRestHandler { } @Override - public void handleRequest(RestRequest request, RestChannel restChannel, XPackClient client) throws Exception { + public RestChannelConsumer doPrepareRequest(RestRequest request, XPackClient client) throws IOException { // we piggyback verbosity on "human" output boolean verbose = request.paramAsBoolean("human", true); EnumSet categories = XPackInfoRequest.Category .toSet(request.paramAsStringArray("categories", new String[] { "_all" })); - client.prepareInfo().setVerbose(verbose).setCategories(categories).execute(new RestBuilderListener(restChannel) { - @Override - public RestResponse buildResponse(XPackInfoResponse infoResponse, XContentBuilder builder) throws Exception { + return channel -> + client.prepareInfo() + .setVerbose(verbose) + .setCategories(categories) + .execute(new RestBuilderListener(channel) { + @Override + public RestResponse buildResponse(XPackInfoResponse infoResponse, XContentBuilder builder) throws Exception { - // we treat HEAD requests as simple pings to ensure that X-Pack is installed - // we still execute the action as we want this request to be authorized - if (request.method() == RestRequest.Method.HEAD) { - return new BytesRestResponse(OK, builder); - } + // we treat HEAD requests as simple pings to ensure that X-Pack is installed + // we still execute the action as we want this request to be authorized + if (request.method() == RestRequest.Method.HEAD) { + return new BytesRestResponse(OK, builder); + } - builder.startObject(); + builder.startObject(); - if (infoResponse.getBuildInfo() != null) { - builder.field("build", infoResponse.getBuildInfo(), request); - } + if (infoResponse.getBuildInfo() != null) { + builder.field("build", infoResponse.getBuildInfo(), request); + } - if (infoResponse.getLicenseInfo() != null) { - builder.field("license", infoResponse.getLicenseInfo(), request); - } else if (categories.contains(XPackInfoRequest.Category.LICENSE)) { - // if the user requested the license info, and there is no license, we should send - // back an explicit null value (indicating there is no license). This is different - // than not adding the license info at all - builder.nullField("license"); - } + if (infoResponse.getLicenseInfo() != null) { + builder.field("license", infoResponse.getLicenseInfo(), request); + } else if (categories.contains(XPackInfoRequest.Category.LICENSE)) { + // if the user requested the license info, and there is no license, we should send + // back an explicit null value (indicating there is no license). This is different + // than not adding the license info at all + builder.nullField("license"); + } - if (infoResponse.getFeatureSetsInfo() != null) { - builder.field("features", infoResponse.getFeatureSetsInfo(), request); - } + if (infoResponse.getFeatureSetsInfo() != null) { + builder.field("features", infoResponse.getFeatureSetsInfo(), request); + } - if (verbose) { - builder.field("tagline", "You know, for X"); - } + if (verbose) { + builder.field("tagline", "You know, for X"); + } - builder.endObject(); - return new BytesRestResponse(OK, builder); - } - }); + builder.endObject(); + return new BytesRestResponse(OK, builder); + } + }); } } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/action/RestXPackUsageAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/action/RestXPackUsageAction.java index 6b645867843..0570b3ddf9a 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/action/RestXPackUsageAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/rest/action/RestXPackUsageAction.java @@ -8,9 +8,9 @@ package org.elasticsearch.xpack.rest.action; import org.elasticsearch.action.support.master.MasterNodeRequest; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -21,6 +21,8 @@ import org.elasticsearch.xpack.action.XPackUsageRequestBuilder; import org.elasticsearch.xpack.action.XPackUsageResponse; import org.elasticsearch.xpack.rest.XPackRestHandler; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.GET; import static org.elasticsearch.rest.RestStatus.OK; @@ -33,19 +35,20 @@ public class RestXPackUsageAction extends XPackRestHandler { } @Override - public void handleRequest(RestRequest request, RestChannel restChannel, XPackClient client) throws Exception { - new XPackUsageRequestBuilder(client.es()) - .setMasterNodeTimeout(request.paramAsTime("master_timeout", MasterNodeRequest.DEFAULT_MASTER_NODE_TIMEOUT)) - .execute(new RestBuilderListener(restChannel) { - @Override - public RestResponse buildResponse(XPackUsageResponse response, XContentBuilder builder) throws Exception { - builder.startObject(); - for (XPackFeatureSet.Usage usage : response.getUsages()) { - builder.field(usage.name(), usage); - } - builder.endObject(); - return new BytesRestResponse(OK, builder); - } - }); + public RestChannelConsumer doPrepareRequest(RestRequest request, XPackClient client) throws IOException { + final TimeValue masterTimeout = request.paramAsTime("master_timeout", MasterNodeRequest.DEFAULT_MASTER_NODE_TIMEOUT); + return channel -> new XPackUsageRequestBuilder(client.es()) + .setMasterNodeTimeout(masterTimeout) + .execute(new RestBuilderListener(channel) { + @Override + public RestResponse buildResponse(XPackUsageResponse response, XContentBuilder builder) throws Exception { + builder.startObject(); + for (XPackFeatureSet.Usage usage : response.getUsages()) { + builder.field(usage.name(), usage); + } + builder.endObject(); + return new BytesRestResponse(OK, builder); + } + }); } } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/action/role/PutRoleRequestBuilder.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/action/role/PutRoleRequestBuilder.java index db895d6a481..4fe7f92e2fa 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/action/role/PutRoleRequestBuilder.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/action/role/PutRoleRequestBuilder.java @@ -13,6 +13,7 @@ import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.xpack.security.authz.RoleDescriptor; import org.elasticsearch.xpack.security.authz.permission.FieldPermissions; +import java.io.IOException; import java.util.Map; /** @@ -29,7 +30,7 @@ public class PutRoleRequestBuilder extends ActionRequestBuilder client.execute(AuthenticateAction.INSTANCE, new AuthenticateRequest(username), new RestBuilderListener(channel) { @Override public RestResponse buildResponse(AuthenticateResponse authenticateResponse, XContentBuilder builder) throws Exception { diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/realm/RestClearRealmCacheAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/realm/RestClearRealmCacheAction.java index 0428b3abfbb..034fdddabf4 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/realm/RestClearRealmCacheAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/realm/RestClearRealmCacheAction.java @@ -9,13 +9,14 @@ import org.elasticsearch.client.node.NodeClient; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.rest.BaseRestHandler; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.action.RestActions.NodesResponseRestListener; import org.elasticsearch.xpack.security.action.realm.ClearRealmCacheRequest; import org.elasticsearch.xpack.security.client.SecurityClient; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; public class RestClearRealmCacheAction extends BaseRestHandler { @@ -37,14 +38,14 @@ public class RestClearRealmCacheAction extends BaseRestHandler { } @Override - public void handleRequest(RestRequest request, final RestChannel channel, NodeClient client) throws Exception { + public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { String[] realms = request.paramAsStringArrayOrEmptyIfAll("realms"); String[] usernames = request.paramAsStringArrayOrEmptyIfAll("usernames"); ClearRealmCacheRequest req = new ClearRealmCacheRequest().realms(realms).usernames(usernames); - new SecurityClient(client).clearRealmCache(req, new NodesResponseRestListener<>(channel)); + return channel -> new SecurityClient(client).clearRealmCache(req, new NodesResponseRestListener<>(channel)); } } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestClearRolesCacheAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestClearRolesCacheAction.java index eae56bafe68..fda01cbcc7a 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestClearRolesCacheAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestClearRolesCacheAction.java @@ -9,13 +9,14 @@ import org.elasticsearch.client.node.NodeClient; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.rest.BaseRestHandler; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.action.RestActions.NodesResponseRestListener; import org.elasticsearch.xpack.security.action.role.ClearRolesCacheRequest; import org.elasticsearch.xpack.security.client.SecurityClient; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; /** @@ -36,12 +37,12 @@ public class RestClearRolesCacheAction extends BaseRestHandler { } @Override - public void handleRequest(RestRequest request, final RestChannel channel, NodeClient client) throws Exception { + public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { String[] roles = request.paramAsStringArrayOrEmptyIfAll("name"); ClearRolesCacheRequest req = new ClearRolesCacheRequest().names(roles); - new SecurityClient(client).clearRolesCache(req, new NodesResponseRestListener<>(channel)); + return channel -> new SecurityClient(client).clearRolesCache(req, new NodesResponseRestListener<>(channel)); } } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestDeleteRoleAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestDeleteRoleAction.java index fa1a8108572..77fef1ad085 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestDeleteRoleAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestDeleteRoleAction.java @@ -11,7 +11,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -20,6 +19,8 @@ import org.elasticsearch.rest.action.RestBuilderListener; import org.elasticsearch.xpack.security.action.role.DeleteRoleResponse; import org.elasticsearch.xpack.security.client.SecurityClient; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.DELETE; /** @@ -40,16 +41,18 @@ public class RestDeleteRoleAction extends BaseRestHandler { } @Override - public void handleRequest(RestRequest request, final RestChannel channel, NodeClient client) throws Exception { - new SecurityClient(client).prepareDeleteRole(request.param("name")) - .setRefreshPolicy(request.param("refresh")) + public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { + final String name = request.param("name"); + final String refresh = request.param("refresh"); + + return channel -> new SecurityClient(client).prepareDeleteRole(name) + .setRefreshPolicy(refresh) .execute(new RestBuilderListener(channel) { @Override public RestResponse buildResponse(DeleteRoleResponse response, XContentBuilder builder) throws Exception { - return new BytesRestResponse(response.found() ? RestStatus.OK : RestStatus.NOT_FOUND, - builder.startObject() - .field("found", response.found()) - .endObject()); + return new BytesRestResponse( + response.found() ? RestStatus.OK : RestStatus.NOT_FOUND, + builder.startObject().field("found", response.found()).endObject()); } }); } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestGetRolesAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestGetRolesAction.java index f0492ef8271..7586be19808 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestGetRolesAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestGetRolesAction.java @@ -12,15 +12,16 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.rest.action.RestBuilderListener; import org.elasticsearch.xpack.security.action.role.GetRolesResponse; -import org.elasticsearch.xpack.security.client.SecurityClient; import org.elasticsearch.xpack.security.authz.RoleDescriptor; +import org.elasticsearch.xpack.security.client.SecurityClient; + +import java.io.IOException; import static org.elasticsearch.rest.RestRequest.Method.GET; @@ -47,9 +48,9 @@ public class RestGetRolesAction extends BaseRestHandler { } @Override - public void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws Exception { + public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { final String[] roles = request.paramAsStringArray("name", Strings.EMPTY_ARRAY); - new SecurityClient(client).prepareGetRoles(roles).execute(new RestBuilderListener(channel) { + return channel -> new SecurityClient(client).prepareGetRoles(roles).execute(new RestBuilderListener(channel) { @Override public RestResponse buildResponse(GetRolesResponse response, XContentBuilder builder) throws Exception { builder.startObject(); diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestPutRoleAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestPutRoleAction.java index 44b0c227944..d8d9e789536 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestPutRoleAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/role/RestPutRoleAction.java @@ -11,7 +11,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -21,6 +20,8 @@ import org.elasticsearch.xpack.security.action.role.PutRoleRequestBuilder; import org.elasticsearch.xpack.security.action.role.PutRoleResponse; import org.elasticsearch.xpack.security.client.SecurityClient; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; @@ -47,16 +48,13 @@ public class RestPutRoleAction extends BaseRestHandler { } @Override - public void handleRequest(RestRequest request, final RestChannel channel, NodeClient client) throws Exception { + public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { PutRoleRequestBuilder requestBuilder = new SecurityClient(client).preparePutRole(request.param("name"), request.content()); requestBuilder.setRefreshPolicy(request.param("refresh")); - requestBuilder.execute(new RestBuilderListener(channel) { + return channel -> requestBuilder.execute(new RestBuilderListener(channel) { @Override public RestResponse buildResponse(PutRoleResponse putRoleResponse, XContentBuilder builder) throws Exception { - return new BytesRestResponse(RestStatus.OK, - builder.startObject() - .field("role", putRoleResponse) - .endObject()); + return new BytesRestResponse(RestStatus.OK, builder.startObject().field("role", putRoleResponse).endObject()); } }); } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestChangePasswordAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestChangePasswordAction.java index 7b04fc6f011..93f23ad409d 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestChangePasswordAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestChangePasswordAction.java @@ -11,16 +11,17 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.rest.action.RestBuilderListener; import org.elasticsearch.xpack.security.SecurityContext; -import org.elasticsearch.xpack.security.user.User; import org.elasticsearch.xpack.security.action.user.ChangePasswordResponse; import org.elasticsearch.xpack.security.client.SecurityClient; +import org.elasticsearch.xpack.security.user.User; + +import java.io.IOException; import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; @@ -42,21 +43,27 @@ public class RestChangePasswordAction extends BaseRestHandler { } @Override - public void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws Exception { + public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { final User user = securityContext.getUser(); - String username = request.param("username"); - if (username == null) { + final String username; + if (request.param("username") == null) { username = user.runAs() == null ? user.principal() : user.runAs().principal(); + } else { + username = request.param("username"); } - new SecurityClient(client).prepareChangePassword(username, request.content()) - .setRefreshPolicy(request.param("refresh")) - .execute(new RestBuilderListener(channel) { - @Override - public RestResponse buildResponse(ChangePasswordResponse changePasswordResponse, XContentBuilder builder) throws - Exception { - return new BytesRestResponse(RestStatus.OK, channel.newBuilder().startObject().endObject()); - } - }); + final String refresh = request.param("refresh"); + return channel -> + new SecurityClient(client).prepareChangePassword(username, request.content()) + .setRefreshPolicy(refresh) + .execute(new RestBuilderListener(channel) { + @Override + public RestResponse buildResponse( + ChangePasswordResponse changePasswordResponse, + XContentBuilder builder) + throws Exception { + return new BytesRestResponse(RestStatus.OK, channel.newBuilder().startObject().endObject()); + } + }); } } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestDeleteUserAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestDeleteUserAction.java index 4198aecebfc..22d0da694c9 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestDeleteUserAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestDeleteUserAction.java @@ -11,7 +11,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -20,6 +19,8 @@ import org.elasticsearch.rest.action.RestBuilderListener; import org.elasticsearch.xpack.security.action.user.DeleteUserResponse; import org.elasticsearch.xpack.security.client.SecurityClient; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.DELETE; /** @@ -40,9 +41,11 @@ public class RestDeleteUserAction extends BaseRestHandler { } @Override - public void handleRequest(RestRequest request, final RestChannel channel, NodeClient client) throws Exception { - new SecurityClient(client).prepareDeleteUser(request.param("username")) - .setRefreshPolicy(request.param("refresh")) + public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { + final String username = request.param("username"); + final String refresh = request.param("refresh"); + return channel -> new SecurityClient(client).prepareDeleteUser(username) + .setRefreshPolicy(refresh) .execute(new RestBuilderListener(channel) { @Override public RestResponse buildResponse(DeleteUserResponse response, XContentBuilder builder) throws Exception { diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestGetUsersAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestGetUsersAction.java index 344d7dfee1c..bf4d7ded01a 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestGetUsersAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestGetUsersAction.java @@ -12,15 +12,16 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.rest.action.RestBuilderListener; -import org.elasticsearch.xpack.security.user.User; import org.elasticsearch.xpack.security.action.user.GetUsersResponse; import org.elasticsearch.xpack.security.client.SecurityClient; +import org.elasticsearch.xpack.security.user.User; + +import java.io.IOException; import static org.elasticsearch.rest.RestRequest.Method.GET; @@ -47,10 +48,10 @@ public class RestGetUsersAction extends BaseRestHandler { } @Override - public void handleRequest(RestRequest request, final RestChannel channel, NodeClient client) throws Exception { + public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { String[] usernames = request.paramAsStringArray("username", Strings.EMPTY_ARRAY); - new SecurityClient(client).prepareGetUsers(usernames).execute(new RestBuilderListener(channel) { + return channel -> new SecurityClient(client).prepareGetUsers(usernames).execute(new RestBuilderListener(channel) { @Override public RestResponse buildResponse(GetUsersResponse response, XContentBuilder builder) throws Exception { builder.startObject(); diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestPutUserAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestPutUserAction.java index 6a9dc220a0e..d71333412ba 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestPutUserAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestPutUserAction.java @@ -11,7 +11,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -21,6 +20,8 @@ import org.elasticsearch.xpack.security.action.user.PutUserRequestBuilder; import org.elasticsearch.xpack.security.action.user.PutUserResponse; import org.elasticsearch.xpack.security.client.SecurityClient; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; @@ -47,10 +48,10 @@ public class RestPutUserAction extends BaseRestHandler { } @Override - public void handleRequest(RestRequest request, final RestChannel channel, NodeClient client) throws Exception { + public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { PutUserRequestBuilder requestBuilder = new SecurityClient(client).preparePutUser(request.param("username"), request.content()); requestBuilder.setRefreshPolicy(request.param("refresh")); - requestBuilder.execute(new RestBuilderListener(channel) { + return channel -> requestBuilder.execute(new RestBuilderListener(channel) { @Override public RestResponse buildResponse(PutUserResponse putUserResponse, XContentBuilder builder) throws Exception { return new BytesRestResponse(RestStatus.OK, diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestSetEnabledAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestSetEnabledAction.java index e7e8cc96628..4979da3bb19 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestSetEnabledAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/security/rest/action/user/RestSetEnabledAction.java @@ -11,7 +11,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BaseRestHandler; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -20,6 +19,8 @@ import org.elasticsearch.rest.action.RestBuilderListener; import org.elasticsearch.xpack.security.action.user.SetEnabledResponse; import org.elasticsearch.xpack.security.client.SecurityClient; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; @@ -39,15 +40,16 @@ public class RestSetEnabledAction extends BaseRestHandler { } @Override - public void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws Exception { + public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { final boolean enabled = request.path().endsWith("_enable"); assert enabled || request.path().endsWith("_disable"); - new SecurityClient(client).prepareSetEnabled(request.param("username"), enabled) + final String username = request.param("username"); + return channel -> new SecurityClient(client).prepareSetEnabled(username, enabled) .execute(new RestBuilderListener(channel) { - @Override - public RestResponse buildResponse(SetEnabledResponse setEnabledResponse, XContentBuilder builder) throws Exception { - return new BytesRestResponse(RestStatus.OK, channel.newBuilder().startObject().endObject()); - } - }); + @Override + public RestResponse buildResponse(SetEnabledResponse setEnabledResponse, XContentBuilder builder) throws Exception { + return new BytesRestResponse(RestStatus.OK, channel.newBuilder().startObject().endObject()); + } + }); } } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/WatcherRestHandler.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/WatcherRestHandler.java index b18def7ebc8..f0ce0564e11 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/WatcherRestHandler.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/WatcherRestHandler.java @@ -5,17 +5,14 @@ */ package org.elasticsearch.xpack.watcher.rest; -import org.elasticsearch.client.Client; import org.elasticsearch.client.node.NodeClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.rest.BaseRestHandler; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.xpack.watcher.client.WatcherClient; -/** - * - */ +import java.io.IOException; + public abstract class WatcherRestHandler extends BaseRestHandler { protected static String URI_BASE = "_xpack/watcher"; @@ -25,9 +22,10 @@ public abstract class WatcherRestHandler extends BaseRestHandler { } @Override - public final void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws Exception { - handleRequest(request, channel, new WatcherClient(client)); + public final RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { + return doPrepareRequest(request, new WatcherClient(client)); } - protected abstract void handleRequest(RestRequest request, RestChannel channel, WatcherClient client) throws Exception; + protected abstract RestChannelConsumer doPrepareRequest(RestRequest request, WatcherClient client) throws IOException; + } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestAckWatchAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestAckWatchAction.java index caa7bbdc462..537eb61ca3d 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestAckWatchAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestAckWatchAction.java @@ -9,7 +9,6 @@ import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -22,6 +21,8 @@ import org.elasticsearch.xpack.watcher.transport.actions.ack.AckWatchRequest; import org.elasticsearch.xpack.watcher.transport.actions.ack.AckWatchResponse; import org.elasticsearch.xpack.watcher.watch.Watch; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; @@ -56,14 +57,14 @@ public class RestAckWatchAction extends WatcherRestHandler { } @Override - public void handleRequest(RestRequest request, RestChannel restChannel, WatcherClient client) throws Exception { + public RestChannelConsumer doPrepareRequest(RestRequest request, WatcherClient client) throws IOException { AckWatchRequest ackWatchRequest = new AckWatchRequest(request.param("id")); String[] actions = request.paramAsStringArray("actions", null); if (actions != null) { ackWatchRequest.setActionIds(actions); } ackWatchRequest.masterNodeTimeout(request.paramAsTime("master_timeout", ackWatchRequest.masterNodeTimeout())); - client.ackWatch(ackWatchRequest, new RestBuilderListener(restChannel) { + return channel -> client.ackWatch(ackWatchRequest, new RestBuilderListener(channel) { @Override public RestResponse buildResponse(AckWatchResponse response, XContentBuilder builder) throws Exception { return new BytesRestResponse(RestStatus.OK, builder.startObject() diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestActivateWatchAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestActivateWatchAction.java index 4a44d8fa890..0bb6bf51d1d 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestActivateWatchAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestActivateWatchAction.java @@ -9,7 +9,6 @@ import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -22,6 +21,8 @@ import org.elasticsearch.xpack.watcher.transport.actions.activate.ActivateWatchR import org.elasticsearch.xpack.watcher.transport.actions.activate.ActivateWatchResponse; import org.elasticsearch.xpack.watcher.watch.Watch; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; @@ -48,35 +49,37 @@ public class RestActivateWatchAction extends WatcherRestHandler { } @Override - public void handleRequest(RestRequest request, RestChannel channel, WatcherClient client) throws Exception { + public RestChannelConsumer doPrepareRequest(RestRequest request, WatcherClient client) throws IOException { String watchId = request.param("id"); - client.activateWatch(new ActivateWatchRequest(watchId, true), new RestBuilderListener(channel) { - @Override - public RestResponse buildResponse(ActivateWatchResponse response, XContentBuilder builder) throws Exception { - return new BytesRestResponse(RestStatus.OK, builder.startObject() - .field(Watch.Field.STATUS.getPreferredName(), response.getStatus(), WatcherParams.HIDE_SECRETS) - .endObject()); - } - }); + return channel -> + client.activateWatch(new ActivateWatchRequest(watchId, true), new RestBuilderListener(channel) { + @Override + public RestResponse buildResponse(ActivateWatchResponse response, XContentBuilder builder) throws Exception { + return new BytesRestResponse(RestStatus.OK, builder.startObject() + .field(Watch.Field.STATUS.getPreferredName(), response.getStatus(), WatcherParams.HIDE_SECRETS) + .endObject()); + } + }); } - static class DeactivateRestHandler extends WatcherRestHandler { + private static class DeactivateRestHandler extends WatcherRestHandler { - public DeactivateRestHandler(Settings settings) { + DeactivateRestHandler(Settings settings) { super(settings); } @Override - public void handleRequest(RestRequest request, RestChannel channel, WatcherClient client) throws Exception { + public RestChannelConsumer doPrepareRequest(RestRequest request, WatcherClient client) throws IOException { String watchId = request.param("id"); - client.activateWatch(new ActivateWatchRequest(watchId, false), new RestBuilderListener(channel) { - @Override - public RestResponse buildResponse(ActivateWatchResponse response, XContentBuilder builder) throws Exception { - return new BytesRestResponse(RestStatus.OK, builder.startObject() - .field(Watch.Field.STATUS.getPreferredName(), response.getStatus(), WatcherParams.HIDE_SECRETS) - .endObject()); - } - }); + return channel -> + client.activateWatch(new ActivateWatchRequest(watchId, false), new RestBuilderListener(channel) { + @Override + public RestResponse buildResponse(ActivateWatchResponse response, XContentBuilder builder) throws Exception { + return new BytesRestResponse(RestStatus.OK, builder.startObject() + .field(Watch.Field.STATUS.getPreferredName(), response.getStatus(), WatcherParams.HIDE_SECRETS) + .endObject()); + } + }); } } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestDeleteWatchAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestDeleteWatchAction.java index 89ac8ff9846..f0f2bc768c2 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestDeleteWatchAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestDeleteWatchAction.java @@ -9,7 +9,6 @@ import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -20,12 +19,12 @@ import org.elasticsearch.xpack.watcher.rest.WatcherRestHandler; import org.elasticsearch.xpack.watcher.transport.actions.delete.DeleteWatchRequest; import org.elasticsearch.xpack.watcher.transport.actions.delete.DeleteWatchResponse; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.DELETE; import static org.elasticsearch.rest.RestStatus.NOT_FOUND; import static org.elasticsearch.rest.RestStatus.OK; -/** - */ public class RestDeleteWatchAction extends WatcherRestHandler { @Inject @@ -37,10 +36,10 @@ public class RestDeleteWatchAction extends WatcherRestHandler { } @Override - protected void handleRequest(final RestRequest request, RestChannel channel, WatcherClient client) throws Exception { + protected RestChannelConsumer doPrepareRequest(final RestRequest request, WatcherClient client) throws IOException { DeleteWatchRequest deleteWatchRequest = new DeleteWatchRequest(request.param("id")); deleteWatchRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteWatchRequest.masterNodeTimeout())); - client.deleteWatch(deleteWatchRequest, new RestBuilderListener(channel) { + return channel -> client.deleteWatch(deleteWatchRequest, new RestBuilderListener(channel) { @Override public RestResponse buildResponse(DeleteWatchResponse response, XContentBuilder builder) throws Exception { builder.startObject() @@ -53,4 +52,5 @@ public class RestDeleteWatchAction extends WatcherRestHandler { } }); } + } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchAction.java index 97829ba4c5a..f0473794b06 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchAction.java @@ -14,7 +14,6 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -59,10 +58,10 @@ public class RestExecuteWatchAction extends WatcherRestHandler { } @Override - protected void handleRequest(final RestRequest request, RestChannel channel, WatcherClient client) throws Exception { + protected RestChannelConsumer doPrepareRequest(final RestRequest request, WatcherClient client) throws IOException { ExecuteWatchRequest executeWatchRequest = parseRequest(request, client); - client.executeWatch(executeWatchRequest, new RestBuilderListener(channel) { + return channel -> client.executeWatch(executeWatchRequest, new RestBuilderListener(channel) { @Override public RestResponse buildResponse(ExecuteWatchResponse response, XContentBuilder builder) throws Exception { builder.startObject(); diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestGetWatchAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestGetWatchAction.java index 9d9dad06c88..8f6797062f6 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestGetWatchAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestGetWatchAction.java @@ -9,7 +9,6 @@ import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -22,6 +21,8 @@ import org.elasticsearch.xpack.watcher.transport.actions.get.GetWatchRequest; import org.elasticsearch.xpack.watcher.transport.actions.get.GetWatchResponse; import org.elasticsearch.xpack.watcher.watch.WatchStatus; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.GET; import static org.elasticsearch.rest.RestStatus.NOT_FOUND; import static org.elasticsearch.rest.RestStatus.OK; @@ -38,9 +39,9 @@ public class RestGetWatchAction extends WatcherRestHandler { } @Override - protected void handleRequest(final RestRequest request, RestChannel channel, WatcherClient client) throws Exception { + protected RestChannelConsumer doPrepareRequest(final RestRequest request, WatcherClient client) throws IOException { final GetWatchRequest getWatchRequest = new GetWatchRequest(request.param("id")); - client.getWatch(getWatchRequest, new RestBuilderListener(channel) { + return channel -> client.getWatch(getWatchRequest, new RestBuilderListener(channel) { @Override public RestResponse buildResponse(GetWatchResponse response, XContentBuilder builder) throws Exception { builder.startObject() diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestHijackOperationAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestHijackOperationAction.java index e85d2d6a1aa..e375c129a55 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestHijackOperationAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestHijackOperationAction.java @@ -10,7 +10,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestStatus; @@ -18,13 +17,13 @@ import org.elasticsearch.xpack.watcher.client.WatcherClient; import org.elasticsearch.xpack.watcher.rest.WatcherRestHandler; import org.elasticsearch.xpack.watcher.watch.WatchStore; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.DELETE; import static org.elasticsearch.rest.RestRequest.Method.GET; import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; -/** - */ public class RestHijackOperationAction extends WatcherRestHandler { private static final String ALLOW_DIRECT_ACCESS_TO_WATCH_INDEX_SETTING = "xpack.watcher.index.rest.direct_access"; @@ -50,32 +49,40 @@ public class RestHijackOperationAction extends WatcherRestHandler { } @Override - public void handleRequest(RestRequest request, RestChannel channel, WatcherClient client) throws Exception { + public RestChannelConsumer doPrepareRequest(RestRequest request, WatcherClient client) throws IOException { + // we have to consume the id parameter lest the request will fail for the wrong reason + if (request.hasParam("id")) { + request.param("id"); + } XContentBuilder jsonBuilder = XContentFactory.jsonBuilder(); - jsonBuilder.startObject().field("error","This endpoint is not supported for " + + jsonBuilder.startObject().field("error", "This endpoint is not supported for " + request.method().name() + " on " + WatchStore.INDEX + " index. Please use " + request.method().name() + " " + URI_BASE + "/watch/ instead"); jsonBuilder.field("status", RestStatus.BAD_REQUEST.getStatus()); jsonBuilder.endObject(); - channel.sendResponse(new BytesRestResponse(RestStatus.BAD_REQUEST, jsonBuilder)); + return channel -> channel.sendResponse(new BytesRestResponse(RestStatus.BAD_REQUEST, jsonBuilder)); } - public static class UnsupportedHandler extends WatcherRestHandler { + private static class UnsupportedHandler extends WatcherRestHandler { - public UnsupportedHandler(Settings settings) { + private UnsupportedHandler(Settings settings) { super(settings); } @Override - public void handleRequest(RestRequest request, RestChannel channel, WatcherClient client) throws Exception { - request.path(); + public RestChannelConsumer doPrepareRequest(RestRequest request, WatcherClient client) throws IOException { + // we have to consume the id parameter lest the request will fail for the wrong reason + if (request.hasParam("id")) { + request.param("id"); + } XContentBuilder jsonBuilder = XContentFactory.jsonBuilder(); - jsonBuilder.startObject().field("error","This endpoint is not supported for " + + jsonBuilder.startObject().field("error", "This endpoint is not supported for " + request.method().name() + " on " + WatchStore.INDEX + " index."); jsonBuilder.field("status", RestStatus.BAD_REQUEST.getStatus()); jsonBuilder.endObject(); - channel.sendResponse(new BytesRestResponse(RestStatus.BAD_REQUEST, jsonBuilder)); + return channel -> channel.sendResponse(new BytesRestResponse(RestStatus.BAD_REQUEST, jsonBuilder)); } + } } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestPutWatchAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestPutWatchAction.java index 2908f33ba4c..4d829d93c53 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestPutWatchAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestPutWatchAction.java @@ -9,7 +9,6 @@ import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -20,13 +19,13 @@ import org.elasticsearch.xpack.watcher.rest.WatcherRestHandler; import org.elasticsearch.xpack.watcher.transport.actions.put.PutWatchRequest; import org.elasticsearch.xpack.watcher.transport.actions.put.PutWatchResponse; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; import static org.elasticsearch.rest.RestStatus.CREATED; import static org.elasticsearch.rest.RestStatus.OK; -/** - */ public class RestPutWatchAction extends WatcherRestHandler { @Inject @@ -41,11 +40,11 @@ public class RestPutWatchAction extends WatcherRestHandler { } @Override - protected void handleRequest(final RestRequest request, RestChannel channel, WatcherClient client) throws Exception { + protected RestChannelConsumer doPrepareRequest(final RestRequest request, WatcherClient client) throws IOException { PutWatchRequest putWatchRequest = new PutWatchRequest(request.param("id"), request.content()); putWatchRequest.masterNodeTimeout(request.paramAsTime("master_timeout", putWatchRequest.masterNodeTimeout())); putWatchRequest.setActive(request.paramAsBoolean("active", putWatchRequest.isActive())); - client.putWatch(putWatchRequest, new RestBuilderListener(channel) { + return channel -> client.putWatch(putWatchRequest, new RestBuilderListener(channel) { @Override public RestResponse buildResponse(PutWatchResponse response, XContentBuilder builder) throws Exception { builder.startObject() @@ -58,4 +57,5 @@ public class RestPutWatchAction extends WatcherRestHandler { } }); } + } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestWatchServiceAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestWatchServiceAction.java index 406f0733da1..c2646f2c3a7 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestWatchServiceAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestWatchServiceAction.java @@ -7,7 +7,6 @@ package org.elasticsearch.xpack.watcher.rest.action; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.action.AcknowledgedRestListener; @@ -15,11 +14,11 @@ import org.elasticsearch.xpack.watcher.client.WatcherClient; import org.elasticsearch.xpack.watcher.rest.WatcherRestHandler; import org.elasticsearch.xpack.watcher.transport.actions.service.WatcherServiceRequest; +import java.io.IOException; + import static org.elasticsearch.rest.RestRequest.Method.POST; import static org.elasticsearch.rest.RestRequest.Method.PUT; -/** - */ public class RestWatchServiceAction extends WatcherRestHandler { @Inject @@ -37,31 +36,34 @@ public class RestWatchServiceAction extends WatcherRestHandler { } @Override - public void handleRequest(RestRequest request, RestChannel channel, WatcherClient client) throws Exception { - client.watcherService(new WatcherServiceRequest().restart(), new AcknowledgedRestListener<>(channel)); + public RestChannelConsumer doPrepareRequest(RestRequest request, WatcherClient client) throws IOException { + return channel -> client.watcherService(new WatcherServiceRequest().restart(), new AcknowledgedRestListener<>(channel)); } - static class StartRestHandler extends WatcherRestHandler { + private static class StartRestHandler extends WatcherRestHandler { - public StartRestHandler(Settings settings) { + StartRestHandler(Settings settings) { super(settings); } @Override - public void handleRequest(RestRequest request, RestChannel channel, WatcherClient client) throws Exception { - client.watcherService(new WatcherServiceRequest().start(), new AcknowledgedRestListener<>(channel)); + public RestChannelConsumer doPrepareRequest(RestRequest request, WatcherClient client) throws IOException { + return channel -> client.watcherService(new WatcherServiceRequest().start(), new AcknowledgedRestListener<>(channel)); } + } - static class StopRestHandler extends WatcherRestHandler { + private static class StopRestHandler extends WatcherRestHandler { - public StopRestHandler(Settings settings) { + StopRestHandler(Settings settings) { super(settings); } @Override - public void handleRequest(RestRequest request, RestChannel channel, WatcherClient client) throws Exception { - client.watcherService(new WatcherServiceRequest().stop(), new AcknowledgedRestListener<>(channel)); + public RestChannelConsumer doPrepareRequest(RestRequest request, WatcherClient client) throws IOException { + return channel -> client.watcherService(new WatcherServiceRequest().stop(), new AcknowledgedRestListener<>(channel)); } + } + } diff --git a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestWatcherStatsAction.java b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestWatcherStatsAction.java index 3bf1f77fb44..d5adc8711f1 100644 --- a/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestWatcherStatsAction.java +++ b/elasticsearch/src/main/java/org/elasticsearch/xpack/watcher/rest/action/RestWatcherStatsAction.java @@ -10,7 +10,6 @@ import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.rest.BytesRestResponse; -import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; import org.elasticsearch.rest.RestResponse; @@ -20,6 +19,7 @@ import org.elasticsearch.xpack.watcher.rest.WatcherRestHandler; import org.elasticsearch.xpack.watcher.transport.actions.stats.WatcherStatsRequest; import org.elasticsearch.xpack.watcher.transport.actions.stats.WatcherStatsResponse; +import java.io.IOException; import java.util.Set; import static org.elasticsearch.rest.RestRequest.Method.GET; @@ -39,7 +39,7 @@ public class RestWatcherStatsAction extends WatcherRestHandler { } @Override - protected void handleRequest(final RestRequest restRequest, RestChannel restChannel, WatcherClient client) throws Exception { + protected RestChannelConsumer doPrepareRequest(final RestRequest restRequest, WatcherClient client) throws IOException { Set metrics = Strings.splitStringByCommaToSet(restRequest.param("metric", "")); WatcherStatsRequest request = new WatcherStatsRequest(); @@ -51,7 +51,7 @@ public class RestWatcherStatsAction extends WatcherRestHandler { request.includeQueuedWatches(metrics.contains("pending_watches")); } - client.watcherStats(request, new RestBuilderListener(restChannel) { + return channel -> client.watcherStats(request, new RestBuilderListener(channel) { @Override public RestResponse buildResponse(WatcherStatsResponse watcherStatsResponse, XContentBuilder builder) throws Exception { watcherStatsResponse.toXContent(builder, restRequest); diff --git a/elasticsearch/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterIT.java b/elasticsearch/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterIT.java index 66f49e9498d..aae545498d0 100644 --- a/elasticsearch/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterIT.java +++ b/elasticsearch/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterIT.java @@ -424,7 +424,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase { assertThat(request.getMethod(), equalTo("GET")); assertThat(request.getPath(), startsWith(pathPrefix + "/.marvel-es-1-*")); assertThat(request.getPath(), containsString("filter_path=*.aliases")); - assertThat(request.getPath(), containsString("master_timeout=30s")); assertHeaders(request, customHeaders); if (expectPost) { diff --git a/elasticsearch/src/test/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchActionTests.java b/elasticsearch/src/test/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchActionTests.java index 6c4eb62836f..4e7a8b94294 100644 --- a/elasticsearch/src/test/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchActionTests.java +++ b/elasticsearch/src/test/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchActionTests.java @@ -41,8 +41,8 @@ public class RestExecuteWatchActionTests extends ESTestCase { RestExecuteWatchAction restExecuteWatchAction = new RestExecuteWatchAction(Settings.EMPTY, restController, triggerService); - restExecuteWatchAction.handleRequest(createFakeRestRequest(randomId, recordExecution, ignoreCondition, - debugCondition), restChannel, watcherClient); + restExecuteWatchAction.doPrepareRequest(createFakeRestRequest(randomId, recordExecution, ignoreCondition, + debugCondition), watcherClient); assertThat(builder.request().getId(), is(randomId)); assertThat(builder.request().isRecordExecution(), is(Boolean.parseBoolean(recordExecution)));