diff options
Diffstat (limited to 'vespa-http-client/src')
4 files changed, 40 insertions, 15 deletions
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 |