From 28b307a2232d0281903b595cf7e6cf64e7a52eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20B=C3=BCscher?= Date: Fri, 20 Mar 2020 13:02:03 +0100 Subject: [PATCH] iter --- .../asyncsearch/DeleteAsyncSearchRequest.java | 4 +- .../asyncsearch/GetAsyncSearchRequest.java | 21 +++++++++- .../GetAsyncSearchRequestTests.java | 41 +++++++++++++++++++ 3 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 client/rest-high-level/src/test/java/org/elasticsearch/client/asyncsearch/GetAsyncSearchRequestTests.java diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/asyncsearch/DeleteAsyncSearchRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/asyncsearch/DeleteAsyncSearchRequest.java index 0460139e69c70..3b37293212da0 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/asyncsearch/DeleteAsyncSearchRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/asyncsearch/DeleteAsyncSearchRequest.java @@ -20,11 +20,11 @@ package org.elasticsearch.client.asyncsearch; -import org.elasticsearch.client.TimedRequest; +import org.elasticsearch.client.Validatable; import java.util.Objects; -public class DeleteAsyncSearchRequest extends TimedRequest { +public class DeleteAsyncSearchRequest implements Validatable { private final String id; diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/asyncsearch/GetAsyncSearchRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/asyncsearch/GetAsyncSearchRequest.java index 02225e5545402..11ad059349481 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/asyncsearch/GetAsyncSearchRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/asyncsearch/GetAsyncSearchRequest.java @@ -20,15 +20,20 @@ package org.elasticsearch.client.asyncsearch; -import org.elasticsearch.client.TimedRequest; +import org.elasticsearch.client.Validatable; +import org.elasticsearch.client.ValidationException; import org.elasticsearch.common.unit.TimeValue; import java.util.Objects; +import java.util.Optional; -public class GetAsyncSearchRequest extends TimedRequest { +public class GetAsyncSearchRequest implements Validatable { private TimeValue waitForCompletion; private TimeValue keepAlive; + + public static final long MIN_KEEPALIVE = TimeValue.timeValueMinutes(1).millis(); + private final String id; public GetAsyncSearchRequest(String id) { @@ -55,6 +60,18 @@ public void setKeepAlive(TimeValue keepAlive) { this.keepAlive = keepAlive; } + @Override + public Optional validate() { + final ValidationException validationException = new ValidationException(); + if (keepAlive != null && keepAlive.getMillis() < MIN_KEEPALIVE) { + validationException.addValidationError("keep_alive must be greater than 1 minute, got: " + keepAlive.toString()); + } + if (validationException.validationErrors().isEmpty()) { + return Optional.empty(); + } + return Optional.of(validationException); + } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/asyncsearch/GetAsyncSearchRequestTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/asyncsearch/GetAsyncSearchRequestTests.java new file mode 100644 index 0000000000000..b6861b218cd28 --- /dev/null +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/asyncsearch/GetAsyncSearchRequestTests.java @@ -0,0 +1,41 @@ +/* + * 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.asyncsearch; + +import org.elasticsearch.client.ValidationException; +import org.elasticsearch.common.unit.TimeValue; +import org.elasticsearch.test.ESTestCase; + +import java.util.concurrent.TimeUnit; + +public class GetAsyncSearchRequestTests extends ESTestCase { + + public void testValidation() { + GetAsyncSearchRequest getAsyncSearchRequest = new GetAsyncSearchRequest(randomAlphaOfLength(10)); + getAsyncSearchRequest.setKeepAlive(new TimeValue(0)); + assertTrue(getAsyncSearchRequest.validate().isPresent()); + ValidationException validationException = getAsyncSearchRequest.validate().get(); + assertEquals(1, validationException.validationErrors().size()); + assertEquals("Validation Failed: 1: keep_alive must be greater than 1 minute, got: 0s;", validationException.getMessage()); + + getAsyncSearchRequest.setKeepAlive(new TimeValue(1, TimeUnit.MINUTES)); + assertFalse(getAsyncSearchRequest.validate().isPresent()); + } +}