mirror of
https://github.com/corda/corda.git
synced 2025-02-21 17:56:54 +00:00
Crowdfund contract: update to latest style for defining commands (singletons don't play nice with serialisation)
This commit is contained in:
parent
b3f7e307c7
commit
9780f6254a
@ -36,13 +36,10 @@ class CrowdFund : Contract {
|
|||||||
|
|
||||||
|
|
||||||
interface Commands : Command {
|
interface Commands : Command {
|
||||||
object Register : Commands
|
class Register : TypeOnlyCommand(), Commands
|
||||||
|
class Fund : TypeOnlyCommand(), Commands
|
||||||
object Fund : Commands
|
class Funded : TypeOnlyCommand(), Commands
|
||||||
|
class Unfunded : TypeOnlyCommand(), Commands
|
||||||
object Funded : Commands
|
|
||||||
|
|
||||||
object Unfunded : Commands
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun verify(tx: TransactionForVerification) {
|
override fun verify(tx: TransactionForVerification) {
|
||||||
@ -155,7 +152,7 @@ class CrowdFund : Contract {
|
|||||||
*/
|
*/
|
||||||
fun craftRegister(owner: InstitutionReference, fundingTarget: Amount, fundingName: String, closingTime: Instant): PartialTransaction {
|
fun craftRegister(owner: InstitutionReference, fundingTarget: Amount, fundingName: String, closingTime: Instant): PartialTransaction {
|
||||||
val state = State(owner = owner.institution.owningKey, fundingName = fundingName, fundingTarget = fundingTarget, closingTime = closingTime)
|
val state = State(owner = owner.institution.owningKey, fundingName = fundingName, fundingTarget = fundingTarget, closingTime = closingTime)
|
||||||
return PartialTransaction(state, WireCommand(CrowdFund.Commands.Register, owner.institution.owningKey))
|
return PartialTransaction(state, WireCommand(CrowdFund.Commands.Register(), owner.institution.owningKey))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -168,13 +165,13 @@ class CrowdFund : Contract {
|
|||||||
pledgeCount = campaign.state.pledgeCount + 1,
|
pledgeCount = campaign.state.pledgeCount + 1,
|
||||||
pledgeTotal = campaign.state.pledgeTotal + 1000.DOLLARS
|
pledgeTotal = campaign.state.pledgeTotal + 1000.DOLLARS
|
||||||
))
|
))
|
||||||
tx.addArg(WireCommand(CrowdFund.Commands.Fund, subscriber))
|
tx.addArg(WireCommand(CrowdFund.Commands.Fund(), subscriber))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun craftFunded(tx: PartialTransaction, campaign: StateAndRef<State>) {
|
fun craftFunded(tx: PartialTransaction, campaign: StateAndRef<State>) {
|
||||||
tx.addInputState(campaign.ref)
|
tx.addInputState(campaign.ref)
|
||||||
tx.addOutputState(campaign.state.copy(closed = true))
|
tx.addOutputState(campaign.state.copy(closed = true))
|
||||||
tx.addArg(WireCommand(CrowdFund.Commands.Funded, campaign.state.owner))
|
tx.addArg(WireCommand(CrowdFund.Commands.Funded(), campaign.state.owner))
|
||||||
}
|
}
|
||||||
|
|
||||||
override val legalContractReference: SecureHash = SecureHash.sha256("Crowdsourcing")
|
override val legalContractReference: SecureHash = SecureHash.sha256("Crowdsourcing")
|
||||||
|
@ -255,9 +255,9 @@ fun createKryo(): Kryo {
|
|||||||
register(CommercialPaper.Commands.Issue::class.java)
|
register(CommercialPaper.Commands.Issue::class.java)
|
||||||
registerDataClass<CrowdFund.State>()
|
registerDataClass<CrowdFund.State>()
|
||||||
registerDataClass<CrowdFund.Pledge>()
|
registerDataClass<CrowdFund.Pledge>()
|
||||||
register(CrowdFund.Commands.Register.javaClass)
|
register(CrowdFund.Commands.Register::class.java)
|
||||||
register(CrowdFund.Commands.Fund.javaClass)
|
register(CrowdFund.Commands.Fund::class.java)
|
||||||
register(CrowdFund.Commands.Funded.javaClass)
|
register(CrowdFund.Commands.Funded::class.java)
|
||||||
|
|
||||||
// And for unit testing ...
|
// And for unit testing ...
|
||||||
registerDataClass<DummyPublicKey>()
|
registerDataClass<DummyPublicKey>()
|
||||||
|
@ -22,7 +22,7 @@ class CrowdFundTests {
|
|||||||
transactionGroup {
|
transactionGroup {
|
||||||
transaction {
|
transaction {
|
||||||
output { CF_1 }
|
output { CF_1 }
|
||||||
arg(DUMMY_PUBKEY_1) { CrowdFund.Commands.Register }
|
arg(DUMMY_PUBKEY_1) { CrowdFund.Commands.Register() }
|
||||||
}
|
}
|
||||||
|
|
||||||
expectFailureOfTx(1, "the transaction is signed by the owner of the crowdsourcing")
|
expectFailureOfTx(1, "the transaction is signed by the owner of the crowdsourcing")
|
||||||
@ -34,7 +34,7 @@ class CrowdFundTests {
|
|||||||
transactionGroup {
|
transactionGroup {
|
||||||
transaction {
|
transaction {
|
||||||
output { CF_1.copy(closingTime = TEST_TX_TIME - 1.days) }
|
output { CF_1.copy(closingTime = TEST_TX_TIME - 1.days) }
|
||||||
arg(MINI_CORP_PUBKEY) { CrowdFund.Commands.Register }
|
arg(MINI_CORP_PUBKEY) { CrowdFund.Commands.Register() }
|
||||||
}
|
}
|
||||||
|
|
||||||
expectFailureOfTx(1, "the output registration has a closing time in the future")
|
expectFailureOfTx(1, "the output registration has a closing time in the future")
|
||||||
@ -55,7 +55,7 @@ class CrowdFundTests {
|
|||||||
// 1. Create the funding opportunity
|
// 1. Create the funding opportunity
|
||||||
transaction {
|
transaction {
|
||||||
output("funding opportunity") { CF_1 }
|
output("funding opportunity") { CF_1 }
|
||||||
arg(MINI_CORP_PUBKEY) { CrowdFund.Commands.Register }
|
arg(MINI_CORP_PUBKEY) { CrowdFund.Commands.Register() }
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Place a pledge
|
// 2. Place a pledge
|
||||||
@ -71,14 +71,14 @@ class CrowdFundTests {
|
|||||||
}
|
}
|
||||||
output { 1000.DOLLARS.CASH `owned by` MINI_CORP_PUBKEY }
|
output { 1000.DOLLARS.CASH `owned by` MINI_CORP_PUBKEY }
|
||||||
arg(ALICE) { Cash.Commands.Move() }
|
arg(ALICE) { Cash.Commands.Move() }
|
||||||
arg(ALICE) { CrowdFund.Commands.Fund }
|
arg(ALICE) { CrowdFund.Commands.Fund() }
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Close the opportunity, assuming the target has been met
|
// 3. Close the opportunity, assuming the target has been met
|
||||||
transaction(TEST_TX_TIME + 8.days) {
|
transaction(TEST_TX_TIME + 8.days) {
|
||||||
input ("pledged opportunity")
|
input ("pledged opportunity")
|
||||||
output ("funded and closed") { "pledged opportunity".output.copy(closed = true) }
|
output ("funded and closed") { "pledged opportunity".output.copy(closed = true) }
|
||||||
arg(MINI_CORP_PUBKEY) { CrowdFund.Commands.Funded }
|
arg(MINI_CORP_PUBKEY) { CrowdFund.Commands.Funded() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user