В Corda параметр конструктора не ссылается на ошибку свойства - PullRequest
0 голосов
/ 08 ноября 2018

Я определил следующий интерфейс:

open class IsBustCommand(val bustParty: Party, val isBust: Boolean)

И следующая команда:

interface Commands : CommandData {
    class GoToDirect(party: Party, isBust: Boolean) : IsBustCommand(party, isBust), Commands
}

Когда я запускаю поток, он выдает:

java.io.NotSerializableException: параметр конструктора - "участник" - не относится к свойству класса com.cordacodeclub.directAgreement.contract.DirectAgreementContract $ Команды $ GoToDirect» -> класс com.cordacodeclub.directAgreement.contract.DirectAgreementContract $ Commands $ GoToDirect в net.corda.nodeapi.internal.serialization.amqp.SchemaKt.fingerprintForType (Schema.kt: 438) ~ [Corda-узел-апи-3,3-corda.jar :?] at net.corda.nodeapi.internal.serialization.amqp.SchemaKt.fingerprintForType $ default (Schema.kt: 352) ~ [Corda-узел-апи-3,3-corda.jar:?]

Если я изменю имя параметра в конструкторе на:

class GoToDirect(bustParty: Party, isBust: Boolean) : IsBustCommand(bustParty, isBust), Commands```

Тогда я больше не получаю исключение. Что здесь происходит?

1 Ответ

0 голосов
/ 08 ноября 2018

Платформа сериализации Corda требует, чтобы каждый параметр конструктора соответствовал свойству класса с тем же именем.

В первом примере party не является свойством GoToDirect или его суперклассов / интерфейсов, поэтому это условие не выполняется (это можно исправить, добавив val в конструктор следующим образом: class GoToDirect(val party: Party, isBust: Boolean)).

Во втором примере bustParty не является свойством GoToDirect, но это свойство IsBustCommand, поэтому это условие выполняется и сериализация завершается успешно.

...