aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2017-08-28 22:47:50 +0200
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>2017-09-13 15:50:48 +0200
commit5b9d6018431f09d090b71fa3179a9d9bed5dc0ab (patch)
treee46067ff924f4a700434bc05db7ca9709337d6b6 /server
parentaf99398a59677d6a1d8d94fbf3529327ac891ef2 (diff)
downloadsonarqube-5b9d6018431f09d090b71fa3179a9d9bed5dc0ab.tar.gz
sonarqube-5b9d6018431f09d090b71fa3179a9d9bed5dc0ab.zip
SONAR-9739 add protobuf response to WS api/system/status
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/platform/ws/StatusAction.java54
1 files changed, 22 insertions, 32 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/StatusAction.java b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/StatusAction.java
index 2a067f49de7..8b29e653191 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/StatusAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/StatusAction.java
@@ -24,10 +24,12 @@ import org.sonar.api.platform.Server;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
-import org.sonar.api.utils.text.JsonWriter;
+import org.sonar.core.util.Protobuf;
import org.sonar.server.app.RestartFlagHolder;
import org.sonar.server.platform.Platform;
import org.sonar.server.platform.db.migration.DatabaseMigrationState;
+import org.sonar.server.ws.WsUtils;
+import org.sonarqube.ws.WsSystem;
/**
* Implementation of the {@code status} action for the System WebService.
@@ -40,7 +42,7 @@ public class StatusAction implements SystemWsAction {
private final RestartFlagHolder restartFlagHolder;
public StatusAction(Server server, DatabaseMigrationState migrationState,
- Platform platform, RestartFlagHolder restartFlagHolder) {
+ Platform platform, RestartFlagHolder restartFlagHolder) {
this.server = server;
this.migrationState = migrationState;
this.platform = platform;
@@ -71,30 +73,22 @@ public class StatusAction implements SystemWsAction {
@Override
public void handle(Request request, Response response) throws Exception {
- JsonWriter json = response.newJsonWriter();
- writeJson(json);
- json.close();
+ WsSystem.StatusResponse.Builder protobuf = WsSystem.StatusResponse.newBuilder();
+ Protobuf.setNullable(server.getId(), protobuf::setId);
+ Protobuf.setNullable(server.getVersion(), protobuf::setVersion);
+ protobuf.setStatus(computeStatus());
+ WsUtils.writeProtobuf(protobuf.build(), request, response);
}
- private void writeJson(JsonWriter json) {
- Status status = computeStatus();
-
- json.beginObject();
- json.prop("id", server.getId());
- json.prop("version", server.getVersion());
- json.prop("status", status.toString());
- json.endObject();
- }
-
- private Status computeStatus() {
+ private WsSystem.Status computeStatus() {
Platform.Status platformStatus = platform.status();
switch (platformStatus) {
case BOOTING:
// can not happen since there can not even exist an instance of the current class
// unless the Platform's status is UP/SAFEMODE/STARTING
- return Status.DOWN;
+ return WsSystem.Status.DOWN;
case UP:
- return restartFlagHolder.isRestarting() ? Status.RESTARTING : Status.UP;
+ return restartFlagHolder.isRestarting() ? WsSystem.Status.RESTARTING : WsSystem.Status.UP;
case STARTING:
return computeStatusInStarting();
case SAFEMODE:
@@ -104,41 +98,37 @@ public class StatusAction implements SystemWsAction {
}
}
- private Status computeStatusInStarting() {
+ private WsSystem.Status computeStatusInStarting() {
DatabaseMigrationState.Status databaseMigrationStatus = migrationState.getStatus();
switch (databaseMigrationStatus) {
case NONE:
- return Status.STARTING;
+ return WsSystem.Status.STARTING;
case RUNNING:
- return Status.DB_MIGRATION_RUNNING;
+ return WsSystem.Status.DB_MIGRATION_RUNNING;
case FAILED:
- return Status.DOWN;
+ return WsSystem.Status.DOWN;
case SUCCEEDED:
// DB migration can be finished while we haven't yet finished SQ's initialization
- return Status.STARTING;
+ return WsSystem.Status.STARTING;
default:
throw new IllegalArgumentException("Unsupported DatabaseMigration.Status " + databaseMigrationStatus);
}
}
- private Status computeStatusInSafemode() {
+ private WsSystem.Status computeStatusInSafemode() {
DatabaseMigrationState.Status databaseMigrationStatus = migrationState.getStatus();
switch (databaseMigrationStatus) {
case NONE:
- return Status.DB_MIGRATION_NEEDED;
+ return WsSystem.Status.DB_MIGRATION_NEEDED;
case RUNNING:
- return Status.DB_MIGRATION_RUNNING;
+ return WsSystem.Status.DB_MIGRATION_RUNNING;
case FAILED:
- return Status.DOWN;
+ return WsSystem.Status.DOWN;
case SUCCEEDED:
- return Status.STARTING;
+ return WsSystem.Status.STARTING;
default:
throw new IllegalArgumentException("Unsupported DatabaseMigration.Status " + databaseMigrationStatus);
}
}
- private enum Status {
- UP, DOWN, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING, STARTING, RESTARTING
- }
-
}