Carpenter bug fixes

Squashed commit messages:
	* Nested schema creation now works with dependencies recursvly created in
	  the carpenter

	* Remove spurious prints from tests

	* Remove warnings

	* Don't add cladd member dep by name

	  Since that's the name of the field, not the type we depend on. If we do
	  we'll never actually be able to craft the type as the dependency chain
	  will be horribly broken

	  Various bug fixes

	* Fix merge issue where types weren't being seen as Prims

	* IntelliJ auto code cleanup / reformat

	* Whitespace changes

	* Add comment blocking as I like seeing it in files
This commit is contained in:
Katelyn Baker 2017-06-28 16:55:42 +01:00
parent d76c1e75a4
commit 9ab6a72ea8
8 changed files with 395 additions and 308 deletions

View File

@ -12,12 +12,6 @@ import java.lang.reflect.GenericArrayType
import java.lang.reflect.ParameterizedType import java.lang.reflect.ParameterizedType
import java.lang.reflect.Type import java.lang.reflect.Type
import java.lang.reflect.WildcardType import java.lang.reflect.WildcardType
import java.lang.Float
import java.lang.Long
import java.lang.Short
import java.lang.Double
import java.lang.Character
//import java.lang.Boolean
import java.util.* import java.util.*
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.CopyOnWriteArrayList import java.util.concurrent.CopyOnWriteArrayList

View File

@ -7,10 +7,12 @@ import net.corda.core.identity.AbstractParty
import net.corda.core.serialization.CordaSerializable import net.corda.core.serialization.CordaSerializable
import net.corda.core.serialization.EmptyWhitelist import net.corda.core.serialization.EmptyWhitelist
import net.corda.core.serialization.KryoAMQPSerializer import net.corda.core.serialization.KryoAMQPSerializer
import net.corda.core.CordaRuntimeException import net.corda.core.serialization.amqp.SerializerFactory.Companion.isPrimitive
import net.corda.core.utilities.CordaRuntimeException
import net.corda.nodeapi.RPCException import net.corda.nodeapi.RPCException
import net.corda.testing.MEGA_CORP import net.corda.testing.MEGA_CORP
import net.corda.testing.MEGA_CORP_PUBKEY import net.corda.testing.MEGA_CORP_PUBKEY
import org.apache.qpid.proton.amqp.*
import org.apache.qpid.proton.codec.DecoderImpl import org.apache.qpid.proton.codec.DecoderImpl
import org.apache.qpid.proton.codec.EncoderImpl import org.apache.qpid.proton.codec.EncoderImpl
import org.junit.Test import org.junit.Test
@ -27,6 +29,14 @@ import kotlin.test.assertTrue
class SerializationOutputTests { class SerializationOutputTests {
data class Foo(val bar: String, val pub: Int) data class Foo(val bar: String, val pub: Int)
data class testFloat(val f: Float)
data class testDouble(val d: Double)
data class testShort(val s: Short)
data class testBoolean(val b : Boolean)
interface FooInterface { interface FooInterface {
val pub: Int val pub: Int
} }
@ -159,12 +169,61 @@ class SerializationOutputTests {
return desObj2 return desObj2
} }
@Test
fun isPrimitive() {
assertTrue(isPrimitive(Character::class.java))
assertTrue(isPrimitive(Boolean::class.java))
assertTrue(isPrimitive(Byte::class.java))
assertTrue(isPrimitive(UnsignedByte::class.java))
assertTrue(isPrimitive(Short::class.java))
assertTrue(isPrimitive(UnsignedShort::class.java))
assertTrue(isPrimitive(Int::class.java))
assertTrue(isPrimitive(UnsignedInteger::class.java))
assertTrue(isPrimitive(Long::class.java))
assertTrue(isPrimitive(UnsignedLong::class.java))
assertTrue(isPrimitive(Float::class.java))
assertTrue(isPrimitive(Double::class.java))
assertTrue(isPrimitive(Decimal32::class.java))
assertTrue(isPrimitive(Decimal64::class.java))
assertTrue(isPrimitive(Decimal128::class.java))
assertTrue(isPrimitive(Char::class.java))
assertTrue(isPrimitive(Date::class.java))
assertTrue(isPrimitive(UUID::class.java))
assertTrue(isPrimitive(ByteArray::class.java))
assertTrue(isPrimitive(String::class.java))
assertTrue(isPrimitive(Symbol::class.java))
}
@Test @Test
fun `test foo`() { fun `test foo`() {
val obj = Foo("Hello World!", 123) val obj = Foo("Hello World!", 123)
serdes(obj) serdes(obj)
} }
@Test
fun `test float`() {
val obj = testFloat(10.0F)
serdes(obj)
}
@Test
fun `test double`() {
val obj = testDouble(10.0)
serdes(obj)
}
@Test
fun `test short`() {
val obj = testShort(1)
serdes(obj)
}
@Test
fun `test bool`() {
val obj = testBoolean(true)
serdes(obj)
}
@Test @Test
fun `test foo implements`() { fun `test foo implements`() {
val obj = FooImplements("Hello World!", 123) val obj = FooImplements("Hello World!", 123)

View File

@ -5,6 +5,8 @@ import net.corda.core.serialization.carpenter.Schema
import net.corda.core.serialization.amqp.CompositeType import net.corda.core.serialization.amqp.CompositeType
/**********************************************************************************************************************/
abstract class MetaCarpenterBase (val schemas : CarpenterSchemas) { abstract class MetaCarpenterBase (val schemas : CarpenterSchemas) {
private val cc = ClassCarpenter() private val cc = ClassCarpenter()
@ -35,6 +37,8 @@ abstract class MetaCarpenterBase (val schemas : CarpenterSchemas) {
abstract fun build() abstract fun build()
} }
/**********************************************************************************************************************/
class MetaCarpenter (schemas : CarpenterSchemas) : MetaCarpenterBase (schemas) { class MetaCarpenter (schemas : CarpenterSchemas) : MetaCarpenterBase (schemas) {
override fun build() { override fun build() {
while (schemas.carpenterSchemas.isNotEmpty()) { while (schemas.carpenterSchemas.isNotEmpty()) {
@ -44,6 +48,8 @@ class MetaCarpenter (schemas : CarpenterSchemas) : MetaCarpenterBase (schemas) {
} }
} }
/**********************************************************************************************************************/
class TestMetaCarpenter (schemas : CarpenterSchemas) : MetaCarpenterBase (schemas) { class TestMetaCarpenter (schemas : CarpenterSchemas) : MetaCarpenterBase (schemas) {
override fun build() { override fun build() {
println ("TestMetaCarpenter::build") println ("TestMetaCarpenter::build")
@ -51,3 +57,5 @@ class TestMetaCarpenter (schemas : CarpenterSchemas) : MetaCarpenterBase (schema
step (schemas.carpenterSchemas.removeAt(0)) step (schemas.carpenterSchemas.removeAt(0))
} }
} }
/**********************************************************************************************************************/

View File

@ -22,7 +22,8 @@ fun Schema.curruptName (names: List<String>) : Schema {
val newName = if (type.name in names) curruptName(type.name) else type.name val newName = if (type.name in names) curruptName(type.name) else type.name
val newProvides = type.provides.map { val newProvides = type.provides.map {
it -> if (it in names) curruptName (it) else it it ->
if (it in names) curruptName(it) else it
} }
val newFields = mutableListOf<Field>() val newFields = mutableListOf<Field>()

View File

@ -44,9 +44,6 @@ class CompositeMembers : AmqpCarpenterBase() {
assert(obj.second.schema.types[0] is CompositeType) assert(obj.second.schema.types[0] is CompositeType)
assert(obj.second.schema.types[1] is CompositeType) assert(obj.second.schema.types[1] is CompositeType)
println (obj.second.schema.types[0] as CompositeType)
println (obj.second.schema.types[1] as CompositeType)
var amqpSchemaA: CompositeType? = null var amqpSchemaA: CompositeType? = null
var amqpSchemaB: CompositeType? = null var amqpSchemaB: CompositeType? = null
@ -68,7 +65,6 @@ class CompositeMembers : AmqpCarpenterBase() {
assertEquals("a", amqpSchemaA!!.fields[0].name) assertEquals("a", amqpSchemaA!!.fields[0].name)
assertEquals("int", amqpSchemaA.fields[0].type) assertEquals("int", amqpSchemaA.fields[0].type)
assertEquals(2, amqpSchemaB?.fields?.size) assertEquals(2, amqpSchemaB?.fields?.size)
assertEquals("a", amqpSchemaB!!.fields[0].name) assertEquals("a", amqpSchemaB!!.fields[0].name)
assertEquals(classTestName("A"), amqpSchemaB.fields[0].type) assertEquals(classTestName("A"), amqpSchemaB.fields[0].type)
@ -96,6 +92,7 @@ class CompositeMembers : AmqpCarpenterBase() {
@CordaSerializable @CordaSerializable
data class B(val a: A, var b: Int) data class B(val a: A, var b: Int)
val b = B(A(testA), testB) val b = B(A(testA), testB)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b)) val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b))
@ -116,13 +113,14 @@ class CompositeMembers : AmqpCarpenterBase() {
@CordaSerializable @CordaSerializable
data class B(val a: A, var b: Int) data class B(val a: A, var b: Int)
val b = B(A(testA), testB) val b = B(A(testA), testB)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b)) val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b))
assert(obj.first is B) assert(obj.first is B)
val amqpSchema = obj.second.schema.curruptName(listOf (classTestName ("B"))) val amqpSchema = obj.envelope.schema.curruptName(listOf(classTestName("B")))
val carpenterSchema = amqpSchema.carpenterSchema() val carpenterSchema = amqpSchema.carpenterSchema()
@ -145,13 +143,14 @@ class CompositeMembers : AmqpCarpenterBase() {
@CordaSerializable @CordaSerializable
data class B(val a: A, var b: Int) data class B(val a: A, var b: Int)
val b = B(A(testA), testB) val b = B(A(testA), testB)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b)) val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b))
assert(obj.first is B) assert(obj.first is B)
val amqpSchema = obj.second.schema.curruptName(listOf (classTestName ("A"), classTestName ("B"))) val amqpSchema = obj.envelope.schema.curruptName(listOf(classTestName("A"), classTestName("B")))
val carpenterSchema = amqpSchema.carpenterSchema() val carpenterSchema = amqpSchema.carpenterSchema()
@ -212,7 +211,7 @@ class CompositeMembers : AmqpCarpenterBase() {
assert(obj.first is C) assert(obj.first is C)
val amqpSchema = obj.second.schema.curruptName(listOf (classTestName ("A"), classTestName ("B"))) val amqpSchema = obj.envelope.schema.curruptName(listOf(classTestName("A"), classTestName("B")))
amqpSchema.carpenterSchema() amqpSchema.carpenterSchema()
} }
@ -238,7 +237,7 @@ class CompositeMembers : AmqpCarpenterBase() {
assert(obj.first is C) assert(obj.first is C)
val amqpSchema = obj.second.schema.curruptName(listOf (classTestName ("A"), classTestName ("B"))) val amqpSchema = obj.envelope.schema.curruptName(listOf(classTestName("A"), classTestName("B")))
amqpSchema.carpenterSchema() amqpSchema.carpenterSchema()
} }
@ -264,7 +263,7 @@ class CompositeMembers : AmqpCarpenterBase() {
assert(obj.first is C) assert(obj.first is C)
val amqpSchema = obj.second.schema.curruptName(listOf (classTestName ("A"), classTestName ("B"))) val amqpSchema = obj.envelope.schema.curruptName(listOf(classTestName("A"), classTestName("B")))
} }
@ -282,6 +281,7 @@ class CompositeMembers : AmqpCarpenterBase() {
@CordaSerializable @CordaSerializable
data class B(val a: A, var b: Int) data class B(val a: A, var b: Int)
val b = B(A(testA), testB) val b = B(A(testA), testB)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b)) val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b))
@ -299,6 +299,7 @@ class CompositeMembers : AmqpCarpenterBase() {
@CordaSerializable @CordaSerializable
data class B(val a: A, var b: Int) data class B(val a: A, var b: Int)
val b = B(A(testA), testB) val b = B(A(testA), testB)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b)) val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b))
@ -316,6 +317,7 @@ class CompositeMembers : AmqpCarpenterBase() {
@CordaSerializable @CordaSerializable
data class B(val a: A, var b: Int) data class B(val a: A, var b: Int)
val b = B(A(testA), testB) val b = B(A(testA), testB)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b)) val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(b))

View File

@ -149,7 +149,7 @@ class InheritanceSchemaToClassCarpenterTests : AmqpCarpenterBase() {
class A(override val i: Int, override val ii: Int) : I, II class A(override val i: Int, override val ii: Int) : I, II
val a = A(testI, testII) val a = A(testI, testII)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(a)) val obj = DeserializationInput(factory).deserializeAndReturnEnvelope(serialise(a))
assert(obj.first is A) assert(obj.first is A)
@ -202,7 +202,7 @@ class InheritanceSchemaToClassCarpenterTests : AmqpCarpenterBase() {
class A(override val i: Int, override val iii: Int) : III class A(override val i: Int, override val iii: Int) : III
val a = A(testI, testIII) val a = A(testI, testIII)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(a)) val obj = DeserializationInput(factory).deserializeAndReturnEnvelope(serialise(a))
assert(obj.first is A) assert(obj.first is A)
@ -309,6 +309,7 @@ class InheritanceSchemaToClassCarpenterTests : AmqpCarpenterBase() {
fun memberInterface2() { fun memberInterface2() {
val testI = 25 val testI = 25
val testIIII = 50 val testIIII = 50
class A(override val i: Int) : I class A(override val i: Int) : I
class B(override val i: I, override val iiii: Int) : IIII class B(override val i: I, override val iiii: Int) : IIII

View File

@ -1,15 +1,14 @@
package net.corda.carpenter package net.corda.carpenter
import net.corda.carpenter.test.AmqpCarpenterBase
import net.corda.core.serialization.CordaSerializable import net.corda.core.serialization.CordaSerializable
import net.corda.core.serialization.amqp.* import net.corda.core.serialization.amqp.*
import net.corda.core.serialization.carpenter.CarpenterSchemas
import org.junit.Test import org.junit.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals
class SingleMemberCompositeSchemaToClassCarpenterTests { class SingleMemberCompositeSchemaToClassCarpenterTests : AmqpCarpenterBase() {
private var factory = SerializerFactory()
fun serialise (clazz : Any) = SerializationOutput(factory).serialize(clazz)
@Test @Test
fun singleInteger() { fun singleInteger() {
@ -19,22 +18,26 @@ class SingleMemberCompositeSchemaToClassCarpenterTests {
data class A(val a: Int) data class A(val a: Int)
val a = A(test) val a = A(test)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise (a)) val obj = DeserializationInput(factory).deserializeAndReturnEnvelope(serialise(a))
assert (obj.first is A) assert(obj.obj is A)
val amqpObj = obj.first as A val amqpObj = obj.obj as A
assertEquals(test, amqpObj.a) assertEquals(test, amqpObj.a)
assertEquals (1, obj.second.schema.types.size) assertEquals(1, obj.envelope.schema.types.size)
assert (obj.second.schema.types[0] is CompositeType) assert(obj.envelope.schema.types[0] is CompositeType)
val amqpSchema = obj.second.schema.types[0] as CompositeType val amqpSchema = obj.envelope.schema.types[0] as CompositeType
assertEquals(1, amqpSchema.fields.size) assertEquals(1, amqpSchema.fields.size)
assertEquals("a", amqpSchema.fields[0].name) assertEquals("a", amqpSchema.fields[0].name)
assertEquals("int", amqpSchema.fields[0].type) assertEquals("int", amqpSchema.fields[0].type)
val pinochio = ClassCarpenter().build(amqpSchema.carpenterSchema()) val carpenterSchema = CarpenterSchemas.newInstance()
amqpSchema.carpenterSchema(carpenterSchemas = carpenterSchema, force = true)
val aSchema = carpenterSchema.carpenterSchemas.find { it.name == classTestName("A") }!!
val pinochio = ClassCarpenter().build(aSchema)
val p = pinochio.constructors[0].newInstance(test) val p = pinochio.constructors[0].newInstance(test)
@ -47,24 +50,25 @@ class SingleMemberCompositeSchemaToClassCarpenterTests {
@CordaSerializable @CordaSerializable
data class A(val a: String) data class A(val a: String)
var a = A (test)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise (a)) val a = A(test)
assert (obj.first is A) val obj = DeserializationInput(factory).deserializeAndReturnEnvelope(serialise(a))
val amqpObj = obj.first as A
assert(obj.obj is A)
val amqpObj = obj.obj as A
assertEquals(test, amqpObj.a) assertEquals(test, amqpObj.a)
assertEquals (1, obj.second.schema.types.size) assertEquals(1, obj.envelope.schema.types.size)
assert (obj.second.schema.types[0] is CompositeType) assert(obj.envelope.schema.types[0] is CompositeType)
var amqpSchema = obj.second.schema.types[0] as CompositeType val amqpSchema = obj.envelope.schema.types[0] as CompositeType
assertEquals (1, amqpSchema.fields.size) val carpenterSchema = CarpenterSchemas.newInstance()
assertEquals ("a", amqpSchema.fields[0].name) amqpSchema.carpenterSchema(carpenterSchemas = carpenterSchema, force = true)
assertEquals ("string", amqpSchema.fields[0].type)
var pinochio = ClassCarpenter().build(amqpSchema.carpenterSchema()) val aSchema = carpenterSchema.carpenterSchemas.find { it.name == classTestName("A") }!!
val pinochio = ClassCarpenter().build(aSchema)
val p = pinochio.constructors[0].newInstance(test) val p = pinochio.constructors[0].newInstance(test)
@ -78,25 +82,31 @@ class SingleMemberCompositeSchemaToClassCarpenterTests {
@CordaSerializable @CordaSerializable
data class A(val a : Char) data class A(val a : Char)
var a = A (test) val a = A(test)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(a)) val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise(a))
assert (obj.first is A) assert (obj.obj is A)
val amqpObj = obj.first as A val amqpObj = obj.obj as A
assertEquals (test, amqpObj.a) assertEquals (test, amqpObj.a)
assertEquals (1, obj.second.schema.types.size) assertEquals (1, obj.envelope.schema.types.size)
assertEquals (1, obj.second.schema.types.size) assertEquals (1, obj.envelope.schema.types.size)
assert (obj.second.schema.types[0] is CompositeType) assert (obj.envelope.schema.types[0] is CompositeType)
var amqpSchema = obj.second.schema.types[0] as CompositeType val amqpSchema = obj.envelope.schema.types[0] as CompositeType
assertEquals (1, amqpSchema.fields.size) assertEquals (1, amqpSchema.fields.size)
assertEquals ("a", amqpSchema.fields[0].name) assertEquals ("a", amqpSchema.fields[0].name)
assertEquals ("char", amqpSchema.fields[0].type) assertEquals ("char", amqpSchema.fields[0].type)
var pinochio = ClassCarpenter().build(ClassCarpenter.Schema(amqpSchema.name, amqpSchema.carpenterSchema())) val carpenterSchema = CarpenterSchema.newInstance()
amqpSchema.carpenterSchema(carpenterSchema = carpenterSchema, force = true)
assert (classTestName ("A") in carpenterSchema.carpenterSchemas)
val aSchema = carpenterSchema.carpenterSchemas[classTestName ("A")]!!
val pinochio = ClassCarpenter().build(aSchema)
val p = pinochio.constructors[0].newInstance (test) val p = pinochio.constructors[0].newInstance (test)
@ -113,23 +123,26 @@ class SingleMemberCompositeSchemaToClassCarpenterTests {
var a = A(test) var a = A(test)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise (a)) val obj = DeserializationInput(factory).deserializeAndReturnEnvelope(serialise(a))
assert (obj.first is A) assert(obj.obj is A)
val amqpObj = obj.first as A val amqpObj = obj.obj as A
assertEquals(test, amqpObj.a) assertEquals(test, amqpObj.a)
assertEquals (1, obj.second.schema.types.size) assertEquals(1, obj.envelope.schema.types.size)
assert (obj.second.schema.types[0] is CompositeType) assert(obj.envelope.schema.types[0] is CompositeType)
var amqpSchema = obj.second.schema.types[0] as CompositeType var amqpSchema = obj.envelope.schema.types[0] as CompositeType
assertEquals(1, amqpSchema.fields.size) assertEquals(1, amqpSchema.fields.size)
assertEquals("a", amqpSchema.fields[0].name) assertEquals("a", amqpSchema.fields[0].name)
assertEquals("long", amqpSchema.fields[0].type) assertEquals("long", amqpSchema.fields[0].type)
var pinochio = ClassCarpenter().build(amqpSchema.carpenterSchema()) val carpenterSchema = CarpenterSchemas.newInstance()
amqpSchema.carpenterSchema(carpenterSchemas = carpenterSchema, force = true)
val aSchema = carpenterSchema.carpenterSchemas.find { it.name == classTestName("A") }!!
val pinochio = ClassCarpenter().build(aSchema)
val p = pinochio.constructors[0].newInstance(test) val p = pinochio.constructors[0].newInstance(test)
assertEquals(pinochio.getMethod("getA").invoke(p), amqpObj.a) assertEquals(pinochio.getMethod("getA").invoke(p), amqpObj.a)
@ -144,23 +157,26 @@ class SingleMemberCompositeSchemaToClassCarpenterTests {
var a = A(test) var a = A(test)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise (a)) val obj = DeserializationInput(factory).deserializeAndReturnEnvelope(serialise(a))
assert (obj.first is A) assert(obj.obj is A)
val amqpObj = obj.first as A val amqpObj = obj.obj as A
assertEquals(test, amqpObj.a) assertEquals(test, amqpObj.a)
assertEquals (1, obj.second.schema.types.size) assertEquals(1, obj.envelope.schema.types.size)
assert (obj.second.schema.types[0] is CompositeType) assert(obj.envelope.schema.types[0] is CompositeType)
var amqpSchema = obj.second.schema.types[0] as CompositeType var amqpSchema = obj.envelope.schema.types[0] as CompositeType
assertEquals(1, amqpSchema.fields.size) assertEquals(1, amqpSchema.fields.size)
assertEquals("a", amqpSchema.fields[0].name) assertEquals("a", amqpSchema.fields[0].name)
assertEquals("short", amqpSchema.fields[0].type) assertEquals("short", amqpSchema.fields[0].type)
var pinochio = ClassCarpenter().build(amqpSchema.carpenterSchema()) val carpenterSchema = CarpenterSchemas.newInstance()
amqpSchema.carpenterSchema(carpenterSchemas = carpenterSchema, force = true)
val aSchema = carpenterSchema.carpenterSchemas.find { it.name == classTestName("A") }!!
val pinochio = ClassCarpenter().build(aSchema)
val p = pinochio.constructors[0].newInstance(test) val p = pinochio.constructors[0].newInstance(test)
assertEquals(pinochio.getMethod("getA").invoke(p), amqpObj.a) assertEquals(pinochio.getMethod("getA").invoke(p), amqpObj.a)
@ -178,14 +194,14 @@ class SingleMemberCompositeSchemaToClassCarpenterTests {
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise (a)) val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise (a))
assert (obj.first is A) assert (obj.obj is A)
val amqpObj = obj.first as A val amqpObj = obj.obj as A
assertEquals (test, amqpObj.a) assertEquals (test, amqpObj.a)
assertEquals (1, obj.second.schema.types.size) assertEquals (1, obj.envelope.schema.types.size)
assert (obj.second.schema.types[0] is CompositeType) assert (obj.envelope.schema.types[0] is CompositeType)
var amqpSchema = obj.second.schema.types[0] as CompositeType var amqpSchema = obj.envelope.schema.types[0] as CompositeType
assertEquals (1, amqpSchema.fields.size) assertEquals (1, amqpSchema.fields.size)
assertEquals ("a", amqpSchema.fields[0].name) assertEquals ("a", amqpSchema.fields[0].name)
@ -206,25 +222,28 @@ class SingleMemberCompositeSchemaToClassCarpenterTests {
@CordaSerializable @CordaSerializable
data class A(val a: Double) data class A(val a: Double)
var a = A (test) val a = A(test)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise (a)) val obj = DeserializationInput(factory).deserializeAndReturnEnvelope(serialise(a))
assert (obj.first is A) assert(obj.obj is A)
val amqpObj = obj.first as A val amqpObj = obj.obj as A
assertEquals(test, amqpObj.a) assertEquals(test, amqpObj.a)
assertEquals (1, obj.second.schema.types.size) assertEquals(1, obj.envelope.schema.types.size)
assert (obj.second.schema.types[0] is CompositeType) assert(obj.envelope.schema.types[0] is CompositeType)
var amqpSchema = obj.second.schema.types[0] as CompositeType val amqpSchema = obj.envelope.schema.types[0] as CompositeType
assertEquals(1, amqpSchema.fields.size) assertEquals(1, amqpSchema.fields.size)
assertEquals("a", amqpSchema.fields[0].name) assertEquals("a", amqpSchema.fields[0].name)
assertEquals("double", amqpSchema.fields[0].type) assertEquals("double", amqpSchema.fields[0].type)
var pinochio = ClassCarpenter().build(amqpSchema.carpenterSchema()) val carpenterSchema = CarpenterSchemas.newInstance()
amqpSchema.carpenterSchema(carpenterSchemas = carpenterSchema, force = true)
val aSchema = carpenterSchema.carpenterSchemas.find { it.name == classTestName("A") }!!
val pinochio = ClassCarpenter().build(aSchema)
val p = pinochio.constructors[0].newInstance(test) val p = pinochio.constructors[0].newInstance(test)
assertEquals(pinochio.getMethod("getA").invoke(p), amqpObj.a) assertEquals(pinochio.getMethod("getA").invoke(p), amqpObj.a)
@ -232,32 +251,35 @@ class SingleMemberCompositeSchemaToClassCarpenterTests {
@Test @Test
fun singleFloat() { fun singleFloat() {
val test = 10.0F val test: Float = 10.0F
@CordaSerializable @CordaSerializable
data class A(val a: Float) data class A(val a: Float)
var a = A (test) val a = A(test)
val obj = DeserializationInput(factory).deserializeRtnEnvelope(serialise (a)) val obj = DeserializationInput(factory).deserializeAndReturnEnvelope(serialise(a))
assert (obj.first is A) assert(obj.obj is A)
val amqpObj = obj.first as A val amqpObj = obj.obj as A
assertEquals(test, amqpObj.a) assertEquals(test, amqpObj.a)
assertEquals (1, obj.second.schema.types.size) assertEquals(1, obj.envelope.schema.types.size)
assert (obj.second.schema.types[0] is CompositeType) assert(obj.envelope.schema.types[0] is CompositeType)
var amqpSchema = obj.second.schema.types[0] as CompositeType val amqpSchema = obj.envelope.schema.types[0] as CompositeType
assertEquals(1, amqpSchema.fields.size) assertEquals(1, amqpSchema.fields.size)
assertEquals("a", amqpSchema.fields[0].name) assertEquals("a", amqpSchema.fields[0].name)
assertEquals("float", amqpSchema.fields[0].type) assertEquals("float", amqpSchema.fields[0].type)
var pinochio = ClassCarpenter().build(amqpSchema.carpenterSchema()) val carpenterSchema = CarpenterSchemas.newInstance()
amqpSchema.carpenterSchema(carpenterSchemas = carpenterSchema, force = true)
val aSchema = carpenterSchema.carpenterSchemas.find { it.name == classTestName("A") }!!
val pinochio = ClassCarpenter().build(aSchema)
val p = pinochio.constructors[0].newInstance(test) val p = pinochio.constructors[0].newInstance(test)
// assertEquals (pinochio.getMethod("getA").invoke (p), amqpObj.a) assertEquals(pinochio.getMethod("getA").invoke(p), amqpObj.a)
} }
} }