mirror of
https://github.com/corda/corda.git
synced 2025-06-14 13:18:18 +00:00
Fixes for nullable Prim Types
Commit messages from Squashed Commits - Carpenter doesn't work with nullable prim types - Fix to get Cherry picks up to date with Master
This commit is contained in:
@ -94,7 +94,7 @@ fun CompositeType.carpenterSchema(
|
|||||||
fun AMQPField.getTypeAsClass(
|
fun AMQPField.getTypeAsClass(
|
||||||
classLoaders: List<ClassLoader> = listOf<ClassLoader> (ClassLoader.getSystemClassLoader())
|
classLoaders: List<ClassLoader> = listOf<ClassLoader> (ClassLoader.getSystemClassLoader())
|
||||||
) = when (type) {
|
) = when (type) {
|
||||||
"int" -> Int::class.javaPrimitiveType!!
|
"int" -> if (mandatory) Integer::class.java else Int::class.javaPrimitiveType!!
|
||||||
"string" -> String::class.java
|
"string" -> String::class.java
|
||||||
"short" -> Short::class.javaPrimitiveType!!
|
"short" -> Short::class.javaPrimitiveType!!
|
||||||
"long" -> Long::class.javaPrimitiveType!!
|
"long" -> Long::class.javaPrimitiveType!!
|
||||||
|
@ -2,10 +2,8 @@ package net.corda.core.serialization.amqp
|
|||||||
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
import net.corda.core.serialization.carpenter.ClassCarpenter
|
import net.corda.core.serialization.carpenter.*
|
||||||
import net.corda.core.serialization.carpenter.ClassSchema
|
import java.lang.Character
|
||||||
import net.corda.core.serialization.carpenter.InterfaceSchema
|
|
||||||
import net.corda.core.serialization.carpenter.NonNullableField
|
|
||||||
|
|
||||||
interface I {
|
interface I {
|
||||||
fun getName() : String
|
fun getName() : String
|
||||||
@ -125,4 +123,24 @@ class DeserializeNeedingCarpentryTests {
|
|||||||
assertEquals("timmy", deserializedObj::class.java.getMethod("getName").invoke(deserializedObj))
|
assertEquals("timmy", deserializedObj::class.java.getMethod("getName").invoke(deserializedObj))
|
||||||
assertEquals(12, deserializedObj::class.java.getMethod("getAge").invoke(deserializedObj))
|
assertEquals(12, deserializedObj::class.java.getMethod("getAge").invoke(deserializedObj))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun manyTypes() {
|
||||||
|
val cc = ClassCarpenter()
|
||||||
|
|
||||||
|
val manyClass = cc.build (ClassSchema(
|
||||||
|
"many",
|
||||||
|
mapOf(
|
||||||
|
"intA" to NonNullableField (Int::class.java),
|
||||||
|
"intB" to NullableField (Integer::class.java),
|
||||||
|
"strA" to NonNullableField (String::class.java),
|
||||||
|
"strB" to NullableField (String::class.java),
|
||||||
|
"charA" to NonNullableField (Char::class.java),
|
||||||
|
"charB" to NullableField (Character::class.java))))
|
||||||
|
|
||||||
|
val serialisedBytes = SerializationOutput().serialize(
|
||||||
|
manyClass.constructors.first().newInstance(1, 2, "a", "b", 'c', 'd'))
|
||||||
|
|
||||||
|
val deserializedObj = DeserializationInput().deserialize(serialisedBytes)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package net.corda.nodeapi.internal.serialization.carpenter
|
|||||||
|
|
||||||
import net.corda.nodeapi.internal.serialization.amqp.Field
|
import net.corda.nodeapi.internal.serialization.amqp.Field
|
||||||
import net.corda.nodeapi.internal.serialization.amqp.Schema
|
import net.corda.nodeapi.internal.serialization.amqp.Schema
|
||||||
|
import net.corda.nodeapi.internal.serialization.amqp.CompositeType
|
||||||
import net.corda.nodeapi.internal.serialization.amqp.SerializerFactory
|
import net.corda.nodeapi.internal.serialization.amqp.SerializerFactory
|
||||||
import net.corda.nodeapi.internal.serialization.amqp.SerializationOutput
|
import net.corda.nodeapi.internal.serialization.amqp.SerializationOutput
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user