我有一个流程,发生以下情况:
PartyA 创造一个 TransactionBuilderPartyA发送TransactionBuilder到PartyBPartyB 添加状态到 TransactionBuilder但是,当PartyB尝试向构建器的状态时,它们会得到以下异常:
[WARN ] 2018-03-20T16:02:35,932Z [Node thread-1] flow.[99246baf-1a1d-44e5-b2f9-f4eb341b97d4].run - Terminated by unexpected exception {}
java.lang.UnsupportedOperationException: null
at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055) ~[?:1.8.0_162]
at net.corda.core.transactions.TransactionBuilder.addInputState(TransactionBuilder.kt:149) ~[corda-core-corda-3.0.jar:?]
Run Code Online (Sandbox Code Playgroud)
这里发生了什么事?为什么不能PartyB添加物品TransactionBuilder?
在Corda中,对象在通过线路发送之前被序列化.在对接收到的对象进行反序列化时,不可能检测到List被反序列化的s 是否最初是可变的或不可变的.总的来说,我们决定我们的序列化引擎应该使任何List反序列化不可变,而不是可变.
这导致了您在上面观察到的问题.在引擎盖下,你正在调用add一个不可变的列表.
您可以绕过此问题,TransactionBuilder.copy以便再次制作TransactionBuilder具有可变状态列表的副本.
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |