aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configserver-client/src/main/java/ai/vespa/hosted/client/AbstractConfigServerClient.java15
-rw-r--r--configserver-client/src/main/java/ai/vespa/hosted/client/ConfigServerClient.java14
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerException.java52
3 files changed, 23 insertions, 58 deletions
diff --git a/configserver-client/src/main/java/ai/vespa/hosted/client/AbstractConfigServerClient.java b/configserver-client/src/main/java/ai/vespa/hosted/client/AbstractConfigServerClient.java
index 626b08d17ee..d7853320149 100644
--- a/configserver-client/src/main/java/ai/vespa/hosted/client/AbstractConfigServerClient.java
+++ b/configserver-client/src/main/java/ai/vespa/hosted/client/AbstractConfigServerClient.java
@@ -146,12 +146,23 @@ public abstract class AbstractConfigServerClient implements ConfigServerClient {
}
@Override
+ public ConfigServerClient.RequestBuilder emptyParameters(List<String> keys) {
+ for (String key : keys)
+ uriBuilder.setParameter(key, null);
+
+ return this;
+ }
+
+ @Override
public RequestBuilder parameters(List<String> pairs) {
if (pairs.size() % 2 != 0)
throw new IllegalArgumentException("Must supply parameter key/values in pairs");
- for (int i = 0; i < pairs.size(); )
- uriBuilder.setParameter(pairs.get(i++), pairs.get(i++));
+ for (int i = 0; i < pairs.size(); ) {
+ String key = pairs.get(i++), value = pairs.get(i++);
+ if (value != null)
+ uriBuilder.setParameter(key, value);
+ }
return this;
}
diff --git a/configserver-client/src/main/java/ai/vespa/hosted/client/ConfigServerClient.java b/configserver-client/src/main/java/ai/vespa/hosted/client/ConfigServerClient.java
index f8cb22c65b0..c92acd7cd0b 100644
--- a/configserver-client/src/main/java/ai/vespa/hosted/client/ConfigServerClient.java
+++ b/configserver-client/src/main/java/ai/vespa/hosted/client/ConfigServerClient.java
@@ -4,7 +4,6 @@ package ai.vespa.hosted.client;
import org.apache.hc.client5.http.config.RequestConfig;
import org.apache.hc.core5.http.ClassicHttpRequest;
import org.apache.hc.core5.http.ClassicHttpResponse;
-import org.apache.hc.core5.http.ContentType;
import org.apache.hc.core5.http.HttpEntity;
import org.apache.hc.core5.http.HttpStatus;
import org.apache.hc.core5.http.Method;
@@ -21,7 +20,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.IntStream;
@@ -77,12 +75,20 @@ public interface ConfigServerClient extends Closeable {
/** Sets the request body. */
RequestBuilder body(HttpEntity entity);
- /** Sets the parameter key/values for the request. Number of arguments must be even. */
+ /** Sets query parameters without a value, like {@code ?debug&recursive}. */
+ default RequestBuilder emptyParameters(String... keys) {
+ return emptyParameters(Arrays.asList(keys));
+ }
+
+ /** Sets query parameters without a value, like {@code ?debug&recursive}. */
+ RequestBuilder emptyParameters(List<String> keys);
+
+ /** Sets the parameter key/values for the request. Number of arguments must be even. Null values are omitted. */
default RequestBuilder parameters(String... pairs) {
return parameters(Arrays.asList(pairs));
}
- /** Sets the parameter key/values for the request. Number of arguments must be even. */
+ /** Sets the parameter key/values for the request. Number of arguments must be even. Null values are omitted. */
RequestBuilder parameters(List<String> pairs);
/** Overrides the default socket read timeout of the request. {@code Duration.ZERO} gives infinite timeout. */
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerException.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerException.java
deleted file mode 100644
index 4240b0d9fa6..00000000000
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerException.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.api.integration.configserver;
-
-import java.net.URI;
-import java.util.Objects;
-
-/**
- * @author Tony Vaagenes
- */
-public class ConfigServerException extends RuntimeException {
-
- private final URI serverUri;
- private final ErrorCode errorCode;
- private final String serverMessage;
-
- public ConfigServerException(URI serverUri, String context, String serverMessage, ErrorCode errorCode, Throwable cause) {
- super(context + ": " + serverMessage, cause);
- this.serverUri = Objects.requireNonNull(serverUri);
- this.errorCode = Objects.requireNonNull(errorCode);
- this.serverMessage = Objects.requireNonNull(serverMessage);
- }
-
- public ErrorCode getErrorCode() {
- return errorCode;
- }
-
- public URI getServerUri() {
- return serverUri;
- }
-
- public String getServerMessage() {
- return serverMessage;
- }
-
- // TODO: Copied from Vespa. Expose these in Vespa and use them here
- public enum ErrorCode {
- APPLICATION_LOCK_FAILURE,
- BAD_REQUEST,
- ACTIVATION_CONFLICT,
- INTERNAL_SERVER_ERROR,
- INVALID_APPLICATION_PACKAGE,
- METHOD_NOT_ALLOWED,
- NOT_FOUND,
- OUT_OF_CAPACITY,
- REQUEST_TIMEOUT,
- UNKNOWN_VESPA_VERSION,
- PARENT_HOST_NOT_READY,
- CERTIFICATE_NOT_READY,
- LOAD_BALANCER_NOT_READY
- }
-
-}