我希望能够将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时,我得到了:


  类java.util.Date不在白名单上注解,
  不能使用inserializationSerializationtrace:
  closeDate(com.template.messages.Message)


如何将Date列入白名单以进行序列化?

最佳答案

从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的类的完全限定的类名。

干杯

关于java - 如何将类型白名单以使用CORDA进行序列化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45099488/

10-13 03:01