Commit Graph

525 Commits

Author SHA1 Message Date
Matthew Nesbit
478cb58dd6 Delay State Machine fiber start until network map cache is fully populated.
Add some unit tests of the late init behaviour.

Fix merge error

Change statemachine logic to use an in-memory only flag on checkpoints to track their materialisation during startup.

Add annotations for test method

Fix possible race condition on storing checkpoint objects

Correctly create checkpoint

Use then helper function

Cleanup imports
2016-09-19 12:15:33 +01:00
rick.parker
476db876d9 Move db commit to after "protocol completed" future is set.
Move db commit to after "protocol completed" future is set.
2016-09-16 13:56:49 +01:00
rick.parker
236a47104f Persitent network map and key service. Temporary persistence workaround for scheduler. 2016-09-16 12:14:56 +01:00
Patrick Kuo
1388747484 Permissioning server: added new node properties in node config for certificate signing request 2016-09-16 11:42:33 +01:00
Mike Hearn
4d83f1489f Add a client library that provides an RPC mechanism for talking to the Corda node.
The RPC mechanism uses message queues and is essentially conventional except for the fact that it supports marshalling observables. An observable encapsulates a stream of ongoing events, and server-side observables sent to the client are automatically bound to message queues and managed by Artemis.
2016-09-16 10:13:21 +01:00
rick.parker
17c9d231f4 Fix hanging test and fail fast on hang. 2016-09-15 16:39:58 +01:00
Shams Asari
8ea20dd0d2 Removed session IDs from the send and receive methods of ProtocolLogic and are now partially managed by HandshakeMessage 2016-09-14 15:26:55 +01:00
Shams Asari
f314bab6c8 Replacing the two params of AbstractNodeService with single ServiceHubInternal 2016-09-13 11:52:31 +01:00
Rick Parker
53de66a23d Merged in cor-344-persistence-jdbc-transactions (pull request #353)
Add database transactions ready for more widespread persistence.
2016-09-13 10:48:48 +01:00
rick.parker
27cb1c3597 Introduce database transactions around message handling, web API and in protocols. 2016-09-13 10:47:50 +01:00
Andrius Dagys
422a766c1a Minor persistent uniqueness provider tweak 2016-09-13 10:37:53 +01:00
Mike Hearn
ee637b79e2 Merge branch 'mike-fix-wms-for-k104' 2016-09-12 16:40:11 +01:00
Mike Hearn
0e37547af0 Rename ArtemisMessagingClient to NodeMessagingClient to make the purpose clearer once we start landing the clientrpc framework. 2016-09-12 13:16:45 +01:00
Mike Hearn
f6def0ef8f Minor: fix build for Kotlin 1.0.4 pre-release. It is stricter about some dubious code. 2016-09-12 12:18:35 +01:00
Andrius Dagys
0ed6a0ef4d Added a persistent uniqueness provider, backed by a JDBCHashMap.
Enabled a single node persistent notary.
2016-09-12 10:15:03 +01:00
rick.parker
03a04d10ca Remove use of interrupts to in ClockUtils 2016-09-09 16:45:49 +01:00
rick.parker
879802f7fd JDBC backed persistent hash map implementation. 2016-09-09 14:01:05 +01:00
Matthew Nesbit
bf0721868e Move Interest Rate related classes out of :node to reduce dependency of :node module on any specific contract. (Currently only WalletMonitorService and CashBalanceAsMetricsObserver stop me removing the compil dependency of :node on :contracts rather than :core). This has required that I modify fixing protocol to require information on what class of Oracle to use. 2016-09-09 11:31:08 +01:00
Andras Slemmer
0fc560d20a node: Relax TwoPartyTradeProtocolTests so it only checks a subsequence of store accesses 2016-09-09 10:54:16 +01:00
Matthew Nesbit
9518c38f29 Ensure integration tests in modules are in separate configurations and not directly called from build or installDist. 2016-09-08 15:28:04 +01:00
Matthew Nesbit
245d6ce21f Use standalone Corda main class and configuration in the Driver, rather than a separate class.
Better check for Notary services
2016-09-08 12:44:12 +01:00
Mike Hearn
d8d639f192 Merged in mike-small-tweaks (pull request #337)
A few small tweaks
2016-09-08 12:40:14 +02:00
Matthew Nesbit
1f2a6d256e Simplify the FullNodeConfiguration now that an explicit identity for the NetworkMapService isn't a problem.
Use consistent if style

Don't include NetworkMapAddress in config if hosting locally
2016-09-07 15:35:50 +01:00
Mike Hearn
fa4b503f81 Minor: rename UntrustworthyData.validate to UntrustworthyData.unwrap to better indicate its purpose and deprecate the old name. 2016-09-07 13:09:39 +02:00
Mike Hearn
49a0fd8fdd Improve the usability of SignedTransaction.verifySignatures taking into account how it is typically used. 2016-09-07 13:09:39 +02:00
Mike Hearn
1d272f89c2 Check the tx type in NotaryChangeProtocol and add a TODO to write a test for this once the protocol framework propagates exceptions. 2016-09-07 13:09:39 +02:00
Matthew Nesbit
2e1952a8a7 Get rid of the fake NodeInfo used to identify the NetworkMapService node.
Remove old comment
2016-09-06 18:25:12 +01:00
rick.parker
35274cd15c Refactor network map service in preparation for persistence.
Removed currently superfluous clock.
2016-09-06 18:21:06 +01:00
Mike Hearn
2d40c7e6dc Minor: make the logger in the standalone node private to avoid accidental screwups due to name conflicts (mental or read) 2016-09-06 18:40:39 +02:00
Matthew Nesbit
58aa933307 My recent PR#325 contained a couple of mistakes. In particular on Unix, but not windows the shutdown hook unregister can give a non-fatal exception during some tests. Also, I got the point of client messaging service stop registration wrong, which was leading to the server shutting down teh client session ahead of the proper stop sequence. 2016-09-06 16:26:31 +01:00
Andras Slemmer
9e993c5b86 Merged in aslemmer-generators-fixes (pull request #300)
Aslemmer generators fixes
2016-09-06 14:19:28 +01:00
Andras Slemmer
618f46cba4 node: Fix JsonSupportTest imports 2016-09-06 13:59:01 +01:00
Andras Slemmer
491b1abd4a contracts, core, node: Use entropyToKeyPair in Generators instead of manually creating keys 2016-09-06 13:54:59 +01:00
Andras Slemmer
9ff1ad7769 node: Fix redelivery race 2016-09-06 13:54:58 +01:00
Andras Slemmer
cc556cde6f ndoe: Fix message duping on redelivery 2016-09-06 13:54:58 +01:00
Andras Slemmer
89a5448c39 node, core: Add quickcheck generators for basic types, transactions 2016-09-06 13:54:58 +01:00
Mike Hearn
9d83a9b6d2 Minor: move transaction types out of the contracts package and into a new transactions package 2016-09-06 14:20:32 +02:00
Andras Slemmer
4923e33a7d node: Remove unnecessary @Suppress 2016-09-06 09:52:43 +01:00
Andras Slemmer
737fc0589c node: Add clock test for external interrupt on waiting strand 2016-09-06 09:52:43 +01:00
Andras Slemmer
fc7000c152 node: Fix race in Clock.doInterruptibly by not relying on version counter 2016-09-06 09:52:43 +01:00
Matthew Nesbit
11efe8ca1b Extend Rick's closeOnShutdown so that all the shutdown that was being done manually is done through the same mechanism. Thus allowing for a consistent reverse ordering and hopefully preventing DB shutdown happening ahead of serverThread shutdown.
Follow Rick's PR suggestions

Preserve comment about abitrary timeout on serverThread stop
2016-09-06 09:18:59 +01:00
Andras Slemmer
d8ae07e771 node-driver: Use anyAddress for RandomFree port allication 2016-09-05 17:29:44 +01:00
Andras Slemmer
9836edd191 Revert reuseaddr 2016-09-05 16:08:58 +01:00
Andras Slemmer
6b37048a14 node-driver: Remove reuseAddress = true as it breaks tests on osx 2016-09-05 15:43:19 +01:00
Shams Asari
97e1a59770 Refactored FiberRequest into cleaner ProtocolIORequest and fixed checkpoint regression 2016-09-05 14:42:54 +01:00
Matthew Nesbit
eb8510e7cc Some integration tests seem to be getting exceptions that suggest the ArtemisMQ session has been closed down already. Looking at the client code it is clear two threads can call stop and interfere with each other. Therefore this fixes the running flag logic. 2016-09-05 14:13:38 +01:00
Andras Slemmer
637a41401d node-driver: Reuse address when polling for port, poll for correct condition\(!\) 2016-09-05 11:04:31 +01:00
Mike Hearn
3854fec17f Testing: Make PortAllocation set SO_REUSEADDR to avoid CI conflicts 2016-09-05 11:22:00 +02:00
Andras Slemmer
ca1b0083ed node: Clean up messy issue in test 2016-09-01 18:15:47 +01:00
Andras Slemmer
dded4c6e8f node: FIx WalletMonitorService tests 2016-09-01 18:15:47 +01:00
Ross Nicoll
4d0b23ab6f Add log4j-web to node
Add log4j-web to node so it stops complaining that it's running in a web environment without that option.
Longer term we may want to split the web parts into their own optional extra for node, but for now I think
this is a sensible solution.
2016-09-01 16:15:15 +01:00
Ross Nicoll
b913b18e02 Merged in rnicoll-simulations (pull request #314)
Move test code from node to test-utils
2016-09-01 15:21:34 +01:00
Ross Nicoll
868b23a923 Move simulations to top level 2016-09-01 11:15:05 +01:00
Ross Nicoll
07f44e9e2a Move test code from node to test-utils 2016-09-01 11:15:05 +01:00
Matthew Nesbit
039229cdfd Remove bouncycastle-jdk14 that is causing problems for one of the member banks.
Only need testCompile scope
2016-09-01 11:04:48 +01:00
Andras Slemmer
86d6ee0110 node: Cash Issue doesn't require notary 2016-09-01 09:36:06 +01:00
Andras Slemmer
cfebccc495 node: Remove TransactionBuildResult.Complete, add pretty printing of ServiceToClientEvent 2016-09-01 09:36:06 +01:00
Ross Nicoll
232db9a1fd Move test utilities into their own package
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.
2016-08-31 15:40:54 +01:00
Clinton Alexander
5439e0980f Merged in clint-driver-debug-fix (pull request #308)
Fixed driver debug mode.
2016-08-31 11:31:02 +01:00
Clinton Alexander
0c4a80453a Used lists instead of strings for appending to JavaArgs in driver. 2016-08-30 14:01:54 +01:00
Matthew Nesbit
8756b49794 Add switchable HTTPS to Node web server
Explain change of cipher

Include extracted Dev Corda Root certificate so that it can be installed by HTTPS users.
2016-08-30 13:07:40 +01:00
Clinton Alexander
82b416cb88 Fixed driver debug mode. 2016-08-30 12:03:31 +01:00
Ross Nicoll
ad8ffca0b4 Add CommitTransactionProtocol
Add new protocol which manages the entire process of taking a signed transaction ready
for notarisation, through notarisation and onto recording it both locally and informing
remote nodes.

This protocol also optionally can include the ClientToServiceCommand which triggered a transaction
being created, to give the remote nodes context on why a change occurred (i.e. "You are being sent
£100")
2016-08-25 16:30:39 +01:00
Matthew Nesbit
089ba2cb69 Only NetworkMapServer addresses can be publicly manufactured. Use identity publick key as addressing, with only bridges using the HostAndPort information
Fixup after rebase and fix issue with checking previous deployment of bridges

Correct comments on ArtemisMessagingClient constructor

Fixup rates fix demo

Get rid of when statements

Make NetworkMapCache send modify as well as add//remove events. Make inboxes for nodes persistent.

Suppress warnings

Fix message acknowledgement so that it actually consumes messages properly.

Change queueName to SimpleString to stop lots of wasted conversions

Get rid of spurious import

Tidy up and add comments

Update to include comments on PR

Remove unnecessary import
2016-08-25 15:56:50 +01:00
Ross Nicoll
f9880a4990 Pre-filter states passed to generateSpend()
Pre-filter states passed to generateSpend(), so that requests from the UI to spend cash only ever
spend cash with the correct issuer.
2016-08-25 13:20:12 +01:00
Mike Hearn
c8323099bb Minor: cleanup the commercial paper contracts.
There's no need for the notary to be specified in commands. A few other tweaks and additions found whilst refreshing the docsite.
2016-08-25 11:30:25 +02:00
Mike Hearn
3e330a2d36 Merged in mike-fix-walletfiller (pull request #277)
Rewrite the test wallet filler code to not be buggy.
2016-08-23 17:59:19 +02:00
Ross Nicoll
dc2f4055fc Restrict cash exit commands to working on cash held by the issuer
Remove the ability to exit cash not held by the cash issuer; this solves a number of problems:

* Ensuring owner of the cash is aware of the funds being destroyed
* Determining where to send any change resulting from partial exiting of funds
* Auditing the destruction of funds
2016-08-22 17:17:19 +01:00
Clinton Alexander
668fecfea7 Merged in clint-no-notary-error (pull request #283)
Fixed bug when incorrect notary service type is specified.
2016-08-22 16:41:38 +01:00
Mike Hearn
097bb033c4 Rewrite the test wallet filler code to not be buggy. 2016-08-22 16:26:32 +02:00
Andras Slemmer
1a2c712a48 node-driver: Make debugging optional and off by default 2016-08-19 17:05:00 +01:00
Andras Slemmer
9d22d66548 node-driver: Fix some kdocs. Also, full stops! 2016-08-19 17:05:00 +01:00
Andras Slemmer
f4577b743e node-driver: Add startClient, startLocalServer 2016-08-19 17:05:00 +01:00
Andras Slemmer
5f33bedc13 node-driver: Polling doesn't timeout, just prints warning 2016-08-19 17:05:00 +01:00
Andras Slemmer
9cbdf001fb node-driver: Return Futures instead of waiting for full node startup 2016-08-19 17:05:00 +01:00
Clinton Alexander
7b3003ea04 Added TODO for further work 2016-08-19 16:41:49 +01:00
Matthew Nesbit
696b9741dd Remove ClashingThreads exception by tightening up unique id on LinearState to be a secure random value, with constraints that it cannot be duplicated. Also, rename to linearId rather than the confusing thread.
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
2016-08-19 11:52:16 +01:00
Mike Hearn
6adebd3fa8 Clarify exception handling in the SMM add method a bit. 2016-08-18 18:19:46 +01:00
Mike Hearn
db3aa1491c Upgrade Quasar to 0.7.6 and fix an exception handling bug in SMM that it revealed (if an exception was thrown immediately on protocol startup we let it leak instead of capturing it in the future. 2016-08-17 14:43:45 +01:00
Ross Nicoll
a9ec3c253e Merged in rnicoll-notify-tx (pull request #282)
Add observable for transactions being stored
2016-08-16 14:50:55 +01:00
Clinton Alexander
77f5689468 Renamed variable for clarity. 2016-08-16 13:54:08 +01:00
Clinton Alexander
5d68210355 Driver now correctly resolves quasar path on Windows. 2016-08-16 13:26:38 +01:00
Clinton Alexander
85dce390f4 makeNotaryService now enforces post condition with type system. 2016-08-16 09:21:29 +01:00
Clinton Alexander
a74c491745 Fixed a bug where if NotaryService.Type is used as an advertised service no notary is created and no obvious error occurs. 2016-08-16 09:18:33 +01:00
Andras Slemmer
9d9164980e Merged in andrius-driver-fix (pull request #280)
DriverTest fix: get quasar.jar location from the classpath
2016-08-15 17:31:02 +01:00
Clinton Alexander
c5a6d11976 Merged in clint-node-driver-conf-fix (pull request #275)
Config will error earlier if the reference.conf file is missing.
2016-08-15 15:53:50 +01:00
Mike Hearn
a451000623 Merged in mike-fix-artemis-threading (pull request #276)
Messaging layer improvements
2016-08-12 19:07:54 +02:00
Mike Hearn
3d391ec8c2 Add unit tests for the resolve transactions protocol 2016-08-12 17:14:54 +02:00
Ross Nicoll
a3d37a4d00 Require notary to be explicitely stated on each transaction 2016-08-12 15:51:04 +01:00
Ross Nicoll
17ae349f4d Remove support for timestamp commands 2016-08-12 13:51:34 +01:00
Mike Hearn
cba0427e01 Make ArtemisMessagingClient blocking and require the user to directly enter a message loop. This cleans up a few things and ensures we can't get caught out by messages being arbitrarily re-ordered as they pass through any Artemis thread pools. 2016-08-12 14:06:03 +02:00
Ross Nicoll
8346c58d4c Add observable for transactions being stored
Add observable for transactions being stored, so the UI can show transactions as they're received, rather than being
limited to the summarised version available from the wallet service.
2016-08-12 11:58:17 +01:00
Andrius Dagys
cd344058d2 Driver: get quasar.jar location from the classpath instead of a constructor parameter 2016-08-12 11:41:15 +01:00
Mike Hearn
ac81d2aa32 Messaging layer improvements:
- Fix thread safety issues in ArtemisMessagingClient. The Artemis API isn't thread safe, but that isn't well documented and it will happily invoke callbacks in parallel.
- Add discussion of how we tackle threading currently in the codebase and make a few other improvements.
- Add a shutdown hook so we stop properly when the user presses ctrl-c
2016-08-11 14:16:05 +02:00
Clinton Alexander
475322b14f Config will error earlier if the reference.conf file is missing. 2016-08-10 17:22:20 +01:00
Andras Slemmer
00b439802b node-driver: Write node.conf explicitly 2016-08-10 14:35:23 +01:00
Andras Slemmer
1b98c32579 Merged in node-driver (pull request #253)
Node driver
2016-08-10 14:21:16 +01:00
Ross Nicoll
cf40e0db70 Add WalletMonitorService 2016-08-09 18:24:14 +01:00
Andrius Dagys
8386100677 Remove BriefLogFormatter as the formatting is now handled by Log4j configuration. Introduce LogHelpers which now handles the custom log level setting for specific loggers. 2016-08-09 17:31:27 +01:00
rick.parker
d883b3f134 First working hand-rolled persistent wallet
First working Exposed-assisted persistent wallet

Cleaned up Exposed-based persistent wallet

Cleaned up warnings

Fixed up some generic types

Improved comments

Fix up TODO comment

Hikari and config integration

Fix existing tests

Clean up after looking at PR

Clean up commented out lines

Fix initialisation of IRS demo leaving database open

Fix up after rebase

Review feedback.  Main change is lazy wallet iteration.

Rebased and incorporated config changes.

Use standardised config loading.  Make wallet cash test use persistent wallet.

Added test to ensure wallet retains state in database across instance creation.

Tidy up whitespace and fix bug in test.
2016-08-09 16:41:32 +01:00
Andras Slemmer
f20322136f Revert "Merged in node-driver (pull request #253)"
This reverts commit af893e0af5, reversing
changes made to 7357597501.
2016-08-09 16:19:18 +01:00
Andras Slemmer
9df7a0faf0 node-driver: Fix compile error 2016-08-09 15:38:33 +01:00
Andras Slemmer
5b2c687c64 node-driver: Hacky fix of startup race condition 2016-08-09 15:27:27 +01:00
Andras Slemmer
9e3220671c node: stop() ClientFactory and ServerLocator when shutting down and ArtemisMessagingClient 2016-08-09 15:27:27 +01:00
Andras Slemmer
d0385c420e node-driver: Remove parameter and DriverHandle, expose waitForAllNodesToFinish to dsl 2016-08-09 15:27:27 +01:00
Andras Slemmer
c9527a2cdd node-driver: Only stop() artemis if it started fine 2016-08-09 15:27:27 +01:00
Andras Slemmer
20fc200771 node: Fix checking of lateinited networkMapNodeInfo 2016-08-09 15:27:27 +01:00
Andras Slemmer
df4413ab68 node: Add extra Driver checks for node shutdown, extend try/finally scope of cleanup 2016-08-09 15:27:27 +01:00
Andras Slemmer
2e6de61ad0 node: Fix compiler error due to rebase 2016-08-09 15:27:27 +01:00
Andras Slemmer
a5e8c86928 node: Increase poll timeout in driver 2016-08-09 15:27:27 +01:00
Andras Slemmer
feecc36661 node: Address PR comments, better resource releasing, add kdoc 2016-08-09 15:27:27 +01:00
Andras Slemmer
9d071809ef node: Expose port allocation in Driver 2016-08-09 15:27:27 +01:00
Andras Slemmer
e7677c91ce node: Add DriverDSL(Exposed/Internal)Interface, add generic driver method to allow extension 2016-08-09 15:27:27 +01:00
Andras Slemmer
773d53b4c8 node: Load config from disk in Driver, further cleanup 2016-08-09 15:27:27 +01:00
Andras Slemmer
303858c3e4 node: Use proper logging in Driver 2016-08-09 15:27:27 +01:00
Andras Slemmer
35da6b5388 node: Add port allocation strategies to driver dsl, add jvm debug port 2016-08-09 15:27:27 +01:00
Andras Slemmer
8cf635cf74 node: Expose ArtemisMessagingService.Address 2016-08-09 15:27:27 +01:00
Andras Slemmer
3bc62fdb95 node: Add driver dsl test, expose some needed functions 2016-08-09 15:27:27 +01:00
Andras Slemmer
5f5a5e683d node: Add quasarPath parameter to driver dsl (should be replaced once we can do without the external quasar.jar) 2016-08-09 15:27:27 +01:00
Andras Slemmer
a317a5bfd2 node: Expose some Driver functions to allow extension, some cleanup 2016-08-09 15:27:27 +01:00
Andras Slemmer
e42d8c2e8f node: Add driver DSL for starting up nodes 2016-08-09 15:27:27 +01:00
Mike Hearn
87047c8996 Minor: fix various inspector warnings and delete some dead code. 2016-08-09 11:55:40 +02:00
Mike Hearn
8c00b5284d Merged in mike-ledgertx-refactoring (pull request #264)
Refactor the core transaction types
2016-08-08 18:02:32 +02:00
Matthew Nesbit
6b23800f02 Incorporate Clintons review comments 2016-08-08 11:54:41 +01:00
Matthew Nesbit
3dc8a95d69 Tackle comments from code review and fix bad merge on version 2016-08-05 16:42:55 +01:00
Matthew Nesbit
d3309c1171 Allow setting of out of process ArtmeisMQ broker on Node via config file 2016-08-05 15:58:02 +01:00
Matthew Nesbit
d76d271830 Fixup after rebase to split of server and client artemis components. 2016-08-05 14:52:31 +01:00
Matthew Nesbit
6b844c0e41 Gradle task to create a build/standalone folder suitable to demonstrate the capsule.io all in one jar 2016-08-05 14:52:29 +01:00
Andrius Dagys
d1f2958e6d Node: Add API doc for a newly introduced constructor parameter 2016-08-05 14:41:57 +01:00
Andrius Dagys
8d3a3197b9 Split up ArtemisMessagingService into ArtemisMessagingClient & ArtemisMessagingServer. If a Node is given a messagingServerAddress, it will only run a client and attempt to connect to the server at the provided address. By default, it will run both client & server locally 2016-08-05 14:02:32 +01:00
Andras Slemmer
027853c3a8 node: Started refactoring ArtemisMessagingService into ArtemisServerService and ArtemisClientService 2016-08-04 15:32:48 +01:00
Andras Slemmer
845f2bdd64 Merged in pubkey-base58-serialisation (pull request #257)
Pubkey base58 serialisation
2016-08-04 13:58:57 +01:00
Clinton Alexander
b640524bf3 Merged in clint-auto-identity (pull request #261)
Identity service now updates with the network map.
2016-08-04 13:29:54 +01:00
Andras Slemmer
4fb8a38122 core, node: Rename Stirng.toPublicKey to parsePublicKeyBase58 2016-08-04 12:14:40 +01:00
Andras Slemmer
35c4fcadcf node: Use toBase58String/toPublicKey in JsonSupport 2016-08-04 12:14:40 +01:00
Mike Hearn
701fc853ad Refactor the core transaction types to improve clarity, simplify verification and prepare for sandboxing.
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.
2016-08-04 13:05:50 +02:00
Mike Hearn
c2aee2d4e8 Minor: Replace MockServices with a new class that's in core instead of node, old class becomes MockServiceHubInternal. 2016-08-04 12:53:09 +02:00
Mike Hearn
1c3379f508 Testing: make the ledger DSL take a ServiceHub rather than individual services.
It defaults to a fresh UnitTestServices(). Also clear up a few other areas.
2016-08-04 12:52:02 +02:00
Mike Hearn
ba05b90b8f Testing: change fillWithTestCash to issue cash under the DUMMY_CASH_ISSUER identity and adjust code that uses it. Introduce some code that'll prove useful later in WalletWithCashTest.
This change reduces the  testing confusion that can occur when cash is issued by one of the parties in a transaction rather than e.g. a neutral third party like a central bank.
2016-08-04 12:52:01 +02:00
Ross Nicoll
fc804ec746 Add NotifyTxProtocol
Add a protocol for notifying remote nodes of a transaction that may interest them
(typically this means involves them).
2016-08-03 17:10:26 +01:00
Clinton Alexander
b1c1b7f4b4 Review changes - merged two observables into one. 2016-08-03 16:49:37 +01:00
Clinton Alexander
9ef1bf0355 Identity service now updates with the network map. 2016-08-02 17:08:46 +01:00
Mike Hearn
987c374b98 Minor: slightly better error message when trying to send to an unknown party. 2016-08-01 16:42:56 +02:00
Mike Hearn
b40fee1512 Allow for easier conversion from Amount<Issued<T>> to Amount<T> and de-issuerify a few places. 2016-08-01 16:42:56 +02:00
Mike Hearn
97ad07be89 Fix progress rendering after the switch to log4j, as ANSIProgressRenderer had assumed JDK logging.
Also, start using colours and a more compact logging format in the default log4j config.
2016-08-01 13:07:48 +02:00
Ross Nicoll
cf4bb0c9af Break down topic into component parts
Break down what is referred to as "topic" of a message into its component parts. This splits the
general topic from the session ID, so it's clear where a session ID is provided, and whether any
given topic string includes a session ID or not.
2016-07-29 14:24:46 +01:00
Clinton Alexander
7d39a101d4 Merged in COR-276 (pull request #239)
Added Jacoco code coverage to gradle.
2016-07-29 13:29:47 +01:00
Matthew Nesbit
8c77ae7c84 Add comment to explain why AbstractNode is marked as SingletonSerializeAsToken 2016-07-28 16:54:40 +01:00
Matthew Nesbit
a462bb1d6a Incorporate comments from PR 2016-07-28 16:30:53 +01:00
Matthew Nesbit
601b2faf5f Incorporate comments from PR 2016-07-28 16:22:35 +01:00
Matthew Nesbit
c57f265cce Fixup plugins to include static content property after rebase inclusive of that work 2016-07-28 13:55:06 +01:00
Matthew Nesbit
10f68b22f9 Minor fix after rebase 2016-07-28 13:39:16 +01:00
Matthew Nesbit
235497e0f4 Convert long lived services supporting protocol listeners to plugins 2016-07-28 13:39:12 +01:00
Matthew Nesbit
09c795e341 Merge remote-tracking branch 'remotes/origin/master' into mnesbit-cor-261-artemis-over-ssl 2016-07-28 13:28:31 +01:00
Clinton Alexander
5410f8b228 Merged in demowebui (pull request #230)
Added an IRS demo web interface
2016-07-28 13:19:32 +01:00
Ross Nicoll
ec726da7d0 Merged in rnicoll-warnings (pull request #246)
Correct warnings
2016-07-28 13:03:55 +01:00
Matthew Nesbit
7d5ee8ba08 Create MessageServiceInternal interface to allow NetworkMapCache to register addresses with the network service.
Activate WhitelistTrustManager for now to secure the TLS messaging.
2016-07-28 11:25:57 +01:00
Clinton Alexander
188fc29436 Cleaned up build.gradle files. 2016-07-28 09:17:49 +01:00
Ross Nicoll
d54beca77e Add wallet service for notifying remote nodes of transactions 2016-07-27 17:40:52 +01:00
Ross Nicoll
aaaf6ea4f6 Correct warnings 2016-07-27 17:11:46 +01:00
Matthew Nesbit
e3aef96b09 Merge remote-tracking branch 'remotes/origin/master' into mnesbit-cor-261-artemis-over-ssl
# Conflicts:
#	build.gradle
2016-07-27 15:43:01 +01:00
Ross Nicoll
8bdeda63ae Merged in rnicoll-checkpoint-generic (pull request #241)
Rework checkpoint storage to include the FiberRequest
2016-07-27 15:20:40 +01:00
Andrius Dagys
e8c84867cf Merged in andrius-logging (pull request #240)
Enable logging to file
2016-07-27 14:18:24 +01:00
Matthew Nesbit
e5777fd999 Fetch KeyStore passwords from NodeConfiguration 2016-07-26 10:35:57 +01:00
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