summaryrefslogtreecommitdiffstats
path: root/container-search
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 /container-search
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 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java7
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java14
-rw-r--r--container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java3
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java9
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java12
-rw-r--r--container-search/src/test/java/com/yahoo/select/SelectTestCase.java3
6 files changed, 21 insertions, 27 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java b/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java
index 2fc032c0e44..d04ddc0c2ac 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.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.search.handler;
+import ai.vespa.json.Jackson;
import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonLocation;
import com.fasterxml.jackson.core.JsonParseException;
@@ -42,11 +43,9 @@ class Json2SingleLevelMap {
}
private static ObjectMapper createMapper() {
- var jsonFactory = new JsonFactoryBuilder()
+ return Jackson.createMapper(new JsonFactoryBuilder()
.streamReadConstraints(StreamReadConstraints.builder().maxStringLength(Integer.MAX_VALUE).build())
- .configure(JsonReadFeature.ALLOW_SINGLE_QUOTES, true)
- .build();
- return new ObjectMapper(jsonFactory);
+ .configure(JsonReadFeature.ALLOW_SINGLE_QUOTES, true));
}
Map<String, String> parse() {
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
index 2a44250904b..e2fc5baa4e3 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
@@ -1,13 +1,13 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
+import ai.vespa.json.Jackson;
import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.StreamReadConstraints;
import com.fasterxml.jackson.core.TreeNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Preconditions;
import com.yahoo.container.logging.TraceRenderer;
import com.yahoo.data.JsonProducer;
@@ -177,11 +177,9 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
}
private static JsonFactory createGeneratorFactory() {
- var factory = new JsonFactoryBuilder()
- .streamReadConstraints(StreamReadConstraints.builder().maxStringLength(Integer.MAX_VALUE).build())
- .build();
- factory.setCodec(new ObjectMapper(factory).disable(FLUSH_AFTER_WRITE_VALUE));
- return factory;
+ return Jackson.createMapper(new JsonFactoryBuilder()
+ .streamReadConstraints(StreamReadConstraints.builder().maxStringLength(Integer.MAX_VALUE).build()))
+ .disable(FLUSH_AFTER_WRITE_VALUE).getFactory();
}
@Override
@@ -358,7 +356,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
generator.writeNumberField(RELEVANCE, hit.getRelevance().getScore());
- if (hit.types().size() > 0) {
+ if (!hit.types().isEmpty()) {
generator.writeArrayFieldStart(TYPES);
for (String t : hit.types()) {
generator.writeString(t);
@@ -505,7 +503,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
private boolean shouldRenderJsonCallback() {
String jsonCallback = getJsonCallback();
- return jsonCallback != null && !"".equals(jsonCallback);
+ return jsonCallback != null && !jsonCallback.isEmpty();
}
private String getJsonCallback() {
diff --git a/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java b/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java
index 9159728e24a..0ac527c6ce1 100644
--- a/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.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.search.handler;
+import ai.vespa.json.Jackson;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
@@ -44,7 +45,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
*/
public class JSONSearchHandlerTestCase {
- private static final ObjectMapper jsonMapper = new ObjectMapper();
+ private static final ObjectMapper jsonMapper = Jackson.mapper();
private static final String testDir = "src/test/java/com/yahoo/search/handler/test/config";
private static final String myHostnameHeader = "my-hostname-header";
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java
index a726a7d3c46..6c976011db1 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java
@@ -1,7 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import ai.vespa.json.Jackson;
import com.yahoo.concurrent.Receiver;
import com.yahoo.processing.response.Data;
import com.yahoo.processing.response.DataList;
@@ -88,8 +88,6 @@ public class AsyncGroupPopulationTestCase {
}
private static class InstrumentedGroup extends HitGroup {
- private static final long serialVersionUID = 4585896586414935558L;
-
InstrumentedGroup(String id) {
super(id, new Relevance(1), new ObservableIncoming<Hit>());
((ObservableIncoming<Hit>) incoming()).assignOwner(this);
@@ -135,9 +133,8 @@ public class AsyncGroupPopulationTestCase {
Boolean b = f.get();
assertTrue(b);
String rawGot = Utf8.toString(out.toByteArray());
- ObjectMapper m = new ObjectMapper();
- Map<?, ?> expected = m.readValue(rawExpected, Map.class);
- Map<?, ?> got = m.readValue(rawGot, Map.class);
+ Map<?, ?> expected = Jackson.mapper().readValue(rawExpected, Map.class);
+ Map<?, ?> got = Jackson.mapper().readValue(rawGot, Map.class);
assertEquals(expected, got);
}
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
index 63fbc6568c0..73cd958ee33 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
@@ -1,7 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import ai.vespa.json.Jackson;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yahoo.component.ComponentId;
import com.yahoo.component.chain.Chain;
@@ -90,8 +90,6 @@ import static org.junit.jupiter.api.Assertions.fail;
*/
public class JsonRendererTestCase {
- private static final ObjectMapper jsonMapper = new ObjectMapper();
-
private static ThreadPoolExecutor executor;
private static JsonRenderer blueprint;
private JsonRenderer renderer;
@@ -571,7 +569,7 @@ public class JsonRendererTestCase {
execution.search(q);
new Execution(new Chain<>(), execution.context());
String summary = render(execution, r);
- ObjectMapper m = new ObjectMapper();
+ var m = Jackson.mapper();
Map<String, Object> exp = m.readValue(expected, Map.class);
Map<String, Object> gen = m.readValue(summary, Map.class);
@@ -1187,7 +1185,7 @@ public class JsonRendererTestCase {
+ "}";
Result r = newEmptyResult();
Hit h = new Hit("json objects");
- ObjectNode j = jsonMapper.createObjectNode();
+ ObjectNode j = Jackson.mapper().createObjectNode();
JSONString s = new JSONString("{\"a\": \"b\"}");
Slime slime = new Slime();
Cursor c = slime.setObject();
@@ -1613,7 +1611,7 @@ public class JsonRendererTestCase {
assertEquals("", validateJSON(expected));
assertEquals("", validateJSON(generated));
- ObjectMapper m = new ObjectMapper();
+ var m = Jackson.mapper();
Map<String, Object> exp = m.readValue(expected, Map.class);
Map<String, Object> gen = m.readValue(generated, Map.class);
assertEquals(exp, gen);
@@ -1621,7 +1619,7 @@ public class JsonRendererTestCase {
private String validateJSON(String presumablyValidJson) {
try {
- jsonMapper.readTree(presumablyValidJson);
+ Jackson.mapper().readTree(presumablyValidJson);
return "";
} catch (IOException e) {
return e.getMessage();
diff --git a/container-search/src/test/java/com/yahoo/select/SelectTestCase.java b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
index 655c47b4e6e..35609d1e209 100644
--- a/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
+++ b/container-search/src/test/java/com/yahoo/select/SelectTestCase.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.select;
+import ai.vespa.json.Jackson;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -48,7 +49,7 @@ import static org.junit.jupiter.api.Assertions.*;
*/
public class SelectTestCase {
- private static final ObjectMapper jsonMapper = new ObjectMapper();
+ private static final ObjectMapper jsonMapper = Jackson.mapper();
private final SelectParser parser = new SelectParser(new ParserEnvironment());