Skip to content

Commit cd5670d

Browse files
committed
stockpaydividend revamp
1 parent dab6822 commit cd5670d

File tree

21 files changed

+176
-85
lines changed

21 files changed

+176
-85
lines changed

Tokens/stockpaydividend/build.gradle

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ allprojects {
4141
mavenCentral()
4242
maven { url 'https://software.r3.com/artifactory/corda' }
4343
maven { url 'https://jitpack.io' }
44-
// Can be removed post-release - used to get nightly snapshot build.
44+
//SDK lib
4545
maven { url 'https://software.r3.com/artifactory/corda-lib' }
46-
maven { url 'https://software.r3.com/artifactory/corda-lib-dev' }
46+
//Gradle Plugins
4747
maven { url 'https://repo.gradle.org/gradle/libs-releases' }
4848
}
4949

@@ -63,15 +63,6 @@ apply plugin: 'net.corda.plugins.cordapp'
6363
apply plugin: 'net.corda.plugins.cordformation'
6464
apply plugin: 'net.corda.plugins.quasar-utils'
6565

66-
cordapp {
67-
info {
68-
name "CorDapp stockpaydividend"
69-
vendor "Corda Open Source"
70-
targetPlatformVersion corda_platform_version.toInteger()
71-
minimumPlatformVersion corda_platform_version.toInteger()
72-
}
73-
}
74-
7566
sourceSets {
7667
main {
7768
resources {
@@ -111,7 +102,7 @@ task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) {
111102
cordapp("$tokens_release_group:tokens-workflows:$tokens_release_version")
112103
cordapp project(':contracts')
113104
cordapp project(':workflows')
114-
runSchemaMigration = true
105+
runSchemaMigration = true
115106
}
116107
node {
117108
name "O=Notary,L=London,C=GB"

Tokens/stockpaydividend/contracts/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ cordapp {
55
targetPlatformVersion corda_platform_version.toInteger()
66
minimumPlatformVersion corda_platform_version.toInteger()
77
contract {
8-
name "stockpaydividend CorDapp"
8+
name "stockpaydividend Contract"
99
vendor "Corda Open Source"
1010
licence "Apache License, Version 2.0"
1111
versionId 1

Tokens/stockpaydividend/contracts/src/main/java/net/corda/examples/stockpaydividend/contracts/DividendContract.java renamed to Tokens/stockpaydividend/contracts/src/main/java/net/corda/samples/stockpaydividend/contracts/DividendContract.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package net.corda.examples.stockpaydividend.contracts;
1+
package net.corda.samples.stockpaydividend.contracts;
22

33
import net.corda.core.contracts.*;
44
import net.corda.core.identity.AbstractParty;
55
import net.corda.core.transactions.LedgerTransaction;
6-
import net.corda.examples.stockpaydividend.states.DividendState;
6+
import net.corda.samples.stockpaydividend.states.DividendState;
77

88
import java.security.PublicKey;
99
import java.util.List;
@@ -14,7 +14,7 @@
1414
import static net.corda.core.contracts.ContractsDSL.requireThat;
1515

1616
public class DividendContract implements Contract {
17-
public static final String ID = "net.corda.examples.stockpaydividend.contracts.DividendContract";
17+
public static final String ID = "net.corda.samples.stockpaydividend.contracts.DividendContract";
1818

1919
@Override
2020
public void verify(LedgerTransaction tx) throws IllegalArgumentException {

Tokens/stockpaydividend/contracts/src/main/java/net/corda/examples/stockpaydividend/contracts/StockContract.java renamed to Tokens/stockpaydividend/contracts/src/main/java/net/corda/samples/stockpaydividend/contracts/StockContract.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,40 @@
1-
package net.corda.examples.stockpaydividend.contracts;
1+
package net.corda.samples.stockpaydividend.contracts;
22

33
import com.r3.corda.lib.tokens.contracts.EvolvableTokenContract;
4-
import net.corda.examples.stockpaydividend.states.StockState;
4+
import net.corda.core.contracts.CommandWithParties;
5+
import net.corda.samples.stockpaydividend.states.StockState;
56
import net.corda.core.contracts.Contract;
67
import net.corda.core.transactions.LedgerTransaction;
78
import org.jetbrains.annotations.NotNull;
9+
import com.r3.corda.lib.tokens.contracts.commands.EvolvableTokenTypeCommand;
810

911
import java.math.BigDecimal;
12+
import java.security.PublicKey;
13+
import java.util.List;
1014

15+
import static net.corda.core.contracts.ContractsDSL.requireSingleCommand;
1116
import static net.corda.core.contracts.ContractsDSL.requireThat;
1217

1318
public class StockContract extends EvolvableTokenContract implements Contract {
1419

20+
public static final String CONTRACT_ID = "net.corda.samples.stockpaydividend.contracts.StockContract";
21+
22+
1523
@Override
1624
public void verify(@NotNull LedgerTransaction tx) throws IllegalArgumentException {
1725
StockState outputState = (StockState) tx.getOutput(0);
1826
if(!(tx.getCommand(0).getSigners().contains(outputState.getIssuer().getOwningKey())))
1927
throw new IllegalArgumentException("Company Signature Required");
28+
CommandWithParties<EvolvableTokenTypeCommand> command = requireSingleCommand(tx.getCommands(), EvolvableTokenTypeCommand.class);
29+
if (command.getValue() instanceof com.r3.corda.lib.tokens.contracts.commands.Create) {
30+
additionalCreateChecks(tx);
31+
return;
32+
} else if (command.getValue() instanceof com.r3.corda.lib.tokens.contracts.commands.Update) {
33+
additionalUpdateChecks(tx);
34+
return;
35+
} else {
36+
throw new IllegalArgumentException("Unrecognized command");
37+
}
2038
}
2139

2240
@Override
@@ -28,7 +46,7 @@ public void additionalCreateChecks(@NotNull LedgerTransaction tx) {
2846
//Validations when creating a new stock
2947
req.using("Stock symbol must not be empty", (!createdStockState.getSymbol().isEmpty()));
3048
req.using("Stock name must not be empty", (!createdStockState.getName().isEmpty()));
31-
req.using("Stock dividend must start with zero", (!createdStockState.getDividend().equals(BigDecimal.ZERO)));
49+
req.using("Stock dividend must start with zero", (createdStockState.getDividend().equals(BigDecimal.ZERO)));
3250
return null;
3351
});
3452
}

Tokens/stockpaydividend/contracts/src/main/java/net/corda/examples/stockpaydividend/states/DividendState.java renamed to Tokens/stockpaydividend/contracts/src/main/java/net/corda/samples/stockpaydividend/states/DividendState.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.corda.examples.stockpaydividend.states;
1+
package net.corda.samples.stockpaydividend.states;
22

33
import com.google.common.collect.ImmutableList;
44
import com.r3.corda.lib.tokens.contracts.types.TokenType;
@@ -8,7 +8,7 @@
88
import net.corda.core.contracts.UniqueIdentifier;
99
import net.corda.core.identity.AbstractParty;
1010
import net.corda.core.identity.Party;
11-
import net.corda.examples.stockpaydividend.contracts.DividendContract;
11+
import net.corda.samples.stockpaydividend.contracts.DividendContract;
1212
import org.jetbrains.annotations.NotNull;
1313

1414
import java.util.Date;

Tokens/stockpaydividend/contracts/src/main/java/net/corda/examples/stockpaydividend/states/StockState.java renamed to Tokens/stockpaydividend/contracts/src/main/java/net/corda/samples/stockpaydividend/states/StockState.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package net.corda.examples.stockpaydividend.states;
1+
package net.corda.samples.stockpaydividend.states;
22

33
import com.google.common.collect.ImmutableList;
44
import com.r3.corda.lib.tokens.contracts.states.EvolvableTokenType;
55
import com.r3.corda.lib.tokens.contracts.types.TokenPointer;
66
import net.corda.core.contracts.LinearPointer;
77
import net.corda.core.schemas.StatePersistable;
88
import net.corda.core.serialization.CordaSerializable;
9-
import net.corda.examples.stockpaydividend.contracts.StockContract;
9+
import net.corda.samples.stockpaydividend.contracts.StockContract;
1010
import net.corda.core.contracts.BelongsToContract;
1111
import net.corda.core.contracts.UniqueIdentifier;
1212
import net.corda.core.identity.Party;

Tokens/stockpaydividend/contracts/src/test/java/net/corda/examples/stockpaydividend/contracts/contracts/ContractTests.java

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package net.corda.samples.stockpaydividend.contracts;
2+
3+
import net.corda.core.contracts.UniqueIdentifier;
4+
import net.corda.core.identity.CordaX500Name;
5+
import net.corda.samples.stockpaydividend.states.StockState;
6+
import net.corda.testing.core.TestIdentity;
7+
import net.corda.testing.node.MockServices;
8+
import org.junit.Test;
9+
10+
import java.math.BigDecimal;
11+
import java.util.Date;
12+
13+
import static net.corda.testing.node.NodeTestUtils.ledger;
14+
15+
public class ContractTests {
16+
private final MockServices ledgerServices = new MockServices();
17+
TestIdentity Operator = new TestIdentity(new CordaX500Name("Alice", "TestLand", "US"));
18+
19+
//sample tests
20+
@Test
21+
public void multipleOutputTests() {
22+
StockState tokenPass = new StockState(new UniqueIdentifier(),Operator.getParty(),"TT","Test Token",
23+
"USD",BigDecimal.valueOf(2.7), BigDecimal.valueOf(0.2),new Date(),new Date());
24+
StockState tokenFail = new StockState(new UniqueIdentifier(),Operator.getParty(),"","Test Token",
25+
"USD",BigDecimal.valueOf(2.7), BigDecimal.valueOf(0.2),new Date(),new Date());
26+
ledger(ledgerServices, l -> {
27+
l.transaction(tx -> {
28+
tx.output(StockContract.CONTRACT_ID, tokenFail);
29+
tx.command(Operator.getPublicKey(), new com.r3.corda.lib.tokens.contracts.commands.Create()); //Fail because multiple outputs
30+
return tx.fails();
31+
});
32+
l.transaction(tx -> {
33+
tx.output(StockContract.CONTRACT_ID, tokenPass);
34+
tx.command(Operator.getPublicKey(), new com.r3.corda.lib.tokens.contracts.commands.Create());
35+
return tx.verifies();
36+
});
37+
return null;
38+
});
39+
}
40+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package net.corda.samples.stockpaydividend.contracts;
2+
3+
import net.corda.samples.stockpaydividend.states.StockState;
4+
import net.corda.testing.node.MockServices;
5+
import org.junit.Test;
6+
7+
public class StateTests {
8+
private final MockServices ledgerServices = new MockServices();
9+
10+
//sample State tests
11+
@Test
12+
public void hasConstructionAreaFieldOfCorrectType() throws NoSuchFieldException {
13+
// Does the message field exist?
14+
StockState.class.getDeclaredField("symbol");
15+
// Is the message field of the correct type?
16+
assert(StockState.class.getDeclaredField("symbol").getType().equals(String.class));
17+
}
18+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
name=Test
1+
name=Stockpaydividend Cordapp
22
group=com.stockpaydividend
3-
version=0.1
3+
version=1.0

0 commit comments

Comments
 (0)