如何使用CORDA将序列化类型列入白名单

时间:2017-07-14 09:31:50

标签: java date serialization corda

我希望能够将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列入白名单?

1 个答案:

答案 0 :(得分:1)

在Corda 1之后,您需要创建一个实现SerializationWhitelist接口的类。其定义为:

interface SerializationWhitelist {
    val whitelist: List<Class<*>>
}

示例实现可能是:

class Plugin : SerializationWhitelist {
    override val whitelist: List<Class<*>> get() = listOf(
        TransactionBuilder::class.java
    )
}

META-INF.services中,您需要一个名为net.corda.core.serialization.SerializationWhitelist的文件,在该文件中放置实现SerializationWhitelist的类的完全限定类名。

干杯