From 85fecfc6ee020f05b5b77141a120dfc5179434a9 Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Tue, 6 Jul 2021 09:59:18 +0200 Subject: Move response classes to upper level --- .../config/server/http/v2/ApplicationHandler.java | 74 ---------------------- .../http/v2/ApplicationSuspendedResponse.java | 11 ++++ .../server/http/v2/DeleteApplicationResponse.java | 11 ++++ .../server/http/v2/GetApplicationResponse.java | 18 ++++++ .../config/server/http/v2/QuotaUsageResponse.java | 11 ++++ .../config/server/http/v2/ReindexingResponse.java | 51 +++++++++++++++ .../server/http/v2/ApplicationHandlerTest.java | 1 - 7 files changed, 102 insertions(+), 75 deletions(-) create mode 100644 configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationSuspendedResponse.java create mode 100644 configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/DeleteApplicationResponse.java create mode 100644 configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/GetApplicationResponse.java create mode 100644 configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/QuotaUsageResponse.java create mode 100644 configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ReindexingResponse.java (limited to 'configserver') diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java index 3634a6825a3..ba70c34d192 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java @@ -20,8 +20,6 @@ import com.yahoo.slime.Cursor; import com.yahoo.slime.SlimeUtils; import com.yahoo.text.StringUtilities; import com.yahoo.vespa.config.server.ApplicationRepository; -import com.yahoo.vespa.config.server.application.ApplicationReindexing; -import com.yahoo.vespa.config.server.application.ClusterReindexing; import com.yahoo.vespa.config.server.http.ContentHandler; import com.yahoo.vespa.config.server.http.ContentRequest; import com.yahoo.vespa.config.server.http.HttpErrorResponse; @@ -453,78 +451,6 @@ public class ApplicationHandler extends HttpHandler { : Optional.of(Version.fromString(vespaVersion)); } - private static class DeleteApplicationResponse extends JSONResponse { - DeleteApplicationResponse(int status, ApplicationId applicationId) { - super(status); - object.setString("message", "Application '" + applicationId + "' deleted"); - } - } - - private static class GetApplicationResponse extends JSONResponse { - GetApplicationResponse(int status, long generation, List modelVersions, Optional applicationPackageReference) { - super(status); - object.setLong("generation", generation); - object.setString("applicationPackageFileReference", applicationPackageReference.orElse("")); - Cursor modelVersionArray = object.setArray("modelVersions"); - modelVersions.forEach(version -> modelVersionArray.addString(version.toFullString())); - } - } - - private static class ApplicationSuspendedResponse extends JSONResponse { - ApplicationSuspendedResponse(boolean suspended) { - super(Response.Status.OK); - object.setBool("suspended", suspended); - } - } - - private static class QuotaUsageResponse extends JSONResponse { - QuotaUsageResponse(double usageRate) { - super(Response.Status.OK); - object.setDouble("rate", usageRate); - } - } - - static class ReindexingResponse extends JSONResponse { - ReindexingResponse(Map> documentTypes, ApplicationReindexing reindexing, - Map clusters) { - super(Response.Status.OK); - object.setBool("enabled", reindexing.enabled()); - Cursor clustersObject = object.setObject("clusters"); - documentTypes.forEach((cluster, types) -> { - Cursor clusterObject = clustersObject.setObject(cluster); - Cursor pendingObject = clusterObject.setObject("pending"); - Cursor readyObject = clusterObject.setObject("ready"); - - for (String type : types) { - Cursor statusObject = readyObject.setObject(type); - if (reindexing.clusters().containsKey(cluster)) { - if (reindexing.clusters().get(cluster).pending().containsKey(type)) - pendingObject.setLong(type, reindexing.clusters().get(cluster).pending().get(type)); - - if (reindexing.clusters().get(cluster).ready().containsKey(type)) - setStatus(statusObject, reindexing.clusters().get(cluster).ready().get(type)); - } - if (clusters.containsKey(cluster)) - if (clusters.get(cluster).documentTypeStatus().containsKey(type)) - setStatus(statusObject, clusters.get(cluster).documentTypeStatus().get(type)); - } - }); - } - - private static void setStatus(Cursor object, ApplicationReindexing.Status readyStatus) { - object.setLong("readyMillis", readyStatus.ready().toEpochMilli()); - } - - private static void setStatus(Cursor object, ClusterReindexing.Status status) { - object.setLong("startedMillis", status.startedAt().toEpochMilli()); - status.endedAt().ifPresent(endedAt -> object.setLong("endedMillis", endedAt.toEpochMilli())); - status.state().map(ClusterReindexing.State::asString).ifPresent(state -> object.setString("state", state)); - status.message().ifPresent(message -> object.setString("message", message)); - status.progress().ifPresent(progress -> object.setDouble("progress", progress)); - } - - } - private static JSONResponse createMessageResponse(String message) { return new JSONResponse(Response.Status.OK) { { object.setString("message", message); } }; } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationSuspendedResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationSuspendedResponse.java new file mode 100644 index 00000000000..a339357c732 --- /dev/null +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationSuspendedResponse.java @@ -0,0 +1,11 @@ +package com.yahoo.vespa.config.server.http.v2; + +import com.yahoo.jdisc.Response; +import com.yahoo.vespa.config.server.http.JSONResponse; + +class ApplicationSuspendedResponse extends JSONResponse { + ApplicationSuspendedResponse(boolean suspended) { + super(Response.Status.OK); + object.setBool("suspended", suspended); + } +} diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/DeleteApplicationResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/DeleteApplicationResponse.java new file mode 100644 index 00000000000..2a0f785c60a --- /dev/null +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/DeleteApplicationResponse.java @@ -0,0 +1,11 @@ +package com.yahoo.vespa.config.server.http.v2; + +import com.yahoo.config.provision.ApplicationId; +import com.yahoo.vespa.config.server.http.JSONResponse; + +class DeleteApplicationResponse extends JSONResponse { + DeleteApplicationResponse(int status, ApplicationId applicationId) { + super(status); + object.setString("message", "Application '" + applicationId + "' deleted"); + } +} diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/GetApplicationResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/GetApplicationResponse.java new file mode 100644 index 00000000000..371154cf8d6 --- /dev/null +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/GetApplicationResponse.java @@ -0,0 +1,18 @@ +package com.yahoo.vespa.config.server.http.v2; + +import com.yahoo.component.Version; +import com.yahoo.slime.Cursor; +import com.yahoo.vespa.config.server.http.JSONResponse; + +import java.util.List; +import java.util.Optional; + +class GetApplicationResponse extends JSONResponse { + GetApplicationResponse(int status, long generation, List modelVersions, Optional applicationPackageReference) { + super(status); + object.setLong("generation", generation); + object.setString("applicationPackageFileReference", applicationPackageReference.orElse("")); + Cursor modelVersionArray = object.setArray("modelVersions"); + modelVersions.forEach(version -> modelVersionArray.addString(version.toFullString())); + } +} diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/QuotaUsageResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/QuotaUsageResponse.java new file mode 100644 index 00000000000..cfb14bd0887 --- /dev/null +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/QuotaUsageResponse.java @@ -0,0 +1,11 @@ +package com.yahoo.vespa.config.server.http.v2; + +import com.yahoo.jdisc.Response; +import com.yahoo.vespa.config.server.http.JSONResponse; + +class QuotaUsageResponse extends JSONResponse { + QuotaUsageResponse(double usageRate) { + super(Response.Status.OK); + object.setDouble("rate", usageRate); + } +} diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ReindexingResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ReindexingResponse.java new file mode 100644 index 00000000000..c7558d5a76a --- /dev/null +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ReindexingResponse.java @@ -0,0 +1,51 @@ +package com.yahoo.vespa.config.server.http.v2; + +import com.yahoo.jdisc.Response; +import com.yahoo.slime.Cursor; +import com.yahoo.vespa.config.server.application.ApplicationReindexing; +import com.yahoo.vespa.config.server.application.ClusterReindexing; +import com.yahoo.vespa.config.server.http.JSONResponse; + +import java.util.Map; +import java.util.Set; + +class ReindexingResponse extends JSONResponse { + ReindexingResponse(Map> documentTypes, ApplicationReindexing reindexing, + Map clusters) { + super(Response.Status.OK); + object.setBool("enabled", reindexing.enabled()); + Cursor clustersObject = object.setObject("clusters"); + documentTypes.forEach((cluster, types) -> { + Cursor clusterObject = clustersObject.setObject(cluster); + Cursor pendingObject = clusterObject.setObject("pending"); + Cursor readyObject = clusterObject.setObject("ready"); + + for (String type : types) { + Cursor statusObject = readyObject.setObject(type); + if (reindexing.clusters().containsKey(cluster)) { + if (reindexing.clusters().get(cluster).pending().containsKey(type)) + pendingObject.setLong(type, reindexing.clusters().get(cluster).pending().get(type)); + + if (reindexing.clusters().get(cluster).ready().containsKey(type)) + setStatus(statusObject, reindexing.clusters().get(cluster).ready().get(type)); + } + if (clusters.containsKey(cluster)) + if (clusters.get(cluster).documentTypeStatus().containsKey(type)) + setStatus(statusObject, clusters.get(cluster).documentTypeStatus().get(type)); + } + }); + } + + private static void setStatus(Cursor object, ApplicationReindexing.Status readyStatus) { + object.setLong("readyMillis", readyStatus.ready().toEpochMilli()); + } + + private static void setStatus(Cursor object, ClusterReindexing.Status status) { + object.setLong("startedMillis", status.startedAt().toEpochMilli()); + status.endedAt().ifPresent(endedAt -> object.setLong("endedMillis", endedAt.toEpochMilli())); + status.state().map(ClusterReindexing.State::asString).ifPresent(state -> object.setString("state", state)); + status.message().ifPresent(message -> object.setString("message", message)); + status.progress().ifPresent(progress -> object.setDouble("progress", progress)); + } + +} diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java index 22a5b3795d9..2501bc6dc6d 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java @@ -32,7 +32,6 @@ import com.yahoo.vespa.config.server.http.HttpErrorResponse; import com.yahoo.vespa.config.server.http.SecretStoreValidator; import com.yahoo.vespa.config.server.http.SessionHandlerTest; import com.yahoo.vespa.config.server.http.StaticResponse; -import com.yahoo.vespa.config.server.http.v2.ApplicationHandler.ReindexingResponse; import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry; import com.yahoo.vespa.config.server.provision.HostProvisionerProvider; import com.yahoo.vespa.config.server.session.PrepareParams; -- cgit v1.2.3