diff --git a/core/src/main/kotlin/net/corda/core/node/services/vault/QueryCriteria.kt b/core/src/main/kotlin/net/corda/core/node/services/vault/QueryCriteria.kt index 159535b34f..ee87882193 100644 --- a/core/src/main/kotlin/net/corda/core/node/services/vault/QueryCriteria.kt +++ b/core/src/main/kotlin/net/corda/core/node/services/vault/QueryCriteria.kt @@ -94,12 +94,39 @@ sealed class QueryCriteria : GenericQueryCriteria? = null, val notary: List? = null, val softLockingCondition: SoftLockingCondition? = null, - val timeCondition: TimeCondition? = null, - override val relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL, - override val constraintTypes: Set = emptySet(), - override val constraints: Set = emptySet(), - override val participants: List? = null + val timeCondition: TimeCondition? = null ) : CommonQueryCriteria() { + // These extra fields are handled this way to preserve Kotlin wire compatibility wrt additional parameters with default values. + constructor( + status: Vault.StateStatus = Vault.StateStatus.UNCONSUMED, + contractStateTypes: Set>? = null, + stateRefs: List? = null, + notary: List? = null, + softLockingCondition: SoftLockingCondition? = null, + timeCondition: TimeCondition? = null, + relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL, + constraintTypes: Set = emptySet(), + constraints: Set = emptySet(), + participants: List? = null + ) : this(status, contractStateTypes, stateRefs, notary, softLockingCondition, timeCondition) { + this.relevancyStatus = relevancyStatus + this.constraintTypes = constraintTypes + this.constraints = constraints + this.participants = participants + } + + override var relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL + private set + + override var constraintTypes: Set = emptySet() + private set + + override var constraints: Set = emptySet() + private set + + override var participants: List? = null + private set + override fun visit(parser: IQueryCriteriaParser): Collection { super.visit(parser) return parser.parseCriteria(this) @@ -111,7 +138,11 @@ sealed class QueryCriteria : GenericQueryCriteria? = this.stateRefs, notary: List? = this.notary, softLockingCondition: SoftLockingCondition? = this.softLockingCondition, - timeCondition: TimeCondition? = this.timeCondition + timeCondition: TimeCondition? = this.timeCondition, + relevancyStatus: Vault.RelevancyStatus = this.relevancyStatus, + constraintTypes: Set = this.constraintTypes, + constraints: Set = this.constraints, + participants: List? = this.participants ): VaultQueryCriteria { return VaultQueryCriteria( status, @@ -119,7 +150,11 @@ sealed class QueryCriteria : GenericQueryCriteria @JvmOverloads constructor( val expression: CriteriaExpression, override val status: Vault.StateStatus = Vault.StateStatus.UNCONSUMED, - override val contractStateTypes: Set>? = null, - override val relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL + override val contractStateTypes: Set>? = null ) : CommonQueryCriteria() { + // These extra field is handled this way to preserve Kotlin wire compatibility wrt additional parameters with default values. + constructor( + expression: CriteriaExpression, + status: Vault.StateStatus = Vault.StateStatus.UNCONSUMED, + contractStateTypes: Set>? = null, + relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL + ) : this(expression, status, contractStateTypes) { + this.relevancyStatus = relevancyStatus + } + + override var relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL + private set + override fun visit(parser: IQueryCriteriaParser): Collection { super.visit(parser) return parser.parseCriteria(this) @@ -249,12 +296,14 @@ sealed class QueryCriteria : GenericQueryCriteria = this.expression, status: Vault.StateStatus = this.status, - contractStateTypes: Set>? = this.contractStateTypes + contractStateTypes: Set>? = this.contractStateTypes, + relevancyStatus: Vault.RelevancyStatus = this.relevancyStatus ): VaultCustomQueryCriteria { return VaultCustomQueryCriteria( expression, status, - contractStateTypes + contractStateTypes, + relevancyStatus ) } }