From 2cf774f6ca04967561d011e7c41070a982b080d9 Mon Sep 17 00:00:00 2001 From: iverase Date: Thu, 8 Nov 2018 16:56:11 +0100 Subject: [PATCH 1/8] HLRC: Add ML delete filter action It adds delete ML filter action to the high level rest client. Relates #29827 --- .../client/MLRequestConverters.java | 12 ++++ .../client/MachineLearningClient.java | 41 +++++++++++++ .../client/ml/DeleteFilterRequest.java | 42 +++++++++++++ .../client/MLRequestConvertersTests.java | 11 ++++ .../client/MachineLearningIT.java | 11 ++++ .../MlClientDocumentationIT.java | 60 +++++++++++++++++++ .../client/ml/DeleteFilterRequestTests.java | 35 +++++++++++ .../high-level/ml/delete-filter.asciidoc | 33 ++++++++++ .../high-level/supported-apis.asciidoc | 2 + 9 files changed, 247 insertions(+) create mode 100644 client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java create mode 100644 client/rest-high-level/src/test/java/org/elasticsearch/client/ml/DeleteFilterRequestTests.java create mode 100644 docs/java-rest/high-level/ml/delete-filter.asciidoc diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java index be513b0985c55..33098287488ac 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java @@ -30,6 +30,7 @@ import org.elasticsearch.client.ml.CloseJobRequest; import org.elasticsearch.client.ml.DeleteCalendarRequest; import org.elasticsearch.client.ml.DeleteDatafeedRequest; +import org.elasticsearch.client.ml.DeleteFilterRequest; import org.elasticsearch.client.ml.DeleteForecastRequest; import org.elasticsearch.client.ml.DeleteJobRequest; import org.elasticsearch.client.ml.FlushJobRequest; @@ -476,4 +477,15 @@ static Request putFilter(PutFilterRequest putFilterRequest) throws IOException { request.setEntity(createEntity(putFilterRequest, REQUEST_BODY_CONTENT_TYPE)); return request; } + + static Request deleteFilter(DeleteFilterRequest deleteFilterRequest) throws IOException { + String endpoint = new EndpointBuilder() + .addPathPartAsIs("_xpack") + .addPathPartAsIs("ml") + .addPathPartAsIs("filters") + .addPathPart(deleteFilterRequest.getId()) + .build(); + Request request = new Request(HttpDelete.METHOD_NAME, endpoint); + return request; + } } diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/MachineLearningClient.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/MachineLearningClient.java index 3f7a938f9ce1a..e9e9c5775f0eb 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/MachineLearningClient.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/MachineLearningClient.java @@ -24,6 +24,7 @@ import org.elasticsearch.client.ml.CloseJobResponse; import org.elasticsearch.client.ml.DeleteCalendarRequest; import org.elasticsearch.client.ml.DeleteDatafeedRequest; +import org.elasticsearch.client.ml.DeleteFilterRequest; import org.elasticsearch.client.ml.DeleteForecastRequest; import org.elasticsearch.client.ml.DeleteJobRequest; import org.elasticsearch.client.ml.DeleteJobResponse; @@ -1207,4 +1208,44 @@ public void putFilterAsync(PutFilterRequest request, RequestOptions options, Act Collections.emptySet()); } + /** + * Deletes the given Machine Learning filter + *

+ * For additional info + * see + * ML Delete Filter documentation + * + * @param request The request to delete the filter + * @param options Additional request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized + * @return action acknowledgement + * @throws IOException when there is a serialization issue sending the request or receiving the response + */ + public AcknowledgedResponse deleteFilter(DeleteFilterRequest request, RequestOptions options) throws IOException { + return restHighLevelClient.performRequestAndParseEntity(request, + MLRequestConverters::deleteFilter, + options, + AcknowledgedResponse::fromXContent, + Collections.emptySet()); + } + + /** + * Deletes the given Machine Learning filter asynchronously and notifies the listener on completion + *

+ * For additional info + * see + * ML Delete Filter documentation + * + * @param request The request to delete the filter + * @param options Additional request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized + * @param listener Listener to be notified upon request completion + */ + public void deleteFilterAsync(DeleteFilterRequest request, RequestOptions options, ActionListener listener) { + restHighLevelClient.performRequestAsyncAndParseEntity(request, + MLRequestConverters::deleteFilter, + options, + AcknowledgedResponse::fromXContent, + listener, + Collections.emptySet()); + } + } diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java new file mode 100644 index 0000000000000..0538af9519c83 --- /dev/null +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java @@ -0,0 +1,42 @@ +package org.elasticsearch.client.ml; + +import org.elasticsearch.client.Validatable; + +import java.util.Objects; + +/** + * A request to delete a machine learning filter + */ +public class DeleteFilterRequest implements Validatable { + + private final String filter_id; + + public DeleteFilterRequest(String filter_id) { + this.filter_id = Objects.requireNonNull(filter_id, "filter id is required"); + } + + public String getId() { + return filter_id; + } + + @Override + public int hashCode() { + return Objects.hash(filter_id); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final DeleteFilterRequest other = (DeleteFilterRequest) obj; + + return Objects.equals(filter_id, other.filter_id); + } +} diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java index bb0dbf6680127..4982bba962391 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java @@ -26,6 +26,7 @@ import org.elasticsearch.client.ml.CloseJobRequest; import org.elasticsearch.client.ml.DeleteCalendarRequest; import org.elasticsearch.client.ml.DeleteDatafeedRequest; +import org.elasticsearch.client.ml.DeleteFilterRequest; import org.elasticsearch.client.ml.DeleteForecastRequest; import org.elasticsearch.client.ml.DeleteJobRequest; import org.elasticsearch.client.ml.FlushJobRequest; @@ -528,6 +529,16 @@ public void testPutFilter() throws IOException { } } + public void testDeleteFilter() throws IOException { + MlFilter filter = MlFilterTests.createRandom("foo"); + DeleteFilterRequest deleteFilterRequest = new DeleteFilterRequest(filter.getId()); + + Request request = MLRequestConverters.deleteFilter(deleteFilterRequest); + + assertEquals(HttpDelete.METHOD_NAME, request.getMethod()); + assertThat(request.getEndpoint(), equalTo("/_xpack/ml/filters/foo")); + } + private static Job createValidJob(String jobId) { AnalysisConfig.Builder analysisConfig = AnalysisConfig.builder(Collections.singletonList( Detector.builder().setFunction("count").build())); diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java index ff3218795e435..62585c6cb5ffa 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java @@ -31,6 +31,7 @@ import org.elasticsearch.client.ml.CloseJobResponse; import org.elasticsearch.client.ml.DeleteCalendarRequest; import org.elasticsearch.client.ml.DeleteDatafeedRequest; +import org.elasticsearch.client.ml.DeleteFilterRequest; import org.elasticsearch.client.ml.DeleteForecastRequest; import org.elasticsearch.client.ml.DeleteJobRequest; import org.elasticsearch.client.ml.DeleteJobResponse; @@ -876,6 +877,16 @@ public void testFilterJob() throws Exception { MlFilter createdFilter = putFilterResponse.getResponse(); assertThat(createdFilter, equalTo(mlFilter)); + + DeleteFilterRequest deleteFilterRequest = new DeleteFilterRequest(filterId); + AcknowledgedResponse response = execute(deleteFilterRequest, machineLearningClient::deleteFilter, + machineLearningClient::deleteFilterAsync); + assertTrue(response.isAcknowledged()); + + ElasticsearchStatusException exception = expectThrows(ElasticsearchStatusException.class, + () -> execute(deleteFilterRequest, machineLearningClient::deleteFilter, + machineLearningClient::deleteFilterAsync)); + assertThat(exception.status().getStatus(), equalTo(404)); } public static String randomValidJobId() { diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java index 90337ebf6053e..ca4d2c1d27e79 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java @@ -37,6 +37,7 @@ import org.elasticsearch.client.ml.CloseJobResponse; import org.elasticsearch.client.ml.DeleteCalendarRequest; import org.elasticsearch.client.ml.DeleteDatafeedRequest; +import org.elasticsearch.client.ml.DeleteFilterRequest; import org.elasticsearch.client.ml.DeleteForecastRequest; import org.elasticsearch.client.ml.DeleteJobRequest; import org.elasticsearch.client.ml.DeleteJobResponse; @@ -2064,4 +2065,63 @@ public void onFailure(Exception e) { assertTrue(latch.await(30L, TimeUnit.SECONDS)); } } + + public void testDeleteFilter() throws Exception { + RestHighLevelClient client = highLevelClient(); + String filterId = createFilter(client); + + { + // tag::delete-filter-request + DeleteFilterRequest request = new DeleteFilterRequest(filterId); // <1> + // end::delete-filter-request + + // tag::delete-filter-execute + AcknowledgedResponse response = client.machineLearning().deleteFilter(request, RequestOptions.DEFAULT); + // end::delete-filter-execute + + // tag::delete-filter-response + boolean isAcknowledged = response.isAcknowledged(); // <1> + // end::delete-filter-response + assertTrue(isAcknowledged); + } + filterId = createFilter(client); + { + DeleteFilterRequest request = new DeleteFilterRequest(filterId); + // tag::delete-filter-execute-listener + ActionListener listener = new ActionListener() { + @Override + public void onResponse(AcknowledgedResponse response) { + // <1> + } + + @Override + public void onFailure(Exception e) { + // <2> + } + }; + // end::delete-filter-execute-listener + + // Replace the empty listener by a blocking listener in test + final CountDownLatch latch = new CountDownLatch(1); + listener = new LatchedActionListener<>(listener, latch); + + // tag::delete-filter-execute-async + client.machineLearning().deleteFilterAsync(request, RequestOptions.DEFAULT, listener); //<1> + // end::delete-filter-execute-async + + assertTrue(latch.await(30L, TimeUnit.SECONDS)); + } + } + + private String createFilter(RestHighLevelClient client) throws IOException { + MlFilter.Builder filterBuilder = MlFilter.builder("my_safe_domains") + .setDescription("A list of safe domains") + .setItems("*.google.com", "wikipedia.org"); + PutFilterRequest putFilterRequest = new PutFilterRequest(filterBuilder.build()); + PutFilterResponse putFilterResponse = client.machineLearning().putFilter(putFilterRequest, RequestOptions.DEFAULT); + MlFilter createdFilter = putFilterResponse.getResponse(); + assertThat(createdFilter.getId(), equalTo("my_safe_domains")); + return createdFilter.getId(); + } + } diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/DeleteFilterRequestTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/DeleteFilterRequestTests.java new file mode 100644 index 0000000000000..5353e0d2059cb --- /dev/null +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/DeleteFilterRequestTests.java @@ -0,0 +1,35 @@ +/* + * 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.client.ml; + +import org.elasticsearch.test.ESTestCase; + +public class DeleteFilterRequestTests extends ESTestCase { + + public void test_WithNullFilter() { + NullPointerException ex = expectThrows(NullPointerException.class, () -> new DeleteFilterRequest(null)); + assertEquals("filter id is required", ex.getMessage()); + } + + public void test_instance() { + String filterId = randomAlphaOfLengthBetween(2, 10); + DeleteFilterRequest deleteFilterRequest = new DeleteFilterRequest(filterId); + assertEquals(deleteFilterRequest.getId(), filterId); + } +} diff --git a/docs/java-rest/high-level/ml/delete-filter.asciidoc b/docs/java-rest/high-level/ml/delete-filter.asciidoc new file mode 100644 index 0000000000000..a02d1ea717958 --- /dev/null +++ b/docs/java-rest/high-level/ml/delete-filter.asciidoc @@ -0,0 +1,33 @@ +-- +:api: delete-filter +:request: DeleteFilterRequest +:response: AcknowledgedResponse +-- +[id="{upid}-{api}"] +=== Delete Filter API +Delete a {ml} filter. +The API accepts a +{request}+ and responds +with a +{response}+ object. + +[id="{upid}-{api}-request"] +==== Delete Filter Request + +A `DeleteFilter` object requires a non-null `filterId`. + +["source","java",subs="attributes,callouts,macros"] +--------------------------------------------------- +include-tagged::{doc-tests-file}[{api}-request] +--------------------------------------------------- +<1> Constructing a new request referencing an existing filter + +[id="{upid}-{api}-response"] +==== Delete Filter Response + +The returned +{response}+ object indicates the acknowledgement of the request: +["source","java",subs="attributes,callouts,macros"] +--------------------------------------------------- +include-tagged::{doc-tests-file}[{api}-response] +--------------------------------------------------- +<1> `isAcknowledged` was the deletion request acknowledged or not + +include::../execution.asciidoc[] diff --git a/docs/java-rest/high-level/supported-apis.asciidoc b/docs/java-rest/high-level/supported-apis.asciidoc index dd867d4691a81..019a6d9535be6 100644 --- a/docs/java-rest/high-level/supported-apis.asciidoc +++ b/docs/java-rest/high-level/supported-apis.asciidoc @@ -261,6 +261,7 @@ The Java High Level REST Client supports the following Machine Learning APIs: * <<{upid}-put-calendar>> * <<{upid}-delete-calendar>> * <<{upid}-put-filter>> +* <<{upid}-delete-filter>> include::ml/put-job.asciidoc[] include::ml/get-job.asciidoc[] @@ -290,6 +291,7 @@ include::ml/get-calendars.asciidoc[] include::ml/put-calendar.asciidoc[] include::ml/delete-calendar.asciidoc[] include::ml/put-filter.asciidoc[] +include::ml/delete-filter.asciidoc[] == Migration APIs From 6b1b8cdfc6c12913d56e3dd1f78974bfb50d2fca Mon Sep 17 00:00:00 2001 From: iverase Date: Fri, 9 Nov 2018 13:36:09 +0100 Subject: [PATCH 2/8] add missing license --- .../client/ml/DeleteFilterRequest.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java index 0538af9519c83..b459275e6eb88 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java @@ -1,3 +1,21 @@ +/* + * 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.client.ml; import org.elasticsearch.client.Validatable; From bb31f6f896f78c16925c89d16af495a0a01d3967 Mon Sep 17 00:00:00 2001 From: iverase Date: Fri, 9 Nov 2018 18:21:21 +0100 Subject: [PATCH 3/8] address review comments --- .../client/MLRequestConverters.java | 2 +- .../client/ml/DeleteFilterRequest.java | 2 +- .../elasticsearch/client/MachineLearningIT.java | 16 ++++++++++++++++ .../client/ml/DeleteFilterRequestTests.java | 2 +- .../high-level/ml/delete-filter.asciidoc | 2 +- 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java index 33098287488ac..a425e0d62b88b 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java @@ -478,7 +478,7 @@ static Request putFilter(PutFilterRequest putFilterRequest) throws IOException { return request; } - static Request deleteFilter(DeleteFilterRequest deleteFilterRequest) throws IOException { + static Request deleteFilter(DeleteFilterRequest deleteFilterRequest) { String endpoint = new EndpointBuilder() .addPathPartAsIs("_xpack") .addPathPartAsIs("ml") diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java index b459275e6eb88..b803ec65836df 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java @@ -30,7 +30,7 @@ public class DeleteFilterRequest implements Validatable { private final String filter_id; public DeleteFilterRequest(String filter_id) { - this.filter_id = Objects.requireNonNull(filter_id, "filter id is required"); + this.filter_id = Objects.requireNonNull(filter_id, "[filter_id] is required"); } public String getId() { diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java index 62585c6cb5ffa..8c739ecd243d2 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java @@ -877,6 +877,22 @@ public void testFilterJob() throws Exception { MlFilter createdFilter = putFilterResponse.getResponse(); assertThat(createdFilter, equalTo(mlFilter)); + } + + public void testDeleteFilter() throws Exception { + String filterId = "delete-filter-job-test"; + MlFilter mlFilter = MlFilter.builder(filterId) + .setDescription(randomAlphaOfLength(10)) + .setItems(generateRandomStringArray(10, 10, false, false)) + .build(); + MachineLearningClient machineLearningClient = highLevelClient().machineLearning(); + + PutFilterResponse putFilterResponse = execute(new PutFilterRequest(mlFilter), + machineLearningClient::putFilter, + machineLearningClient::putFilterAsync); + MlFilter createdFilter = putFilterResponse.getResponse(); + + assertThat(createdFilter, equalTo(mlFilter)); DeleteFilterRequest deleteFilterRequest = new DeleteFilterRequest(filterId); AcknowledgedResponse response = execute(deleteFilterRequest, machineLearningClient::deleteFilter, diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/DeleteFilterRequestTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/DeleteFilterRequestTests.java index 5353e0d2059cb..64a364d7ab62b 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/DeleteFilterRequestTests.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/DeleteFilterRequestTests.java @@ -24,7 +24,7 @@ public class DeleteFilterRequestTests extends ESTestCase { public void test_WithNullFilter() { NullPointerException ex = expectThrows(NullPointerException.class, () -> new DeleteFilterRequest(null)); - assertEquals("filter id is required", ex.getMessage()); + assertEquals("[filter_id] is required", ex.getMessage()); } public void test_instance() { diff --git a/docs/java-rest/high-level/ml/delete-filter.asciidoc b/docs/java-rest/high-level/ml/delete-filter.asciidoc index a02d1ea717958..abdcdcb53920a 100644 --- a/docs/java-rest/high-level/ml/delete-filter.asciidoc +++ b/docs/java-rest/high-level/ml/delete-filter.asciidoc @@ -12,7 +12,7 @@ with a +{response}+ object. [id="{upid}-{api}-request"] ==== Delete Filter Request -A `DeleteFilter` object requires a non-null `filterId`. +A +{request}+ object requires a non-null `filterId`. ["source","java",subs="attributes,callouts,macros"] --------------------------------------------------- From 0d43b4a8d0ee86b230bf96fb48efcc93e0f14e7d Mon Sep 17 00:00:00 2001 From: iverase Date: Mon, 12 Nov 2018 20:18:06 +0100 Subject: [PATCH 4/8] addresses last comments --- .../elasticsearch/client/MLRequestConverters.java | 4 +--- .../elasticsearch/client/ml/DeleteFilterRequest.java | 12 ++++++------ .../client/MLRequestConvertersTests.java | 3 ++- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java index a425e0d62b88b..199ec24e24801 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java @@ -468,9 +468,7 @@ static Request deleteCalendar(DeleteCalendarRequest deleteCalendarRequest) { static Request putFilter(PutFilterRequest putFilterRequest) throws IOException { String endpoint = new EndpointBuilder() - .addPathPartAsIs("_xpack") - .addPathPartAsIs("ml") - .addPathPartAsIs("filters") + .addPathPartAsIs("_xpack", "ml", "filters") .addPathPart(putFilterRequest.getMlFilter().getId()) .build(); Request request = new Request(HttpPut.METHOD_NAME, endpoint); diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java index b803ec65836df..0b1771e271a2b 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java @@ -27,19 +27,19 @@ */ public class DeleteFilterRequest implements Validatable { - private final String filter_id; + private final String filterId; - public DeleteFilterRequest(String filter_id) { - this.filter_id = Objects.requireNonNull(filter_id, "[filter_id] is required"); + public DeleteFilterRequest(String filterId) { + this.filterId = Objects.requireNonNull(filterId, "[filterId] is required"); } public String getId() { - return filter_id; + return filterId; } @Override public int hashCode() { - return Objects.hash(filter_id); + return Objects.hash(filterId); } @Override @@ -55,6 +55,6 @@ public boolean equals(Object obj) { } final DeleteFilterRequest other = (DeleteFilterRequest) obj; - return Objects.equals(filter_id, other.filter_id); + return Objects.equals(filterId, other.filterId); } } diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java index 4982bba962391..ba3a1d6c4322f 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java @@ -529,7 +529,7 @@ public void testPutFilter() throws IOException { } } - public void testDeleteFilter() throws IOException { + public void testDeleteFilter() { MlFilter filter = MlFilterTests.createRandom("foo"); DeleteFilterRequest deleteFilterRequest = new DeleteFilterRequest(filter.getId()); @@ -537,6 +537,7 @@ public void testDeleteFilter() throws IOException { assertEquals(HttpDelete.METHOD_NAME, request.getMethod()); assertThat(request.getEndpoint(), equalTo("/_xpack/ml/filters/foo")); + assertNull(request.getEntity()); } private static Job createValidJob(String jobId) { From 4685a01f5f1933fa87cf8e4cf194c297fd98d94e Mon Sep 17 00:00:00 2001 From: iverase Date: Tue, 13 Nov 2018 08:27:24 +0100 Subject: [PATCH 5/8] fix error msg --- .../java/org/elasticsearch/client/ml/DeleteFilterRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java index 0b1771e271a2b..4f1b4136a3a0d 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteFilterRequest.java @@ -30,7 +30,7 @@ public class DeleteFilterRequest implements Validatable { private final String filterId; public DeleteFilterRequest(String filterId) { - this.filterId = Objects.requireNonNull(filterId, "[filterId] is required"); + this.filterId = Objects.requireNonNull(filterId, "[filter_id] is required"); } public String getId() { From f5fd090e84a4f24ed4fec4d432d38f64f3e9971e Mon Sep 17 00:00:00 2001 From: iverase Date: Wed, 14 Nov 2018 10:09:37 +0100 Subject: [PATCH 6/8] minor change in converter --- .../java/org/elasticsearch/client/MLRequestConverters.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java index ca5d2b5acbe69..7d0cb300b41ae 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java @@ -480,9 +480,7 @@ static Request putFilter(PutFilterRequest putFilterRequest) throws IOException { static Request getFilter(GetFiltersRequest getFiltersRequest) { String endpoint = new EndpointBuilder() - .addPathPartAsIs("_xpack") - .addPathPartAsIs("ml") - .addPathPartAsIs("filters") + .addPathPartAsIs("_xpack", "ml", "filters") .addPathPart(getFiltersRequest.getFilterId()) .build(); Request request = new Request(HttpGet.METHOD_NAME, endpoint); From 9ff2eeb35f90ba672ed3ea93df8aa71b88c537c3 Mon Sep 17 00:00:00 2001 From: iverase Date: Wed, 14 Nov 2018 10:11:08 +0100 Subject: [PATCH 7/8] minor change in converter --- .../elasticsearch/client/MLRequestConverters.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java index 7d0cb300b41ae..4455aa3596c92 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java @@ -470,7 +470,9 @@ static Request deleteCalendar(DeleteCalendarRequest deleteCalendarRequest) { static Request putFilter(PutFilterRequest putFilterRequest) throws IOException { String endpoint = new EndpointBuilder() - .addPathPartAsIs("_xpack", "ml", "filters") + .addPathPartAsIs("_xpack") + .addPathPartAsIs("ml") + .addPathPartAsIs("filters") .addPathPart(putFilterRequest.getMlFilter().getId()) .build(); Request request = new Request(HttpPut.METHOD_NAME, endpoint); @@ -480,7 +482,9 @@ static Request putFilter(PutFilterRequest putFilterRequest) throws IOException { static Request getFilter(GetFiltersRequest getFiltersRequest) { String endpoint = new EndpointBuilder() - .addPathPartAsIs("_xpack", "ml", "filters") + .addPathPartAsIs("_xpack") + .addPathPartAsIs("ml") + .addPathPartAsIs("filters") .addPathPart(getFiltersRequest.getFilterId()) .build(); Request request = new Request(HttpGet.METHOD_NAME, endpoint); @@ -496,9 +500,7 @@ static Request getFilter(GetFiltersRequest getFiltersRequest) { static Request deleteFilter(DeleteFilterRequest deleteFilterRequest) { String endpoint = new EndpointBuilder() - .addPathPartAsIs("_xpack") - .addPathPartAsIs("ml") - .addPathPartAsIs("filters") + .addPathPartAsIs("_xpack", "ml", "filters") .addPathPart(deleteFilterRequest.getId()) .build(); Request request = new Request(HttpDelete.METHOD_NAME, endpoint); From 4be70a2bdc601e3db3f48ece745a8ba87089152e Mon Sep 17 00:00:00 2001 From: iverase Date: Wed, 14 Nov 2018 14:24:32 +0100 Subject: [PATCH 8/8] resolve conflict --- docs/java-rest/high-level/supported-apis.asciidoc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/java-rest/high-level/supported-apis.asciidoc b/docs/java-rest/high-level/supported-apis.asciidoc index 9e534131e4b3e..3d31cf2752d03 100644 --- a/docs/java-rest/high-level/supported-apis.asciidoc +++ b/docs/java-rest/high-level/supported-apis.asciidoc @@ -299,11 +299,8 @@ include::ml/get-calendars.asciidoc[] include::ml/put-calendar.asciidoc[] include::ml/delete-calendar.asciidoc[] include::ml/put-filter.asciidoc[] -<<<<<<< HEAD -include::ml/delete-filter.asciidoc[] -======= include::ml/get-filters.asciidoc[] ->>>>>>> origin/master +include::ml/delete-filter.asciidoc[] == Migration APIs