Skip to content

Add jackson module #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion integration-junit5/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ dependencies {
implementation("org.jetbrains.kotlin:kotlin-reflect")

implementation(platform("net.corda:corda-api:$cordaApiVersion"))
implementation("net.corda:corda-base")
implementation("net.corda:corda-serialization")
implementation("org.junit.jupiter:junit-jupiter-api:$junitVersion")

implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.github.manosbatsis.corda5.testutils.integration.junit5.jackson

import com.fasterxml.jackson.databind.module.SimpleDeserializers
import com.fasterxml.jackson.databind.module.SimpleModule
import com.fasterxml.jackson.databind.module.SimpleSerializers
import net.corda.v5.base.types.MemberX500Name

class Corda5Module : SimpleModule() {
override fun getModuleName(): String = this.javaClass.simpleName

override fun setupModule(context: SetupContext) {
val serializers = SimpleSerializers()
serializers.addSerializer(MemberX500Name::class.java, MemberX500NameSerializer())
context.addSerializers(serializers)

val deserializers = SimpleDeserializers()
deserializers.addDeserializer(MemberX500Name::class.java, MemberX500NameDeserializer())
context.addDeserializers(deserializers)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.github.manosbatsis.corda5.testutils.integration.junit5.jackson

import com.fasterxml.jackson.core.JsonGenerator
import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.DeserializationContext
import com.fasterxml.jackson.databind.SerializerProvider
import com.fasterxml.jackson.databind.deser.std.StdDeserializer
import com.fasterxml.jackson.databind.ser.std.StdSerializer
import net.corda.v5.base.types.MemberX500Name

open class MemberX500NameSerializer : StdSerializer<MemberX500Name>(MemberX500Name::class.java) {

override fun serialize(
memberX500Name: MemberX500Name,
jsonGenerator: JsonGenerator,
serializerProvider: SerializerProvider
) {
jsonGenerator.writeString(memberX500Name.toString())
}
}

open class MemberX500NameDeserializer : StdDeserializer<MemberX500Name>(MemberX500Name::class.java) {
override fun deserialize(jsonParser: JsonParser, obj: DeserializationContext): MemberX500Name {
val value: String = jsonParser.codec.readValue(jsonParser, String::class.java)

return MemberX500Name.parse(value)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.fasterxml.jackson.module.kotlin.kotlinModule
import com.github.manosbatsis.corda5.testutils.integration.junit5.CombinedWorkerMode
import com.github.manosbatsis.corda5.testutils.integration.junit5.Corda5NodesConfig
import com.github.manosbatsis.corda5.testutils.rest.client.*
import com.github.manosbatsis.corda5.testutils.integration.junit5.jackson.Corda5Module
import com.github.manosbatsis.corda5.testutils.rest.client.model.VirtualNodeInfo
import feign.Feign
import feign.auth.BasicAuthRequestInterceptor
Expand All @@ -21,7 +22,7 @@ class NodeHandlesHelper(

companion object {
private val logger = loggerFor(NodeHandlesHelper::class.java)
private val objectMapper = ObjectMapper().registerModules(JavaTimeModule(), kotlinModule())
private val objectMapper = ObjectMapper().registerModules(JavaTimeModule(), kotlinModule(), Corda5Module())

var nodeHandlesCache: NodeHandles? = null
}
Expand Down