This moves a lot of the test support code into its own package which is only imported for tests,
so it's not shipped as a part of core Corda. The node currently depends on this support code to
compile, although future work could try to separate this out. This change highlights that parts
of production code is dependent on test elements (i.e. dummy keys), and makes it harder for
such accidental crosses to occur later.
An integration test category is also added as part of this work, to contribute towards COR-345.
Try providing a helper interface to encourage enforcing LinearState rules
Fixup after rebase
Change to using Clauses for verifying LinearState standard properties
Fix whitespace change
Tidy up ClauseVerifier after PR comments
Change from SecureHash to a TradeIdentifier class
Change TradeIdentifier to UniqueIdentifier
Changes include:
- LedgerTransaction is now much more central: it represents a fully resolved and looked-up tx, with the inputs available.
- TransactionGroup and TransactionForVerification are gone. There is a temporary TransactionForContract class for backwards
compatibility but it will also be gone soon.
- ResolveTransactionsProtocol is simplified, and now commits a tx to the database as soon as it's determined to be valid.
- ServiceHub is now passed in more consistently to verification code, so we can use more services in future more easily e.g. a sandboxing service.
- A variety of APIs have been tweaked or documented better.
* Rename AggregateCommands to IssuanceCommands
* Reorder comparisons to be consistent
* Rename verifyDefaultCommand to verifySetLifecycleCommand
* Rename currency to issued/product
* Add note about needing to rethink timestamping
* Rename issuer to obligor, and owner to beneficiary
* Move lifecycle inversion code into SetLifecycle command
* Correct comments regarding cash states
* Rework description of contractHash parameter
* Fixes 'netting equal balances due between parties', and add further netting tests
* Separate calculations involving issued products and the underlying product
* Use signed transactions in obligation tests
* Add verification tests for changing lifecycle
Add a new Obligation contract, modelling an obligation to send an amount
of something (currently limited to cash) by some future point. Obligation
contracts introduce the concept of one contract being aware of other
contracts, and common interfaces for state objects so other contracts can
interpret them meaningfully.