Skip to content

Commit efac05c

Browse files
committed
Merge branch 'featuresrevamp' of https://github.com/corda/samples-java into featuresrevamp
2 parents 46929e2 + bc0d5c8 commit efac05c

File tree

68 files changed

+539
-1397
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+539
-1397
lines changed
-38.7 KB
Binary file not shown.

Features/cordaservice-autopayroll/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ flow start RequestFlowInitiator amount: 500, towhom: GeorgeJefferson
4242
```
4343
As a result, we can check for the payment at GeorgeJefferson's node shell by running:
4444
```
45-
run vaultQuery contractStateType: net.corda.examples.autopayroll.states.MoneyState
45+
run vaultQuery contractStateType: net.corda.samples.autopayroll.states.MoneyState
4646
```
4747
We will see that George Jefferson received a `MoneyState` with amount $500.
4848

Lines changed: 86 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
1-
buildscript {
1+
buildscript {//properties that you need to build the project
22
Properties constants = new Properties()
33
file("$projectDir/../constants.properties").withInputStream { constants.load(it) }
44

55
ext {
6-
76
corda_release_group = constants.getProperty("cordaReleaseGroup")
8-
corda_release_version = constants.getProperty("cordaVersion")
97
corda_core_release_group = constants.getProperty("cordaCoreReleaseGroup")
8+
corda_release_version = constants.getProperty("cordaVersion")
109
corda_core_release_version = constants.getProperty("cordaCoreVersion")
1110
corda_gradle_plugins_version = constants.getProperty("gradlePluginsVersion")
11+
kotlin_version = constants.getProperty("kotlinVersion")
1212
junit_version = constants.getProperty("junitVersion")
1313
quasar_version = constants.getProperty("quasarVersion")
1414
log4j_version = constants.getProperty("log4jVersion")
1515
slf4j_version = constants.getProperty("slf4jVersion")
1616
corda_platform_version = constants.getProperty("platformVersion").toInteger()
17+
//springboot
18+
spring_boot_version = '2.0.2.RELEASE'
19+
spring_boot_gradle_plugin_version = '2.0.2.RELEASE'
1720
}
1821

1922
repositories {
@@ -27,10 +30,11 @@ buildscript {
2730
classpath "net.corda.plugins:cordapp:$corda_gradle_plugins_version"
2831
classpath "net.corda.plugins:cordformation:$corda_gradle_plugins_version"
2932
classpath "net.corda.plugins:quasar-utils:$corda_gradle_plugins_version"
33+
classpath "org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_gradle_plugin_version"
3034
}
3135
}
3236

33-
allprojects {
37+
allprojects {//Properties that you need to compile your project (The application)
3438
apply from: "${rootProject.projectDir}/repositories.gradle"
3539
apply plugin: 'java'
3640

@@ -42,34 +46,99 @@ allprojects {
4246
maven { url 'https://jitpack.io' }
4347
}
4448

45-
46-
4749
tasks.withType(JavaCompile) {
48-
options.compilerArgs << "-parameters" // Required for shell commands.
50+
options.compilerArgs << "-parameters" // Required by Corda's serialisation framework.
4951
}
5052

5153
jar {
5254
// This makes the JAR's SHA-256 hash repeatable.
5355
preserveFileTimestamps = false
5456
reproducibleFileOrder = true
57+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
5558
}
5659
}
5760

5861
apply plugin: 'net.corda.plugins.cordapp'
62+
apply plugin: 'net.corda.plugins.cordformation'
5963
apply plugin: 'net.corda.plugins.quasar-utils'
6064

61-
cordapp {
62-
info {
63-
name "CorDapp AutoPayroll"
64-
vendor "Corda Open Source"
65-
targetPlatformVersion corda_platform_version
66-
minimumPlatformVersion corda_platform_version
65+
sourceSets {
66+
main {
67+
resources {
68+
srcDir rootProject.file("config/dev")
69+
}
6770
}
6871
}
6972

70-
task installQuasar(type: Copy) {
71-
destinationDir rootProject.file("lib")
72-
from(configurations.quasar) {
73-
rename 'quasar-core(.*).jar', 'quasar.jar'
73+
//Module dependencis
74+
dependencies {
75+
// Corda dependencies.
76+
cordaCompile "$corda_core_release_group:corda-core:$corda_core_release_version"
77+
cordaCompile "$corda_release_group:corda-node-api:$corda_release_version"
78+
cordaRuntime "$corda_release_group:corda:$corda_release_version"
79+
80+
// CorDapp dependencies.
81+
cordapp project(":workflows")
82+
cordapp project(":contracts")
83+
84+
cordaCompile "org.apache.logging.log4j:log4j-slf4j-impl:${log4j_version}"
85+
cordaCompile "org.apache.logging.log4j:log4j-web:${log4j_version}"
86+
cordaCompile "org.slf4j:jul-to-slf4j:$slf4j_version"
87+
}
88+
89+
task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) {
90+
nodeDefaults {
91+
projectCordapp {
92+
deploy = true
93+
}
94+
cordapp project(':contracts')
95+
cordapp project(':workflows')
96+
runSchemaMigration = true
97+
}
98+
node {
99+
name "O=Notary,L=London,C=GB"
100+
notary = [validating : false]
101+
p2pPort 10002
102+
rpcSettings {
103+
address("localhost:10003")
104+
adminAddress("localhost:10043")
105+
}
106+
}
107+
node {
108+
name "O=FinanceTeam,L=London,C=GB"
109+
p2pPort 10005
110+
rpcSettings {
111+
address("localhost:10006")
112+
adminAddress("localhost:10046")
113+
}
114+
rpcUsers = [[ user: "user1", "password": "test", "permissions": ["ALL"]]]
115+
}
116+
node {
117+
name "O=PetersonThomas,L=New York,C=US"
118+
p2pPort 10008
119+
rpcSettings {
120+
address("localhost:10009")
121+
adminAddress("localhost:10049")
122+
}
123+
rpcUsers = [[ user: "user1", "password": "test", "permissions": ["ALL"]]]
124+
}
125+
node {
126+
name "O=GeorgeJefferson,L=San Diego,C=US"
127+
p2pPort 10011
128+
rpcSettings {
129+
address("localhost:10012")
130+
adminAddress("localhost:10052")
131+
}
132+
rpcUsers = [[ user: "user1", "password": "test", "permissions": ["ALL"]]]
133+
}
134+
node {
135+
name "O=BankOperator,L=Toronto,C=CA"
136+
p2pPort 10014
137+
rpcSettings {
138+
address("localhost:10015")
139+
adminAddress("localhost:10055")
140+
}
141+
rpcUsers = [[ user: "user1", "password": "test", "permissions": ["ALL"]]]
74142
}
75143
}
144+

Features/cordaservice-autopayroll/contracts/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ cordapp {
1414
dependencies {
1515
// Corda dependencies.
1616
cordaCompile "$corda_core_release_group:corda-core:$corda_core_release_version"
17-
17+
cordaRuntime "$corda_release_group:corda:$corda_release_version"
1818
testCompile "$corda_release_group:corda-node-driver:$corda_release_version"
1919
}

Features/cordaservice-autopayroll/contracts/src/main/java/net/corda/examples/autopayroll/contracts/MoneyStateContract.java renamed to Features/cordaservice-autopayroll/contracts/src/main/java/net/corda/samples/autopayroll/contracts/MoneyStateContract.java

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

33
import net.corda.core.contracts.CommandData;
44
import net.corda.core.contracts.CommandWithParties;
55
import net.corda.core.contracts.Contract;
66
import net.corda.core.transactions.LedgerTransaction;
7-
import net.corda.examples.autopayroll.states.MoneyState;
7+
import net.corda.samples.autopayroll.states.MoneyState;
88

99
import static net.corda.core.contracts.ContractsDSL.*;
1010

@@ -13,7 +13,7 @@
1313
// ************
1414
public class MoneyStateContract implements Contract {
1515
// Used to identify our contract when building a transaction.
16-
public static final String ID = "net.corda.examples.autopayroll.contracts.MoneyStateContract";
16+
public static final String ID = "net.corda.samples.autopayroll.contracts.MoneyStateContract";
1717

1818
// A transaction is valid if the verify() function of the contract of all the transaction's input and output states
1919
// does not throw an exception.

Features/cordaservice-autopayroll/contracts/src/main/java/net/corda/examples/autopayroll/contracts/PaymentRequestContract.java renamed to Features/cordaservice-autopayroll/contracts/src/main/java/net/corda/samples/autopayroll/contracts/PaymentRequestContract.java

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

33
import net.corda.core.contracts.CommandData;
44
import net.corda.core.contracts.CommandWithParties;
55
import net.corda.core.contracts.Contract;
66
import net.corda.core.transactions.LedgerTransaction;
7-
import net.corda.examples.autopayroll.states.PaymentRequestState;
7+
import net.corda.samples.autopayroll.states.PaymentRequestState;
88

99
import static net.corda.core.contracts.ContractsDSL.*;
1010

@@ -13,7 +13,7 @@
1313
// ************
1414
public class PaymentRequestContract implements Contract {
1515
// Used to identify our contract when building a transaction.
16-
public static final String ID = "net.corda.examples.autopayroll.contracts.PaymentRequestContract";
16+
public static final String ID = "net.corda.samples.autopayroll.contracts.PaymentRequestContract";
1717

1818
// A transaction is valid if the verify() function of the contract of all the transaction's input and output states
1919
// does not throw an exception.

Features/cordaservice-autopayroll/contracts/src/main/java/net/corda/examples/autopayroll/states/MoneyState.java renamed to Features/cordaservice-autopayroll/contracts/src/main/java/net/corda/samples/autopayroll/states/MoneyState.java

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

33
import net.corda.core.contracts.BelongsToContract;
44
import net.corda.core.contracts.ContractState;
55
import net.corda.core.identity.AbstractParty;
66
import net.corda.core.identity.Party;
7-
import net.corda.examples.autopayroll.contracts.MoneyStateContract;
7+
import net.corda.samples.autopayroll.contracts.MoneyStateContract;
88
import org.jetbrains.annotations.NotNull;
99

10-
import java.util.Arrays;
1110
import java.util.Collections;
1211
import java.util.List;
1312

Features/cordaservice-autopayroll/contracts/src/main/java/net/corda/examples/autopayroll/states/PaymentRequestState.java renamed to Features/cordaservice-autopayroll/contracts/src/main/java/net/corda/samples/autopayroll/states/PaymentRequestState.java

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

33
import net.corda.core.contracts.BelongsToContract;
44
import net.corda.core.contracts.ContractState;
55
import net.corda.core.identity.AbstractParty;
66
import net.corda.core.identity.Party;
7-
import net.corda.examples.autopayroll.contracts.PaymentRequestContract;
7+
import net.corda.samples.autopayroll.contracts.PaymentRequestContract;
88

99
import java.util.List;
1010

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package net.corda.samples.autopayroll.contracts;
2+
3+
import net.corda.core.contracts.UniqueIdentifier;
4+
import net.corda.core.identity.CordaX500Name;
5+
import net.corda.samples.autopayroll.states.MoneyState;
6+
import net.corda.testing.core.TestIdentity;
7+
import net.corda.testing.node.MockServices;
8+
import org.junit.Test;
9+
10+
import java.util.UUID;
11+
12+
import static net.corda.testing.node.NodeTestUtils.ledger;
13+
14+
public class ContractTests {
15+
private final MockServices ledgerServices = new MockServices();
16+
TestIdentity partya = new TestIdentity(new CordaX500Name("Alice", "TestLand", "US"));
17+
TestIdentity partyb = new TestIdentity(new CordaX500Name("Bob", "TestLand", "US"));
18+
19+
@Test
20+
public void NoNegativePayCheckValue() {
21+
MoneyState tokenPass = new MoneyState(10,partyb.getParty());
22+
MoneyState tokenfail = new MoneyState(-10,partyb.getParty());
23+
24+
ledger(ledgerServices, l -> {
25+
l.transaction(tx -> {
26+
tx.output(MoneyStateContract.ID, tokenfail);
27+
tx.command(partya.getPublicKey(), new MoneyStateContract.Commands.Pay()); // Wrong amount.
28+
return tx.fails();
29+
});
30+
l.transaction(tx -> {
31+
tx.output(MoneyStateContract.ID, tokenPass);
32+
tx.command(partya.getPublicKey(), new MoneyStateContract.Commands.Pay());
33+
return tx.verifies();
34+
});
35+
return null;
36+
});
37+
}
38+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package net.corda.samples.autopayroll.contracts;
2+
import net.corda.samples.autopayroll.states.MoneyState;
3+
import net.corda.testing.node.MockServices;
4+
import org.junit.Test;
5+
6+
public class StateTests {
7+
private final MockServices ledgerServices = new MockServices();
8+
9+
@Test
10+
public void hasFieldOfCorrectType() throws NoSuchFieldException {
11+
// Does the message field exist?
12+
MoneyState.class.getDeclaredField("amount");
13+
// Is the message field of the correct type?
14+
assert(MoneyState.class.getDeclaredField("amount").getType().equals(int.class));
15+
}
16+
}

0 commit comments

Comments
 (0)