From 234ffb141c2540114e6d3cbf649e0286900cdd9b Mon Sep 17 00:00:00 2001 From: Clinton Alexander Date: Fri, 16 Dec 2016 10:36:06 +0000 Subject: [PATCH] Fixed issues with incorrect serialisation in test utilities. --- .../net/corda/node/utilities/JsonSupport.kt | 19 ++++++++++++------- .../kotlin/net/corda/testing/http/HttpApi.kt | 2 +- .../net/corda/testing/http/HttpUtils.kt | 14 ++++---------- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/node/src/main/kotlin/net/corda/node/utilities/JsonSupport.kt b/node/src/main/kotlin/net/corda/node/utilities/JsonSupport.kt index d97d895907..4a1bf2c8b9 100644 --- a/node/src/main/kotlin/net/corda/node/utilities/JsonSupport.kt +++ b/node/src/main/kotlin/net/corda/node/utilities/JsonSupport.kt @@ -32,12 +32,6 @@ object JsonSupport { mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY) mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS) - val timeModule = SimpleModule("java.time") - timeModule.addSerializer(LocalDate::class.java, ToStringSerializer) - timeModule.addDeserializer(LocalDate::class.java, LocalDateDeserializer) - timeModule.addKeyDeserializer(LocalDate::class.java, LocalDateKeyDeserializer) - timeModule.addSerializer(LocalDateTime::class.java, ToStringSerializer) - val cordaModule = SimpleModule("core") cordaModule.addSerializer(Party::class.java, PartySerializer) cordaModule.addDeserializer(Party::class.java, PartyDeserializer) @@ -62,12 +56,23 @@ object JsonSupport { cordaModule.addSerializer(NodeInfo::class.java, NodeInfoSerializer) cordaModule.addDeserializer(NodeInfo::class.java, NodeInfoDeserializer) - mapper.registerModule(timeModule) + mapper.registerModule(createJavaTimeModule()) mapper.registerModule(cordaModule) mapper.registerModule(KotlinModule()) return mapper } + fun createJavaTimeModule(): Module { + val timeModule = SimpleModule("java.time") + timeModule.apply { + addSerializer(LocalDate::class.java, ToStringSerializer) + addDeserializer(LocalDate::class.java, LocalDateDeserializer) + addKeyDeserializer(LocalDate::class.java, LocalDateKeyDeserializer) + addSerializer(LocalDateTime::class.java, ToStringSerializer) + } + return timeModule + } + class ServiceHubObjectMapper(val identities: IdentityService) : ObjectMapper() object ToStringSerializer : JsonSerializer() { diff --git a/test-utils/src/main/kotlin/net/corda/testing/http/HttpApi.kt b/test-utils/src/main/kotlin/net/corda/testing/http/HttpApi.kt index d49dd5fdd1..00d4173535 100644 --- a/test-utils/src/main/kotlin/net/corda/testing/http/HttpApi.kt +++ b/test-utils/src/main/kotlin/net/corda/testing/http/HttpApi.kt @@ -23,7 +23,7 @@ class HttpApi(val root: URL) { */ inline fun getJson(path: String, params: Map = mapOf()) = HttpUtils.getJson(URL(root, path), params) - private fun toJson(any: Any) = any as? String ?: ObjectMapper().writeValueAsString(any) + private fun toJson(any: Any) = any as? String ?: HttpUtils.createDefaultMapper().writeValueAsString(any) companion object { fun fromHostAndPort(hostAndPort: HostAndPort, base: String, protocol: String = "http"): HttpApi diff --git a/test-utils/src/main/kotlin/net/corda/testing/http/HttpUtils.kt b/test-utils/src/main/kotlin/net/corda/testing/http/HttpUtils.kt index edc06c93be..6125844465 100644 --- a/test-utils/src/main/kotlin/net/corda/testing/http/HttpUtils.kt +++ b/test-utils/src/main/kotlin/net/corda/testing/http/HttpUtils.kt @@ -3,6 +3,7 @@ package net.corda.testing.http import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.KotlinModule import net.corda.core.utilities.loggerFor +import net.corda.node.utilities.JsonSupport import okhttp3.* import java.net.URL import java.util.concurrent.TimeUnit @@ -31,7 +32,7 @@ object HttpUtils { inline fun getJson(url: URL, params: Map = mapOf()) : T { val paramString = if(params.isEmpty()) "" else "?" + params.map { "${it.key}=${it.value}" }.joinToString("&") val parameterisedUrl = URL(url.toExternalForm() + paramString) - return ObjectMapper().registerModule(KotlinModule()).readValue(parameterisedUrl, T::class.java) + return createDefaultMapper().readValue(parameterisedUrl, T::class.java) } private fun makeRequest(request: Request): Boolean { @@ -44,14 +45,7 @@ object HttpUtils { return response.isSuccessful } - private fun getRequest(request: Request): Pair { - val response = client.newCall(request).execute() - - if (!response.isSuccessful) { - logger.error("Could not fulfill HTTP request of type ${request.method()} to ${request.url()}. Status Code: ${response.code()}. Message: ${response.body().string()}") - return Pair(false, "") - } - - return Pair(true, response.body().string()) + fun createDefaultMapper(): ObjectMapper { + return ObjectMapper().registerModule(JsonSupport.createJavaTimeModule()).registerModule(KotlinModule()) } }