summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cloud-tenant-base-dependencies-enforcer/pom.xml7
-rw-r--r--container-dependencies-enforcer/pom.xml2
-rw-r--r--container-dependency-versions/pom.xml4
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/JsonFeedReader.java7
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaSimpleJsonInputFormat.java4
-rw-r--r--vespa-http-client/pom.xml10
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/JsonReader.java3
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ClusterConnection.java17
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationStats.java20
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/JsonTestHelper.java15
11 files changed, 66 insertions, 25 deletions
diff --git a/cloud-tenant-base-dependencies-enforcer/pom.xml b/cloud-tenant-base-dependencies-enforcer/pom.xml
index 8bb7b75be89..dca181dcf36 100644
--- a/cloud-tenant-base-dependencies-enforcer/pom.xml
+++ b/cloud-tenant-base-dependencies-enforcer/pom.xml
@@ -41,8 +41,8 @@
<hk2.version>2.5.0-b32</hk2.version>
<hk2.osgi-resource-locator.version>1.0.1</hk2.osgi-resource-locator.version>
- <jackson2.version>2.8.11</jackson2.version>
- <jackson-databind.version>${jackson2.version}.6</jackson-databind.version>
+ <jackson2.version>2.12.1</jackson2.version>
+ <jackson-databind.version>${jackson2.version}</jackson-databind.version>
<javassist.version>3.20.0-GA</javassist.version>
<javax.annotation-api.version>1.2</javax.annotation-api.version>
<javax.validation-api.version>1.1.0.Final</javax.validation-api.version>
@@ -80,6 +80,7 @@
<include>com.fasterxml.jackson.datatype:jackson-datatype-jdk8:[${jackson2.version}]:jar:provided</include>
<include>com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[${jackson2.version}]:jar:provided</include>
+
<!-- Use version range for jax deps, because jersey and junit affect the versions. -->
<include>com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:[2.5.4, ${jackson2.version}]:jar:provided</include>
<include>com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:[2.5.4, ${jackson2.version}]:jar:provided</include>
@@ -94,6 +95,8 @@
<include>com.sun.xml.bind:jaxb-core:[${jaxb.version}]:jar:provided</include>
<include>com.sun.xml.bind:jaxb-impl:[${jaxb.version}]:jar:provided</include>
<include>commons-logging:commons-logging:[1.1.3]:jar:provided</include>
+ <include>jakarta.activation:jakarta.activation-api:[1.2.1]:jar:provided</include>
+ <include>jakarta.xml.bind:jakarta.xml.bind-api:[2.3.2]:jar:provided</include>
<include>javax.annotation:javax.annotation-api:[${javax.annotation-api.version}]:jar:provided</include>
<include>javax.inject:javax.inject:[${javax.inject.version}]:jar:provided</include>
<include>javax.servlet:javax.servlet-api:[${javax.servlet-api.version}]:jar:provided</include>
diff --git a/container-dependencies-enforcer/pom.xml b/container-dependencies-enforcer/pom.xml
index 224fd47b256..c2d0fd8510d 100644
--- a/container-dependencies-enforcer/pom.xml
+++ b/container-dependencies-enforcer/pom.xml
@@ -90,6 +90,8 @@
<include>com.sun.xml.bind:jaxb-core:[${jaxb.version}]:jar:provided</include>
<include>com.sun.xml.bind:jaxb-impl:[${jaxb.version}]:jar:provided</include>
<include>commons-logging:commons-logging:[1.1.3]:jar:provided</include>
+ <include>jakarta.activation:jakarta.activation-api:[1.2.1]:jar:provided</include>
+ <include>jakarta.xml.bind:jakarta.xml.bind-api:[2.3.2]:jar:provided</include>
<include>javax.annotation:javax.annotation-api:[${javax.annotation-api.version}]:jar:provided</include>
<include>javax.inject:javax.inject:[${javax.inject.version}]:jar:provided</include>
<include>javax.servlet:javax.servlet-api:[${javax.servlet-api.version}]:jar:provided</include>
diff --git a/container-dependency-versions/pom.xml b/container-dependency-versions/pom.xml
index 08d6e0103bf..dd95f8bfd34 100644
--- a/container-dependency-versions/pom.xml
+++ b/container-dependency-versions/pom.xml
@@ -458,8 +458,8 @@
<!-- and then verify by doing: ' ls -l vespa/vespa_jersey2/target/dependency' -->
<hk2.version>2.5.0-b32</hk2.version>
<hk2.osgi-resource-locator.version>1.0.1</hk2.osgi-resource-locator.version>
- <jackson2.version>2.8.11</jackson2.version>
- <jackson-databind.version>${jackson2.version}.6</jackson-databind.version>
+ <jackson2.version>2.12.1</jackson2.version>
+ <jackson-databind.version>${jackson2.version}</jackson-databind.version>
<javassist.version>3.20.0-GA</javassist.version>
<javax.annotation-api.version>1.2</javax.annotation-api.version>
<javax.validation-api.version>1.1.0.Final</javax.validation-api.version>
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 48003f6586f..d0df131ae31 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
@@ -1221,7 +1221,7 @@ public class JsonRendererTestCase {
+ "}";
assertEquals(
"Unexpected character ('a' (code 97)): was expecting comma to separate Object entries\n" +
- " at [Source: { \"root\": { \"invalidvalue\": 1adsf, }}; line: 1, column: 41]",
+ " at [Source: (String)\"{ \"root\": { \"invalidvalue\": 1adsf, }}\"; line: 1, column: 41]",
validateJSON(json));
}
diff --git a/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java b/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java
index 3b275d571e0..1f2731d5fbe 100644
--- a/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java
+++ b/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java
@@ -1,9 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
-import java.io.InputStream;
-
import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.yahoo.document.DocumentOperation;
import com.yahoo.document.DocumentPut;
import com.yahoo.document.DocumentRemove;
@@ -15,6 +14,8 @@ import com.yahoo.vespaxmlparser.FeedOperation;
import com.yahoo.vespaxmlparser.FeedReader;
import com.yahoo.vespaxmlparser.RemoveFeedOperation;
+import java.io.InputStream;
+
/**
* Facade between JsonReader and the FeedReader API.
@@ -29,7 +30,7 @@ public class JsonFeedReader implements FeedReader {
private final JsonReader reader;
private InputStream stream;
- private static final JsonFactory jsonFactory = new JsonFactory().disable(JsonFactory.Feature.CANONICALIZE_FIELD_NAMES);
+ private static final JsonFactory jsonFactory = new JsonFactoryBuilder().disable(JsonFactory.Feature.CANONICALIZE_FIELD_NAMES).build();
public JsonFeedReader(InputStream stream, DocumentTypeManager docMan) {
reader = new JsonReader(docMan, stream, jsonFactory);
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaSimpleJsonInputFormat.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaSimpleJsonInputFormat.java
index 72e38b53f98..62dd9069b59 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaSimpleJsonInputFormat.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaSimpleJsonInputFormat.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hadoop.mapreduce;
import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -54,8 +55,7 @@ public class VespaSimpleJsonInputFormat extends FileInputFormat<Text, NullWritab
}
remaining = fileSplit.getLength();
-
- JsonFactory factory = new JsonFactory().disable(JsonFactory.Feature.CANONICALIZE_FIELD_NAMES);
+ JsonFactory factory = new JsonFactoryBuilder().disable(JsonFactory.Feature.CANONICALIZE_FIELD_NAMES).build();
parser = factory.createParser(new BufferedInputStream(stream));
parser.setCodec(new ObjectMapper());
parser.nextToken();
diff --git a/vespa-http-client/pom.xml b/vespa-http-client/pom.xml
index e091af1f4f1..496b8043abb 100644
--- a/vespa-http-client/pom.xml
+++ b/vespa-http-client/pom.xml
@@ -43,6 +43,16 @@
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
<dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jsr310</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jdk8</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
<groupId>io.airlift</groupId>
<artifactId>airline</artifactId>
<version>0.6</version>
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/JsonReader.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/JsonReader.java
index 7c19846b273..f4ac3326158 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/JsonReader.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/JsonReader.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.http.client.core;
import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonParser;
import com.yahoo.vespa.http.client.FeedClient;
@@ -38,7 +39,7 @@ public class JsonReader {
*/
public static void read(InputStream inputStream, FeedClient feedClient, AtomicInteger numSent) {
try (InputStreamJsonElementBuffer jsonElementBuffer = new InputStreamJsonElementBuffer(inputStream)) {
- JsonFactory jfactory = new JsonFactory().disable(JsonFactory.Feature.CANONICALIZE_FIELD_NAMES);
+ JsonFactory jfactory = new JsonFactoryBuilder().disable(JsonFactory.Feature.CANONICALIZE_FIELD_NAMES).build();
JsonParser jParser = jfactory.createParser(jsonElementBuffer);
while (true) {
int documentStart = (int) jParser.getCurrentLocation().getCharOffset();
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ClusterConnection.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ClusterConnection.java
index 8e55e59b3f4..16afd001c46 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ClusterConnection.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ClusterConnection.java
@@ -1,9 +1,10 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
-import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.yahoo.vespa.http.client.config.Cluster;
import com.yahoo.vespa.http.client.config.ConnectionParams;
import com.yahoo.vespa.http.client.config.Endpoint;
@@ -27,8 +28,7 @@ import java.util.concurrent.TimeUnit;
*/
public class ClusterConnection implements AutoCloseable {
- private static final JsonFactory jsonFactory = new JsonFactory();
- private static final ObjectMapper objectMapper = new ObjectMapper();
+ private static ObjectMapper jsonMapper = createMapper();
private final List<IOThread> ioThreads = new ArrayList<>();
private final int clusterId;
@@ -102,6 +102,13 @@ public class ClusterConnection implements AutoCloseable {
}
}
+ private static ObjectMapper createMapper() {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new Jdk8Module());
+ mapper.registerModule(new JavaTimeModule());
+ return mapper;
+ }
+
public int getClusterId() {
return clusterId;
}
@@ -149,7 +156,7 @@ public class ClusterConnection implements AutoCloseable {
public String getStatsAsJSon() throws IOException {
StringWriter stringWriter = new StringWriter();
- JsonGenerator jsonGenerator = jsonFactory.createGenerator(stringWriter);
+ JsonGenerator jsonGenerator = jsonMapper.createGenerator(stringWriter);
jsonGenerator.writeStartObject();
jsonGenerator.writeArrayFieldStart("session");
for (IOThread ioThread : ioThreads) {
@@ -160,7 +167,7 @@ public class ClusterConnection implements AutoCloseable {
jsonGenerator.writeEndObject();
jsonGenerator.writeFieldName("stats");
IOThread.ConnectionStats connectionStats = ioThread.getConnectionStats();
- objectMapper.writeValue(jsonGenerator, connectionStats);
+ jsonMapper.writeValue(jsonGenerator, connectionStats);
jsonGenerator.writeEndObject();
}
jsonGenerator.writeEndArray();
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationStats.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationStats.java
index 22bc34f7dbe..c571b5d418b 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationStats.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationStats.java
@@ -1,9 +1,10 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.operationProcessor;
-import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.yahoo.vespa.http.client.config.SessionParams;
import com.yahoo.vespa.http.client.core.communication.ClusterConnection;
@@ -13,7 +14,8 @@ import java.util.List;
public class OperationStats {
- private static JsonFactory jsonFactory = new JsonFactory();
+ private static ObjectMapper jsonMapper = createMapper();
+
private final String sessionParamsAsXmlString;
private List<ClusterConnection> clusters;
private IncompleteResultsThrottler throttler;
@@ -27,12 +29,18 @@ public class OperationStats {
this.throttler = throttler;
}
+ private static ObjectMapper createMapper() {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new Jdk8Module());
+ mapper.registerModule(new JavaTimeModule());
+ return mapper;
+ }
+
private String generateSessionParamsAsXmlString(final SessionParams sessionParams) {
- ObjectMapper objectMapper = new ObjectMapper();
StringWriter stringWriter = new StringWriter();
try {
- JsonGenerator jsonGenerator = jsonFactory.createGenerator(stringWriter);
- objectMapper.writeValue(jsonGenerator, sessionParams); // TODO SessionParams should not be blindly serialized. This may serialize objects that are not really serializable.
+ JsonGenerator jsonGenerator = jsonMapper.createGenerator(stringWriter);
+ jsonMapper.writeValue(jsonGenerator, sessionParams); // TODO SessionParams should not be blindly serialized. This may serialize objects that are not really serializable.
return stringWriter.toString();
} catch (IOException e) {
return e.getMessage();
@@ -42,7 +50,7 @@ public class OperationStats {
public String getStatsAsJson() {
try {
StringWriter stringWriter = new StringWriter();
- JsonGenerator jsonGenerator = jsonFactory.createGenerator(stringWriter);
+ JsonGenerator jsonGenerator = jsonMapper.createGenerator(stringWriter);
jsonGenerator.writeStartObject();
jsonGenerator.writeArrayFieldStart("clusters");
for (ClusterConnection cluster : clusters) {
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/JsonTestHelper.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/JsonTestHelper.java
index 0081497fb20..b2c8e7c2f4f 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/JsonTestHelper.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/JsonTestHelper.java
@@ -4,16 +4,25 @@ package com.yahoo.vespa.http.client;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.google.common.base.Joiner;
import org.hamcrest.MatcherAssert;
-import static uk.co.datumedge.hamcrest.json.SameJSONAs.sameJSONAs;
-
import java.io.UncheckedIOException;
+import static uk.co.datumedge.hamcrest.json.SameJSONAs.sameJSONAs;
+
public class JsonTestHelper {
- private static final ObjectMapper mapper = new ObjectMapper();
+ private static final ObjectMapper mapper = createMapper();
+
+ private static ObjectMapper createMapper() {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new Jdk8Module());
+ mapper.registerModule(new JavaTimeModule());
+ return mapper;
+ }
/**
* Convenience method to input JSON without escaping double quotes and newlines