CORDA-786 - Genericise the CorDapp Proxy

This commit is contained in:
Katelyn Baker
2017-11-30 14:58:53 +00:00
parent 6881350493
commit d25b7f560c
12 changed files with 39 additions and 37 deletions

View File

@ -8,7 +8,7 @@ import org.apache.qpid.proton.codec.Data
import java.lang.reflect.Type
class CorDappCustomSerializer(
private val serialiser: SerializationCustomSerializer,
private val serialiser: SerializationCustomSerializer<*, *>,
factory: SerializerFactory)
: AMQPSerializer<Any>, SerializerFor {
override val revealSubclassesInSchema: Boolean get() = false
@ -21,7 +21,8 @@ class CorDappCustomSerializer(
override fun writeClassInfo(output: SerializationOutput) {}
override fun writeObject(obj: Any, data: Data, type: Type, output: SerializationOutput) {
val proxy = serialiser.toProxy(obj)
@Suppress("UNCHECKED_CAST")
val proxy = (serialiser as SerializationCustomSerializer<Any?,Any?>).toProxy(obj)
data.withDescribed(descriptor) {
data.withList {
@ -32,9 +33,10 @@ class CorDappCustomSerializer(
}
}
override fun readObject(obj: Any, schema: Schema, input: DeserializationInput): Any {
return serialiser.fromProxy(uncheckedCast(proxySerializer.readObject(obj, schema, input)))
}
override fun readObject(obj: Any, schema: Schema, input: DeserializationInput) =
@Suppress("UNCHECKED_CAST")
(serialiser as SerializationCustomSerializer<Any?,Any?>).fromProxy(
uncheckedCast(proxySerializer.readObject(obj, schema, input)))!!
override fun isSerializerFor(clazz: Class<*>): Boolean = clazz == type
}