mirror of
https://github.com/corda/corda.git
synced 2025-01-29 15:43:55 +00:00
ENT-10122: Added annotation for backwards compatibility and added test.
This commit is contained in:
parent
117d319317
commit
c614b21a2a
@ -37,6 +37,7 @@ import net.corda.core.node.services.vault.PageSpecification
|
||||
import net.corda.core.node.services.vault.QueryCriteria
|
||||
import net.corda.core.node.services.vault.Sort
|
||||
import net.corda.core.serialization.CordaSerializable
|
||||
import net.corda.core.serialization.DeprecatedConstructorForDeserialization
|
||||
import net.corda.core.toFuture
|
||||
import net.corda.core.transactions.LedgerTransaction
|
||||
import net.corda.core.utilities.NonEmptySet
|
||||
@ -81,6 +82,7 @@ class Vault<out T : ContractState>(val states: Iterable<StateAndRef<T>>) {
|
||||
val references: Set<StateAndRef<U>> = emptySet(),
|
||||
val consumingTxIds: Map<StateRef, SecureHash> = emptyMap()
|
||||
) {
|
||||
@DeprecatedConstructorForDeserialization(1)
|
||||
@JvmOverloads constructor( consumed: Set<StateAndRef<U>>,
|
||||
produced: Set<StateAndRef<U>>,
|
||||
flowId: UUID? = null,
|
||||
@ -151,7 +153,7 @@ class Vault<out T : ContractState>(val states: Iterable<StateAndRef<T>>) {
|
||||
flowId: UUID? = null,
|
||||
type: UpdateType = UpdateType.GENERAL
|
||||
): Update<U> {
|
||||
return Update(consumed, produced, flowId, type, references)
|
||||
return Update(consumed, produced, flowId, type, references, consumingTxIds)
|
||||
}
|
||||
|
||||
/** Additional copy method to maintain backwards compatibility. */
|
||||
|
@ -1,10 +1,16 @@
|
||||
package net.corda.node
|
||||
|
||||
import net.corda.core.messaging.startFlow
|
||||
import net.corda.core.messaging.vaultTrackBy
|
||||
import net.corda.core.node.services.Vault
|
||||
import net.corda.core.node.services.vault.DEFAULT_PAGE_NUM
|
||||
import net.corda.core.node.services.vault.PageSpecification
|
||||
import net.corda.core.node.services.vault.QueryCriteria
|
||||
import net.corda.core.utilities.OpaqueBytes
|
||||
import net.corda.core.utilities.getOrThrow
|
||||
import net.corda.core.utilities.loggerFor
|
||||
import net.corda.finance.DOLLARS
|
||||
import net.corda.finance.contracts.asset.Cash
|
||||
import net.corda.finance.flows.CashIssueAndPaymentFlow
|
||||
import net.corda.node.services.config.NodeConfiguration
|
||||
import net.corda.testing.core.ALICE_NAME
|
||||
@ -17,6 +23,8 @@ import net.corda.testing.node.NotarySpec
|
||||
import net.corda.testing.node.internal.findCordapp
|
||||
import org.junit.Test
|
||||
import org.junit.jupiter.api.assertDoesNotThrow
|
||||
import java.util.concurrent.CountDownLatch
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
/**
|
||||
* Execute a flow with sub-flows, including the finality flow.
|
||||
@ -65,4 +73,36 @@ class CashIssueAndPaymentTest {
|
||||
logger.info("TXN={}, recipient={}", result.stx, result.recipient)
|
||||
}
|
||||
}
|
||||
|
||||
@Test(timeout = 300_000)
|
||||
fun `test can issue cash and see consumming transaction id in rpc client`() {
|
||||
driver(parametersFor()) {
|
||||
val alice = startNode(providedName = ALICE_NAME, customOverrides = configOverrides).getOrThrow()
|
||||
val aliceParty = alice.nodeInfo.singleIdentity()
|
||||
val notaryParty = notaryHandles.single().identity
|
||||
val result = assertDoesNotThrow {
|
||||
|
||||
val criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.CONSUMED)
|
||||
val (vault, vaultUpdates) = alice.rpc.vaultTrackBy<Cash.State>(criteria = criteria, paging = PageSpecification(DEFAULT_PAGE_NUM))
|
||||
val updateLatch = CountDownLatch(1)
|
||||
vaultUpdates.subscribe { update ->
|
||||
val consumedRef = update.consumed.single().ref
|
||||
assertEquals( update.produced.single().ref.txhash, update.consumingTxIds[consumedRef] )
|
||||
updateLatch.countDown()
|
||||
}
|
||||
val flowRet = alice.rpc.startFlow(::CashIssueAndPaymentFlow,
|
||||
CASH_AMOUNT,
|
||||
OpaqueBytes.of(0x01),
|
||||
aliceParty,
|
||||
false,
|
||||
notaryParty
|
||||
).use { flowHandle ->
|
||||
flowHandle.returnValue.getOrThrow()
|
||||
}
|
||||
updateLatch.await()
|
||||
flowRet
|
||||
}
|
||||
logger.info("TXN={}, recipient={}", result.stx, result.recipient)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user