如何将CORDA序列化的类型列入白名单
我希望能够将java.util.Date
传递给模型java.util.Date
的CORDA API端点
该模型
public final class Message{ public Date birthday; public Message(Date birthday) { this.birthday = birthday; } private Message() { // This is only here so the serializer can spin up a new instance. } public Date getBirthday() { return birthday; } }
API
@Path("foo") public final class FooApi { @PUT @Path("bar") @Produces(MediaType.APPLICATION_JSON) public Response putBar(Message m) { // Some logic here return Response.ok("Successful").build(); } }
问题是,当我提交一个Date
,我得到这个:
Classjava.util.Dateisnotannotatedoronthewhitelist,socannotbeusedinserializationSerializationtrace:closeDate(com.template.messages.Message)
如何将白名单序列化Date
?
作为您的CorDapp的一部分,您可以分类为Corda M13的CordaPluginRegistry
,它被定义为(在Kotlin中):
abstract class CordaPluginRegistry { open fun customizeSerialization(custom: SerializationCustomization): Boolean = false open val requiredSchemas: Set<MappedSchema> get() = emptySet() // Omitted deprecated properties. }
示例子类(在Kotlin中):
package com.example class ExamplePlugin : CordaPluginRegistry() { override fun customizeSerialization(custom: SerializationCustomization): Boolean { custom.addToWhitelist(Date::class.java) return true } }
然后,您必须确保在resources/META-INF/services/net.corda.core.node.CordaPluginRegistry
存在对上述情况下CordaPluginRegistry
子类com.example.ExamplePlugin
的完全限定类名称的引用。
而已!
干杯