Commit Graph

211 Commits

Author SHA1 Message Date
Matthew Nesbit
4c08141ce3 Tidy up based upon comments on PR 2016-07-26 10:35:56 +01:00
Matthew Nesbit
00f897d58d Add X509 creation and manipulation utilities to core and enable SSL in ArtemisMQ 2016-07-26 10:35:54 +01:00
Matthew Nesbit
0d68523f5c Validate protocol type and args via whitelist ahead of class loading. Also, push this work into another method on the Factory. 2016-07-25 16:35:45 +01:00
Matthew Nesbit
0542f7c509 Refactor APIServer to use the same whitelist controlled protocol gateway as the scheduler. 2016-07-25 13:46:40 +01:00
Clinton Alexander
67defe19cc Small refactor of initWebServer to improve readability. 2016-07-25 10:36:37 +01:00
Clinton Alexander
93f4440c14 Moved IRS web folder up a level. Added support for static serving plugins. 2016-07-25 10:30:30 +01:00
Ross Nicoll
2f04d876ae Move FiberRequest out to a top level class
Move FiberRequest out to a top level class, both because it is expanding as functionality is added,
and to enable alternative state machine implementations to share it.
2016-07-24 09:30:16 +01:00
Andrius Dagys
e7ff5b8f6f Typo fix 2016-07-22 17:31:03 +01:00
Ross Nicoll
31ee8ab60b Rework checkpoint storage to include the FiberRequest
Rework checkpoint storage to include the FiberRequest, so that different requests can be supported.
2016-07-22 16:40:15 +01:00
Andrius Dagys
2142bd1d8a Added Log4j bindings for SLF4J. Test log output is redirected to the console, and demo output is now additionally stored in a rolling log file. 2016-07-22 16:15:00 +01:00
Mike Hearn
119813a36d Minor: document the SMM.changes observable. 2016-07-22 15:50:21 +02:00
Ross Nicoll
2c139ae40c Merged in rnicoll-state-machine-id (pull request #234)
Add Fiber ID to state machine change events
2016-07-20 13:23:02 +01:00
Clinton Alexander
40a4623c51 Improved error handling when exceptions occur during suspend. 2016-07-20 11:50:23 +01:00
Ross Nicoll
f72d8ed9fb Add Fiber ID to state machine change events
Where state machine change events are to be serialized for relay to external systems, serializing the entire
protocol is excessive. Instead being able to identify changes based on the ID of the fiber is a lot simpler
for these use-cases.
2016-07-19 14:58:54 +01:00
Ross Nicoll
c92d51a0b6 Correct processing of unhandled messages
Unhandled messages in the in memory messaging network can disrupt runNetwork(), as they
result in getNextQueue() returning null, irrespective of whether there is further work
which could be done. This modifies the flow to loop through the remaining transfers on
the queue before giving up, rather than stopping after the first.
2016-07-19 14:19:57 +01:00
Andrius Dagys
c442cd01a7 Merged in andrius-cleanup-tweaks (pull request #208)
Remove the "verify correct notary has signed" check from TwoParty protocols
2016-07-18 10:40:25 +01:00
Matthew Nesbit
9d18234383 Consistently use an sl4j logger with timestamp, rather than console println within the node. Note that the current protocol events published via the ProgressTracker are sent to the console without a timestamp. 2016-07-13 11:28:52 +01:00
Mike Hearn
ead19c619a Merged in mike-cp-issuance-fix (pull request #224)
Disentangle the concept of CP issuer vs underlying redeemable asset issuer in the CP contract.
2016-07-13 11:13:23 +02:00
Ross Nicoll
254592dc54 Move protocols into correct package 2016-07-12 18:42:00 +01:00
Mike Hearn
f6789c93dd Disentangle the concept of CP issuer vs underlying redeemable asset issuer in the CP contract.
This confusion was introduced by a previous refactoring.
2016-07-12 16:01:50 +02:00
Matthew Nesbit
dba2b980a5 Remove TODO as the usage of CheckpointStorage is only through ServiceHubInternal into the StateMachineManager. We don't restrict access to internal for now as this causes too much other change. 2016-07-12 13:43:43 +01:00
Andras Slemmer
d7cc34c9a5 all: Full stops in comments! 2016-07-11 17:58:53 +01:00
Mike Hearn
e28ecae8c0 Address review comments 2016-07-11 18:47:24 +02:00
Mike Hearn
0a2f313d40 Minor: run IntelliJ 'code cleanup' 2016-07-11 18:15:28 +02:00
Mike Hearn
41d092a169 Minor: optimize imports 2016-07-11 18:15:28 +02:00
Mike Hearn
cc22810b09 Testing cleanup:
- Move code out of ambiguously named TestUtils files (there were three). Sometimes it's simpler to just put these things into the contract source files directly.
- Remove JavaTestHelpers objects (there were three), in favour of just giving the top level kotlin file class better names.
- Misc other small tweaks and cleanups.
2016-07-11 16:22:02 +02:00
Ross Nicoll
6b775ebd4d Replace named timestamping authority with notary
As the timestamping authority is now always the notary service, contracts should
no longer be using name-based lookup of the timestamping authority (as this will
generally be wrong). This introduces a new "timestamp" property on a transaction,
and updates most contracts to refer to it.

In some cases (IRS, CommercialPaper) there are transactions with no input states
to derive notary from, that use timestamps. In these cases a notary is specified
in the command.
2016-07-11 14:54:36 +01:00
Andras Slemmer
4324e33fea testdsl: Removed R type parameter, unify verifies() interface 2016-07-11 14:25:27 +01:00
Andras Slemmer
9bb8439dc3 testdsl: Add failsWith to Ledger 2016-07-11 14:25:27 +01:00
Andras Slemmer
cd0299f650 testdsl: Javadoc comments 2016-07-11 14:25:27 +01:00
Clinton Alexander
208205e7f4 Fixed minor merge conflict. 2016-07-08 16:41:23 +01:00
Clinton Alexander
88fe562886 Removed dependency added in previous commit. Fixed upload code on IRS Demo 2016-07-08 16:41:23 +01:00
Clinton Alexander
2a59600b54 Error now occurs on upload if no files are sent. Added apache httpcomponents as a dependency. 2016-07-08 16:41:23 +01:00
Matthew Nesbit
eee049d66b Add cacheing to ServiceLoader scanning of plugins and add a TODO on whitelisting 2016-07-08 10:38:23 +01:00
Matthew Nesbit
1557a82992 Make ServiceLoader results for CordaPlugins a protected property on the AbstractNode 2016-07-08 10:38:21 +01:00
Matthew Nesbit
51ba0cc8dd Make the IRS Demo web api an api plugin (scanned from the Node classpath) and use the same permission checking entry point for web api's as the scheduler. 2016-07-08 10:38:18 +01:00
Matthew Nesbit
d9d4fb360f Make the IRS Demo web api an api plugin (scanned from the Node classpath) and use the same permission checking entry point for web api's as the scheduler. 2016-07-08 10:34:32 +01:00
Matthew Nesbit
f0f2dc4eb5 Add missing import 2016-07-08 10:34:31 +01:00
Matthew Nesbit
1fb4371de9 Make the IRS Demo web api an api plugin (scanned from the Node classpath) and use the same permission checking entry point for web api's as the scheduler.
Fix whitespace

Change ProtocolLogicRefFactory to use Map<String, Set<String>> as whitelist definition
2016-07-08 10:34:30 +01:00
Mike Hearn
a1177f05c1 Merged in mike-add-gradle-versions (pull request #207)
Add a version number to gradle and allow "gradle install" to install the core module to the local Maven repository.
2016-07-08 10:04:01 +01:00
Andrius Dagys
fb93b86d6b Move test class into correct package 2016-07-07 15:51:47 +01:00
Mike Hearn
ad3e9be1c8 Add a version number to gradle and allow "gradle install" to install the core module to the local Maven repository. 2016-07-07 13:59:55 +01:00
Andrius Dagys
b498928f75 Remove the "verify correct notary has signed" check. This is no longed necessary as the required notary key is added to the "signers" list during transaction construction. We have general validation rules that check the correct notary was included in the signers list, and that we have signatures for all "signers". 2016-07-07 13:22:30 +01:00
Mike Hearn
bbc5c2e981 Merged in mike-july-dependency-upgrades (pull request #200)
Upgrade dependencies, July edition.
2016-07-06 16:25:52 +01:00
Mike Hearn
f6e7ffdd31 Fix a race condition in the MockNode class that only shows up when used in thread-per-node mode. Witnessed in the unit tests. 2016-07-06 14:02:40 +01:00
Mike Hearn
6fb7e59b91 Upgrade dependencies, July edition. 2016-07-06 13:56:22 +01:00
Andras Slemmer
f177b1ffaa test dsl: LastLineShouldTestForVerifiesOrFails->EnforceVerifyOrFail 2016-07-06 13:25:08 +01:00
Andras Slemmer
e31b769fef test dsl: Dsl->DSL, add top-level transaction primitive, add ledger-embedded signAll, other cosmetics 2016-07-06 13:25:08 +01:00
Andras Slemmer
e3d6f51049 contracts, core, node: Port TransactionForTest tests to new DSL 2016-07-06 13:25:08 +01:00
Andras Slemmer
cde315aca9 contracts, node: Port CommercialPaperTests, TwoPartyTradeProtocolTests and GroupToGraphConversion to use new dsl 2016-07-06 13:25:08 +01:00
Shams Asari
5c0e7fbbf2 Moved topic parameter from send/receive methods to a ProtocolLogic property 2016-07-05 15:12:25 +01:00
Ross Nicoll
2121824662 Rename com.r3cord.contracts.cash package to ...asset 2016-06-30 13:31:59 +01:00
Shams Asari
a02263937c send and sendAndReceive use Party for the destination 2016-06-30 12:04:39 +01:00
rick.parker
5271882dcd Event scheduling and docs for event scheduling 2016-06-30 08:51:52 +01:00
Ross Nicoll
779034691e Add AbstractTransactionSubstitutionProtocol
Abstracts the NotaryChangeProtocol to be extensible for other use-cases.
2016-06-29 17:16:46 +01:00
Andras Slemmer
e54dad9a8b node: Add apiAddress constructor parameter 2016-06-28 14:03:32 +01:00
Andras Slemmer
429d8aab74 node, integtest: Code style 2016-06-28 14:03:32 +01:00
Clinton Alexander
ffa9ad1bc9 Added port argument for IRS demo to allow web servers to not have binding collisions during testing and to allow more granular control over demos. 2016-06-28 14:03:32 +01:00
Clinton Alexander
7a4a1363cb Removed unnecessary changes. 2016-06-28 14:03:32 +01:00
Clinton Alexander
36a0ff0503 Added an endpoint that allows querying for status of node. 2016-06-28 14:03:32 +01:00
Clinton Alexander
60daf8059f Removed dependency added in previous commit. Fixed upload code on IRS Demo 2016-06-28 14:03:32 +01:00
Clinton Alexander
f6069e1e15 Error now occurs on upload if no files are sent. Added apache httpcomponents as a dependency. 2016-06-28 14:03:32 +01:00
Clinton Alexander
507d9ea4ae Added new integration test for the IRSDemo and refactored the demo to
run in integration tests.
2016-06-28 14:03:32 +01:00
Mike Hearn
2dfcff1f31 Testing: Fix the wallet filler code. 2016-06-24 17:13:27 +02:00
Andras Slemmer
ac69f566c9 node: Add another test testing correct LinearState sequencing 2016-06-23 18:06:57 +01:00
Andras Slemmer
3a84e2fe9d node: Add test for LinearState thread clash 2016-06-23 18:06:57 +01:00
Andrius Dagys
aaeb99ac25 Validating notary: check for missing signatures. The notary can only sign if all other signatures are present
Please enter the commit message for your changes. Lines starting
2016-06-23 16:15:14 +01:00
Mike Hearn
7ee6bd05ce Refactor the wallet code:
- Rename NodeWalletService to InMemoryWalletService and move into the core module where it's available for unit testing.
- Make a new NodeWalletService that just inherits from InMemoryWalletService and doesn't customise it at all, for now.
- Take the cash specific functionality out of Wallet and into an extension property in the Cash contract (this compiles as CashKt.getCashBalance(wallet) for java users).
- Return the generated states in the fillWalletWithTestCash function.
2016-06-22 14:49:52 +02:00
Mike Hearn
f3d4639059 Testing: make the WalletFiller code a file-level singleton and fillTestWithCash an extension method. For Java users not much changes, the class is still called WalletFiller and the signature remains the same. Re-order some arguments to make it easier to use when accepting the defaults. 2016-06-22 14:49:52 +02:00
Mike Hearn
cdb3e2f126 Minor: move WalletFiller from node.testing to contracts.testing 2016-06-22 14:49:52 +02:00
rick.parker
717a5ab197 Break out message handler changes
Special serializer for kotlin object definitions
2016-06-22 09:50:15 +01:00
Richard Green
859ee053d2 Merged in rg_todo_financetypes_242 (pull request #145)
Changed DateOffset to be an integer instead of enum. Usages and examples also changed. Also renamed to fixingPeriodOffset
2016-06-21 18:18:44 +01:00
Richard Green
6b80530ac6 Changed DateOffset to be an integer instead of enum. Usages and examples also changed. Also renamed to fixingPeriodOffset
Renamed fixingPeriod -> fixingPeriodOffset in the .json files
2016-06-21 18:17:39 +01:00
rick.parker
3ea1090446 Support for moving TestClock to just beyond a specific instant (helpful for schedule related testing)
Added TimeWindow to PR

Review feedback

Review feedback
2016-06-21 16:49:25 +01:00
Clinton Alexander
3e82ee45f2 Merged in nodedircreate (pull request #139)
Todo resolution: Moved node directory creation into the abstract node.
2016-06-21 11:02:29 +01:00
Andras Slemmer
e29a9b15c3 Revert "node: remove buffering logic from InMemoryMessagingNetwork"
This reverts commit bc7ea5f0c5a61e9c3f9d7825e2944e4d27141320.
2016-06-20 17:50:19 +01:00
Andras Slemmer
32b593671b Merged in remove-warnings (pull request #169)
Remove warnings
2016-06-20 14:45:04 +01:00
Shams Asari
411fd1aeb3 Upgraded to artemis 1.3.0 so that exceptions are thrown if something goes wrong on startup 2016-06-20 14:29:27 +01:00
Ross Nicoll
8f57213270 Merged in rnicoll-force-record-tx (pull request #152)
Require all transactions are added via the ServiceHub.recordTransaction() function
2016-06-20 14:25:20 +01:00
Ross Nicoll
a5e07c2600 Require all transactions are added via the ServiceHub.recordTransaction() function 2016-06-20 14:24:55 +01:00
Andras Slemmer
5de6e3f965 node: Remove warnings 2016-06-20 14:16:13 +01:00
Andras Slemmer
c9cb024bb5 Merged in use-urandom-2 (pull request #166)
Use urandom 3
2016-06-20 14:15:03 +01:00
Andras Slemmer
a7419b116d Add newSecureRandom() that uses a non-blocking SecureRandom provider on Linux 2016-06-20 14:11:03 +01:00
Andras Slemmer
6eab61a6a1 node: fix hanging test 2016-06-20 12:37:42 +01:00
Andras Slemmer
08e6333284 node: Add sendManuallyPumped parameter to test 2016-06-20 12:37:42 +01:00
Andras Slemmer
fbbff9fad2 node: remove test that tested buffering logic in IMMN 2016-06-20 12:37:42 +01:00
Andras Slemmer
ccf362bb8a node: fix IRSSimulation so it doesn't rely on buffering 2016-06-20 12:37:42 +01:00
Andras Slemmer
5323eb1073 node: remove buffering logic from InMemoryMessagingNetwork 2016-06-20 12:37:42 +01:00
Andras Slemmer
03c1550394 node: add ability to pump sending as well as receiving, expose both streams 2016-06-20 12:37:42 +01:00
Andras Slemmer
ea27910d51 node: Add JSON EdDSA pubkey serialisation/parsing 2016-06-20 11:48:40 +01:00
Andrius Dagys
30ca340b6e Refactored NotaryChangeProtocol and tests: moved the proposal verification step into the protocol.
Added another proposal verification step in the NotaryChangeProtocol.
Added the cause exception message to the 'notary change refused' error.
2016-06-17 15:05:35 +01:00
Andrius Dagys
0a5b7ace35 Made TransactionBuilder abstract. Every transaction type now needs to implement and provide its own Builder. This is required since for specific types we need to run different logic when adding new items to the transaction. For example, when adding a new input state to a transaction of type NotaryChange we need to add all of the states participants to the signers list. 2016-06-17 15:05:35 +01:00
Andrius Dagys
9958b5c603 Added 'signers' property to the transaction data models. Signers holds the list of all public keys that need to be signed for (command keys and additional ones such as notary).
Removed Notary & ChangeNotary commands, keys to be signed for are added to the signers list during transaction build phase.
2016-06-17 15:05:35 +01:00
Andrius Dagys
70495a021e Introduce TransactionState, which wraps ContractState and holds the notary pointer.
Remove notary from ContractState.
Introduce TransactionType, which specifies custom validation logic for a transaction.
2016-06-17 15:05:35 +01:00
Andrius Dagys
3b1e020082 Extended the data model so that every state has to define a set of 'participants' - parties that are able to consume that state in a valid transaction.
Added protocol for changing the notary for a state, which requires signatures from all participants
2016-06-17 15:05:35 +01:00
Andras Slemmer
0c325c31a2 Revert "Merged in use-urandom-2 (pull request #159)"
This reverts commit 1a1ed3b9e6, reversing
changes made to 09e2e49d44.
2016-06-17 14:12:19 +01:00
Andras Slemmer
ba96282591 node: use newSecureRandom() instead of SecureRandom.getInstanceStrong() 2016-06-17 13:07:25 +01:00
Andras Slemmer
f06487aa4c Merged in sort-of-incremental-quasarScan (pull request #154)
Sort of incremental quasarscan
2016-06-17 10:38:39 +01:00
Shams Asari
7f3458803c Protocols can use the serviceHub lazily in their constructors 2016-06-17 10:30:25 +01:00
Andras Slemmer
dc5da8e1ad build: use QuasarPlugin instead of copypasta 2016-06-17 10:16:46 +01:00