summaryrefslogtreecommitdiffstats
path: root/clustercontroller-utils
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-11-23 16:07:43 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2023-11-23 16:12:51 +0100
commitef535f6c51393d945d9fe07de38de224d5ae443f (patch)
tree2f5976537a200aebbf6644b8e1ef93f2c669319d /clustercontroller-utils
parentf966346429c85fc31c8ea962b518e02a19f77f46 (diff)
jackson 2.16 changes some of its default settings so we consolidate our use of the ObjectMapper.
Unless special options are used, use a common instance, or create via factory metod.
Diffstat (limited to 'clustercontroller-utils')
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResult.java3
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitState.java4
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonReader.java28
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonWriter.java14
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyStateApi.java10
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPITest.java3
6 files changed, 22 insertions, 40 deletions
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResult.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResult.java
index f62c97696ba..aa59ef6fbf9 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResult.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResult.java
@@ -1,6 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.http;
+import ai.vespa.json.Jackson;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -8,7 +9,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
public class JsonHttpResult extends HttpResult {
- private static final ObjectMapper mapper = new ObjectMapper();
+ private static final ObjectMapper mapper = Jackson.mapper();
private JsonNode json;
private boolean failedParsing = false;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitState.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitState.java
index b734e763698..8b2e6d8d202 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitState.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitState.java
@@ -3,7 +3,7 @@ package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
public interface UnitState {
- String getId();
- String getReason();
+ String id();
+ String reason();
}
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonReader.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonReader.java
index ba641bf0deb..78932cb4272 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonReader.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonReader.java
@@ -1,8 +1,8 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.server;
+import ai.vespa.json.Jackson;
import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yahoo.vespa.clustercontroller.utils.communication.http.HttpRequest;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.errors.InvalidContentException;
@@ -15,31 +15,13 @@ import java.util.Map;
public class JsonReader {
- private static final ObjectMapper mapper = new ObjectMapper();
-
- private static class UnitStateImpl implements UnitState {
-
- private final String id;
- private final String reason;
-
- public UnitStateImpl(String id, String reason) {
- this.id = id;
- this.reason = reason;
- }
+ private record UnitStateImpl(String id, String reason) implements UnitState {
@Override
- public String getId() {
- return id;
+ public String toString() {
+ return id() + ": " + reason();
}
- @Override
- public String getReason() {
- return reason;
- }
-
- @Override
- public String toString() { return getId() +": " + getReason(); }
-
}
static class SetRequestData {
@@ -60,7 +42,7 @@ public class JsonReader {
}
public SetRequestData getStateRequestData(HttpRequest request) throws Exception {
- JsonNode json = mapper.readTree(request.getPostContent().toString());
+ JsonNode json = Jackson.mapper().readTree(request.getPostContent().toString());
final boolean probe = json.has("probe") && json.get("probe").booleanValue();
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonWriter.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonWriter.java
index 64e17873ae2..5c2c90b2b9c 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonWriter.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonWriter.java
@@ -1,8 +1,8 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.server;
+import ai.vespa.json.Jackson;
import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.response.CurrentUnitState;
@@ -19,8 +19,6 @@ import java.util.Map;
public class JsonWriter {
- private static final ObjectMapper mapper = new ObjectMapper();
-
private String pathPrefix = "/";
public JsonWriter() { }
@@ -33,7 +31,7 @@ public class JsonWriter {
}
public JsonNode createJson(UnitResponse data) {
- ObjectNode json = new ObjectNode(mapper.getNodeFactory());
+ ObjectNode json = new ObjectNode(Jackson.mapper().getNodeFactory());
fillInJson(data, json);
return json;
}
@@ -65,8 +63,8 @@ public class JsonWriter {
ObjectNode stateJson = json.putObject("state");
Map<String, UnitState> state = stateData.getStatePerType();
state.forEach((stateType, unitState) -> stateJson.putObject(stateType)
- .put("state", unitState.getId())
- .put("reason", unitState.getReason()));
+ .put("state", unitState.id())
+ .put("reason", unitState.reason()));
}
public void fillInJson(Map<String, SubUnitList> subUnitMap, ObjectNode json) {
@@ -94,11 +92,11 @@ public class JsonWriter {
}
public JsonNode createErrorJson(String description) {
- return new ObjectNode(mapper.getNodeFactory()).put("message", description);
+ return new ObjectNode(Jackson.mapper().getNodeFactory()).put("message", description);
}
public JsonNode createJson(SetResponse setResponse) {
- return new ObjectNode(mapper.getNodeFactory()).put("wasModified", setResponse.getWasModified())
+ return new ObjectNode(Jackson.mapper().getNodeFactory()).put("wasModified", setResponse.getWasModified())
.put("reason", setResponse.getReason());
}
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyStateApi.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyStateApi.java
index 88f1b49f92e..a73e20b8755 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyStateApi.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyStateApi.java
@@ -125,11 +125,11 @@ public class DummyStateApi implements StateRestAPI {
Map<String, UnitState> m = new LinkedHashMap<>();
m.put("current", new UnitState() {
@Override
- public String getId() { return node.state; }
+ public String id() { return node.state; }
@Override
- public String getReason() { return node.reason; }
+ public String reason() { return node.reason; }
@Override
- public String toString() { return getId() +": " + getReason(); }
+ public String toString() { return id() +": " + reason(); }
});
return m;
}
@@ -192,8 +192,8 @@ public class DummyStateApi implements StateRestAPI {
if (newState.size() != 1 || !newState.containsKey("current")) {
throw new InvalidContentException("Only state of type 'current' is allowed to be set.");
}
- n.state = newState.get("current").getId();
- n.reason = newState.get("current").getReason();
+ n.state = newState.get("current").id();
+ n.reason = newState.get("current").reason();
String reason = String.format("DummyStateAPI %s call", request.getResponseWait().getName());
return new SetResponse(reason, true);
}
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPITest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPITest.java
index 97d9531a28f..f5166cab25a 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPITest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPITest.java
@@ -1,6 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi;
+import ai.vespa.json.Jackson;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -30,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.fail;
public class StateRestAPITest {
- private static final ObjectMapper mapper = new ObjectMapper();
+ private static final ObjectMapper mapper = Jackson.mapper();
private static void populateDummyBackend(DummyBackend backend) {
backend.addCluster(new DummyBackend.Cluster("foo")