Commit Graph

1392 Commits

Author SHA1 Message Date
szymonsztuka
a6bf8e35dd rewrite few services to use Hibernate
* DBTransactionMappingStorage
* DBTransactionStorage
* DBCheckpointStorage
* PersistentUniquenessProvider
* PersistentKeyManagementService
2017-08-14 15:06:06 +01:00
Shams Asari
008301c4e8 Introduced FlowLogic.getFlowContext which provides the flow version and app name of the other side. 2017-08-11 18:01:16 +01:00
Ross Nicoll
f0c7d7665a Remove deprecated signing functions
* Remove TransactionBuilder.signWith()
* Remove TransactionBuilder.addSignatureUnchecked()
* Rename signInitialTransaction to toSignedTransaction
* Remove checkAndAddSignature()
* Require all unit tests sign transactions via services
2017-08-11 17:37:50 +01:00
Alberto Arri
4deea43b98 Merge branch 'master' into arri_update_collectSignaturesFlow_Docs 2017-08-11 15:17:43 +01:00
Ross Nicoll
f9552a0d3e Correct exceptions thrown from checkSignaturesAreValid()
checkSignaturesAreValid() calls TransactionSignature.verify(), which throws InvalidKeyException but
checkSignaturesAreValid() did not indicate it could throw InvalidKeyException.
2017-08-11 13:40:39 +01:00
Rick Parker
31df43bd76 Some preparation work for AMQP serialization integration & a refactor fix (#1214) 2017-08-11 13:23:00 +01:00
Matthew Nesbit
af13371510 Move certificate builder code from core to node utilities.
Address PR comments

Fixup dead reference
2017-08-11 12:02:38 +01:00
Alberto Arri
6c02b7d18a Updated docs to remove the deprecated toSignedTransaction 2017-08-11 10:14:39 +01:00
josecoll
54cf46952c JPA Hibernate AbstractParty converter (#1205)
* Added JPA AbstractParty converter (using IdentityService to resolve anonymous parties).

* Use partyFromX500Name. Add meaningful exception messages.

* AutoApply the JPA AbstractParty converter.

* Entity attribute still needs the Convert annotation.

* Fix incorrect registration of custom attribute converter.

* Deal with non-resolvable anonymous parties (eg. store as null and ignore)

* Updates following PR review feedback.

* Added documentation.

* Added entry to changelog.

* Added code documentation as per RN PR feedback request.

* Updates required following rebase from master.

* Renamed converter for clarity.
2017-08-10 17:17:12 +01:00
mkit
c8bbe453f5 Removing clauses from the core module (#1203) 2017-08-10 17:09:08 +01:00
Matthew Nesbit
3bc7914a09 Merge pull request #1184 from corda/mnesbit-generic-generatespend
Move generateSpend onto Cash contract. Add fully generic replacement.
2017-08-10 15:25:40 +01:00
Matthew Nesbit
f4f2d35375 Make a generic generate spend. Tests pass.
Fixup after rebase

Fixup after rebase

Make node have only test compile dependency against finance module.

Use original query code.

Fixup after rebase

Update docs

Edit docs

Add to changelog

Follow recommendations from PR

Follow recommendations from PR

Make a re-usable helper function to create MockServices with database for tests

Tweak a few comments

Don't include tryLockFungibleStateForSpending in soft lock docs.

Respond to PR comments

Fix whitespace error

Fix compile error

Fixup after rebase
2017-08-10 13:29:08 +01:00
Ross Nicoll
d86cb1ac64 Remove deprecated partyFromName() function 2017-08-10 13:25:53 +01:00
Ross Nicoll
fdb63b7611 Add RPC operation for resolving well known identity 2017-08-10 13:25:53 +01:00
mkit
0b33214fea Removing clauses (#1195)
* Removing clauses

* Removing clauses from JavaCommercialPaper

* Addressing review comments
2017-08-09 15:25:31 +01:00
Rick Parker
28610868c4 Remove Kryo from core module completely, including gradle dependencies (#1161) 2017-08-09 14:53:46 +01:00
Clinton
32ee332d16 Fixed publishing to artifactory for core (#1183)
Test common needs to be published by artifactory.
2017-08-09 11:06:25 +01:00
Katelyn Baker
41040af757 Boolean primitive type is missing 2017-08-08 16:17:52 +01:00
Matthew Nesbit
bc4223712b Remove kotlin.Pair from Public APIs 2017-08-08 14:44:04 +01:00
Shams Asari
fa7c2b71f7 Removed Kt suffix of Strutures in Java 2017-08-07 17:12:32 +01:00
Konstantinos Chalkias
bd0944e799 TransactionSignature MetaData support (#1040)
Support signature metadata
2017-08-07 16:21:52 +01:00
Andrzej Cichocki
3a3ead2dfe Remove ListenableFuture from core/main (#1030) 2017-08-07 14:31:24 +01:00
Katelyn Baker
fb1bec77d9 Merge pull request #1178 from corda/bugfix/kat/spellingError
Fix spelling error
2017-08-04 22:39:38 +01:00
josecoll
bef8630fe0 Improvements to Vault Query Service soft locked state querying (#1174)
* Improvements to Vault Query Service soft locked state querying (removed old mechanism from VaultService).

* Fixed rst document formatting.

* Added additional soft locking criteria mode: all unlocked plus those locked as specified by lockId(s).

* Addressed comments from PR feedback.
2017-08-04 17:23:31 +01:00
Katelyn Baker
1d9c438952 Fix spelling error 2017-08-04 16:28:39 +01:00
Andrzej Cichocki
42e29d3b22 Retire FileUploader and subtypes (#1154) 2017-08-04 15:57:11 +01:00
Patrick Kuo
56fda1e5b5 Replace data vending service with SendTransactionFlow (#964)
* WIP - Removed data Vending services, fixed all flow test

* * separated out extra data, extra data are sent after the SendTransactionFlow if required
* New SendProposalFlow for sending TradeProposal, which contains StateAndRef.
* WIP

* * removed TradeProposal interface.
* changed SendProposalFlow to SendStateAndRefFlow, same for receive side.
* fixup after rebase.

* * undo changes in .idea folder

* * remove unintended changes

* * Addressed PR issues

* * doc changes

* * addressed pr issues
* moved ResolveTransactionsFlow to internal
* changed FlowLogic<Unit> to FlowLogic<Void?> for java use case

* * addressed PR issues
* renamed DataVendingFlow in TestUtill to TestDataVendingFlow to avoid name confusion, and moved it to core/test

* * removed reference to ResolveTransactionsFlow
2017-08-04 11:26:31 +01:00
josecoll
014387162d Expose a JDBC connection (session) via the ServiceHub for generic JDB… (#1000)
* Expose a JDBC connection (session) via the ServiceHub for generic JDBC usage.

* Updated documentation.

* Fix failing JUnit following rebase from master.

* JDBC session Tutorial WIP

* Fix broken JUnits following update to consumeCash() using observable event update as return.

* Fixed broken JUnits.

* Refactoring createSession() into new CordaPersistence class following rebase from master.

* Updated fully working example.

* Minor updates following feedback from MH.

* Fixed compiler error following rebase.

* Fixes following rebase from master.

* Further updates and clarifications to documentation.
2017-08-04 09:26:27 +01:00
josecoll
818cbce789 Removed all deprecated Vault Service query code. (#1167) 2017-08-03 17:45:53 +01:00
Richard Green
ef8deba07c Added CordaCon to node startup banner 2017-08-03 13:08:51 +01:00
josecoll
64ba8d3a88 Updated samples and demos to use new Vault Query service. (#924)
* Updated all sample code to use new Vault Query service APIs.

* Fix broken Unit test.

* Added missing transaction boundary.

* Fix broken ScheduledFlow test (caused by assertion on non-ordered collection)

* Remove redundant negative test (as new Vault Query no longer returns iterators).

* Whitespace formatting fixed following PR review from SA.

* Force query to specify a PAGE SIZE equivalent to total states to be exited (RP review comment).

* Use single (and fail fast) instead of first - when only expecting a single result.

* Demonstrate paging and sorting; failfast on single expected result.

* Enhancement: added Sorting by CommonStateAttribute (StateRef txnId and index)

* Fix: incorrect total states count.

* Fixed incorrect total states counting.

* Remove redundant filter (UNCONSUMED).

* Updated tutorial code and associated documentation (building transactions).

* Updated all vaultAndUpdates to vault[Track|Query]By.

* Temporary disable failing Vault Query tests (awaiting pagination PR fix).

* Rebase from master to pick up pagination changes/fix.

* Fixed criteria filter on track.

* Cleanup redundant print output.

* Refactor to extract common function for Vault Query paging and sorting.

* Identified problem in SimmValuation demo failing test caused by query by single participant in participants list (not yet supported in VaultQuery criteria).

* Minor fixes following rebase from master.

* Minor updates following rebase.

* Removed redundant import.

* Fixed type casting error.

* Minor fixes following rebase from master.

* VQ Fix - applied in other PR.

* Removed duplication after rebase and minor fix to failing smoke test.
2017-08-03 11:47:15 +01:00
Andrzej Cichocki
73528d287d Refactoring related to obsolete attachments directory (#1150)
* No longer create obsolete "attachments" directory
* Remove redundant NodeAttachmentService param
* Add type param to MockNetwork.Factory to eliminate casts
* Use null not -1 for unforced node ID
* Remove redundant createNode args
2017-08-03 11:06:22 +01:00
Shams Asari
4312dc0771 Resolved all non-deprecation warnings 2017-08-02 12:17:52 +01:00
Andrius Dagys
a60ccded75 Minor: Add a test to ensure "identical" issue transactions have different ids (#1145)
* Add a test to ensure identical issue transactions have different ids

* Fix a PMT test
2017-08-01 11:42:36 +01:00
Andrius Dagys
9eb1a0c9d5 Add a test for notary change transaction updates in the vault.
Fix a minor related issue with update type propagation.

Add static NoNotaryUpdate object

Added isEmpty check to Vault.Update
2017-07-31 16:25:21 +01:00
Shams Asari
4a600121cc Removed deprecated methods in DataFeed and deprecated feed-based methods in CordaRPCOps 2017-07-31 15:11:00 +01:00
Andrius Dagys
6490638ee4 Remove availableComponents override from WireTransaction – the overridden version excludes privacy salt 2017-07-31 14:31:17 +01:00
Andrius Dagys
4ca8b8d681 Remove type-specific transaction builder. Normal transactions should use TransactionBuilder and notary change transactions are created directly. 2017-07-31 14:31:17 +01:00
Andrius Dagys
59edd6f9ae Remove type property from transactions 2017-07-31 14:31:17 +01:00
Andrzej Cichocki
92a056f869 Remove some low-hanging Guava from core/main (#1048) 2017-07-31 13:27:48 +01:00
Konstantinos Chalkias
36b50aab2d Nonce per tx component (#1125)
Add salt to wire tx and nonces to tx components
2017-07-31 12:19:47 +01:00
Patrick Kuo
3a63f0c606 * remove x500 name validation when loading config file (#1137)
* added x500 name validation in Network registration.
* fix for github issue #1130
2017-07-28 16:18:49 +01:00
Katelyn Baker
1f71a6aed2 Merge pull request #1129 from corda/kat-allowCarpenterToCarpentSeiliasedInstancesOfItself
Don't blindly add SimpleFieldAccess as interface to carpented classes
2017-07-28 11:48:22 +01:00
Katelyn Baker
054c23376c REVIEW COMMENT FIXES
- Fix up punctuation on a comment
2017-07-28 11:14:46 +01:00
mkit
197e627970 Merge pull request #1053 from corda/kit-getServiceOf
Extending NetwokMapCache with a convenience method for by type servic…
2017-07-27 17:23:54 +01:00
Katelyn Baker
2a716b4421 Removing spurious debug statement from tests 2017-07-27 16:15:06 +01:00
Michal Kit
818f8a5f77 Addressing review comments 2017-07-27 16:12:14 +01:00
Michal Kit
66d6c2b44e Extending NetwokMapCache with a convenience method for by type service retrieval 2017-07-27 16:12:13 +01:00
Katelyn Baker
75a8e4d610 Merge pull request #1128 from corda/kat-serialiseNullableChars
Serialising null chars was broken
2017-07-27 15:07:26 +01:00
Katelyn Baker
3fd4baa9b2 Review comments:
Swap ints to shorts for storing chars as there is no point wasting the
16 bits otherwise

Add better char tests, i.e. Unicode points that aren't going to fit into
the bottom 8 bits
2017-07-27 14:34:36 +01:00
Katelyn Baker
337ccd47b5 Don't blindly add SimpleFieldAccess as interface to carpented classes
This fix really only applies to the testing case where, to test the
carpenter as it integrates with the deserialzer we need classes not
found on the class path. To do this they can be created by a second
class carpenter

However, the original carpenter *always* added SimpleFieldAccess as an
interface to the class it would be creating. Under normal circumstances
that's fine as that interface wouldn't be in the list of interfaces
given to the carpenter for the class it's being asked to created.
However, if as described above the carpenter schema was synthesised from
a class that was carpented it will.

If this happens we get an error as understandably you can't have a
duplicate interface.

Fix is to simply check weather the list of interfaces the schema
describes and only add SimpleFieldAccess if it isn't on it
2017-07-27 12:13:47 +01:00
Katelyn Baker
06a8a4bada Serialising null chars was broken
The recent changes that were put in to allow chars to be serialised at
all failed to take into account nullability and thus if a char was null
and that object was first serlialised then desierliased it would throw
a NPE
2017-07-27 12:08:03 +01:00
Katelyn Baker
981987b2b7 Remove spurious comment line
Just a little tidyup since it was decided we didn't want these things
in the code base and this one must've slipped through the cracks
2017-07-27 11:56:11 +01:00
Curtis Stanford
c721316d67 changed the ServiceLoader.load call to use the class loader used to load the DefaultKryoCustomizer class instead of the default of using the thread context loader. This allows apps that use custom class loader hierarchies to use corda jars. All tests still pass 2017-07-27 10:42:44 +02:00
Andrius Dagys
4487408526 Refactor notary change mechanism (#1019)
* Introduce new NotaryChangeWireTransaction (similar to WireTransaction and NotaryChangeTransaction (similar to LedgerTransaction) types.

Remove 'mustSign' and 'signers' fields from transactions

Deprecate the TransactionType concept. When receiving a SignedTransaction, the verification and signature checking branches out for regular and notary change transactions.

Add custom handling logic for notary change transactions to the vault
2017-07-27 08:32:33 +01:00
Mike Hearn
a9a50ce8f3 Add generics to Vault.Update 2017-07-26 18:30:59 +02:00
Matthew Nesbit
b4ca0cdde9 Remove getCashBalances first part
More removal of getCashBalances

Get rid of duplicated code

Move onto new getCashBalance extension methods

Move onto new getCashBalance extension methods

Correct balance query code

Address PR request comments

Address PR request comments

Address PR request comments
2017-07-26 15:00:03 +01:00
Katelyn Baker
96496fdeb5 REVIEW COMMENTS
Remove the recursive call from directly inside the string builder
2017-07-25 17:05:14 +01:00
Katelyn Baker
b8ae03410d Ensure typename is calculated correctly for nested arrays
We were relying on the Java typename conversion to work for our AMQP
envelope type selection, and only special casing arrays of primitives.

However with nested arrays this breaks as the intermediate serialises
for the nested arrays still have no idea as to what the underlaying type
is as the assumption will be being made that the type is a boxed
primitive.

Solution is to compute the typename properly, walking down the nested
array chain
2017-07-25 15:41:51 +01:00
Katelyn Baker
0ca1500422 Review Comments 2017-07-25 10:39:18 +01:00
Katelyn Baker
c63ed76a66 Complete tests for all prim array types
Remove the case for bytes as those do work with the existing code
2017-07-25 10:17:57 +01:00
Katelyn Baker
f8116febad Arrays of unboxed primitives don't work 2017-07-25 09:18:03 +01:00
Shams Asari
407b467f67 Moved the majority of the contents of Utils.kt into either InternalUtils.kt or KotlinUtils.kt.
What remains is being dealt with in another PR.
2017-07-24 19:25:56 +01:00
Shams Asari
800f710fbb Generified Command so that it's more easier to use when querying from LedgerTransaction 2017-07-24 15:33:41 +01:00
Andrius Dagys
d2eb5507f9 Refactor transaction serialization caching (#1078)
* Cache deserialized rather than serialized WireTransaction. Prevent repeated deserialization when adding signatures to the SignedTransaction.

* Added a test to check that stx copying and signature collection still works properly after (de)serialization
2017-07-24 14:48:39 +01:00
Shams Asari
3e199e51fc Simplified the implementation of the tx query APIs with the introduction of Class.castIfPossible 2017-07-21 19:18:48 +01:00
Shams Asari
a485bbada8 Moved ThreadBox into core.internal 2017-07-21 18:01:29 +01:00
Matthew Nesbit
9a02a27619 Add state query methods to LedgerTransaction.
Update to use LedgerTransaction api

Push query output logic onto BaseTransaction and update usages where possible

Migrate a few more uses

Address some PR comments

Address some PR comments

Fixup after rebase
2017-07-21 15:41:00 +01:00
Rick Parker
fe9db6f1f7 Remove links to Kryo from serialization "clients" (#1079) 2017-07-21 14:23:05 +01:00
Katelyn Baker
e1551fc74e Merge pull request #1084 from corda/kat-cantDeserialiseChars
Fix to allow classes with char members to deserialize
2017-07-21 13:16:37 +01:00
Shams Asari
6f7794ac93 Rewrote the doc for TimeWinow to make it clearer 2017-07-20 15:36:47 +01:00
Ross Nicoll
29ff4a7ef6 Stop logging entire result from a fiber, as it can be very large 2017-07-20 15:28:09 +01:00
Shams Asari
e702025f62 Cleaned up TimeWindow and added a bit more docs. 2017-07-20 13:43:11 +01:00
Matthew Nesbit
0fdd4ae6c6 Remove TransactionForContract and just use LedgerTransaction
Fix minor doc error

Get rid of @deprecated method that was only present for technical reasons.

Minor fix and include in changelog
2017-07-20 09:16:07 +01:00
Katelyn Baker
97e0c3c4c2 Review Comments 2017-07-19 15:19:50 +01:00
Katelyn Baker
080e9670a1 Fix to allow classes with char members to deserialize 2017-07-19 14:43:52 +01:00
Shams Asari
070f0c040e Moved a bunch of stuff which shouldn't be public out of core.utilities and into core.internal 2017-07-19 14:09:03 +01:00
Ross Nicoll
c4c551dbd2 Confidential identities API improvements
* Registering anonymous identities now takes in AnonymisedIdentity
* AnonymousParty.toString() now uses toStringShort() to match other toString() functions
* Add verifyAnonymousIdentity() function to verify without storing an identity
* Replace pathForAnonymous() with anonymousFromKey() which matches actual use-cases better
* Add unit test for fetching the anonymous identity from a key
* Update verifyAnonymousIdentity() function signature to match registerAnonymousIdentity()
* Rename AnonymisedIdentity to AnonymousPartyAndPath
* Remove certificate from AnonymousPartyAndPath as it's not actually used.
* Rename registerAnonymousIdentity() to verifyAndRegisterAnonymousIdentity()
2017-07-19 14:03:34 +01:00
Konstantinos Chalkias
8a2074eeee Remove tolerance from TimeWindowChecker (#1047) 2017-07-19 12:33:57 +03:00
Shams Asari
2778e294f3 FiberBox and RetryableException removed as they're not used 2017-07-18 15:14:35 +01:00
Shams Asari
b0c299707b Moved DeclaredField utility to internal and expanded its use 2017-07-18 14:33:09 +01:00
Clinton
0ccfae252f POMs generated by publishing are now correct. (#1055)
* POMs generated by publishing are now correct. The publish extension now requires an explicit call to configure the publishing instead of waiting until after evaluation. This prevents evaluation order issues with the artifact renaming code that causes the POM to have the original, incorrect, artifact names.

* Fixed new test compile issues caused by removal of some dependencies in test utils that caused webserver code to be automatically included in any project also compiling test utils.
2017-07-18 12:34:56 +01:00
Shams Asari
561a329064 Moved the various extension methods for creating Durations from Utils.kt to KotlinUtils.kt 2017-07-18 10:26:53 +01:00
josecoll
65ce5fec4b Fixed Vault Query over RPC using custom attributes. (#1066)
* Implemented Kryo custom serializers for Field and KProperty types.

* Adjusted KPropertySerializer to use kotlin member properties upon read() due to failing RPC tests.
Added additional Kotlin and Java tests (CordaRPCClient, StandaaloneCordaRPCClient)
Annotated schemas to be CordaSerializable (required when referencing as KProperty in custom queries).
Cleanup some outstanding compiler warnings.

* Added client RPC Java integration and smoke tests to build.

* Clean up compiler warnings in Java tests.

* Fixed incorrect assertion expectation.

* Backed out Field and KProperty custom serializers.

* Backed out Field and KProperty custom serializers.

* Store VaultQueryCustom custom column references as name and class (from Java Field and Kotlin KProperty1 types respectively).
Custom serialization of Field and KProperty type no longer required.

* Removed blank lines as per RP review comments.
2017-07-17 18:20:02 +01:00
Matthew Nesbit
8596f1cc17 AttachmentClassLoader isn't directly exposed on the api, so move together with serialisation. (#1060) 2017-07-17 17:56:02 +01:00
Shams Asari
c62387f3f6 Fixed TransientProperty so that it actually works during (de)serialisation 2017-07-17 16:27:54 +01:00
Shams Asari
195189070a Moved the Path extension methods that were in Utils.kt into the internal package 2017-07-17 16:01:19 +01:00
Joel Dudley
b37c73827f Splits verifySigs into verifySigsExcept and verifyRequiredSigs to clarify usage. 2017-07-17 15:42:08 +01:00
Matthew Nesbit
7d1d5cc0f8 Merge pull request #1050 from corda/mnesbit-services-in-separate-files
Put Services.kt in separate files
2017-07-17 14:29:01 +01:00
Katelyn Baker
eeb66b68b8 Merge pull request #1005 from corda/kat-serialization
Integrate class synthesis with the serialisation framework
2017-07-17 12:58:53 +01:00
Ross Nicoll
b7ee7d42a5 Enable anonymisation in integration testing tutorial
Enable anonymisation in integration testing tutorial, and as a requirement fix a bug where the counterparty anonymous
identity was not registered by `TransactionKeyFlow`.
2017-07-17 10:24:20 +01:00
Ross Nicoll
dfbf06a66d Flow cleanup
* Change "for who" to "for whom"
* Don't pass parties to FinalityFlow, it can derive them automatically
* Create a basket of nodes instead of individually assembling nodes
* Switch two party trade flow tests to generate a full anonymous identity
2017-07-17 10:24:20 +01:00
Matthew Nesbit
7a06d941c4 Put Services.kt in clear files, so that at a glance people can see what public services there are.
Fix include

Correct doc links after code movement
2017-07-17 09:34:07 +01:00
Andrius Dagys
7aafcf8c57 Prevent exception causes showing up as null in logs (#1018)
* Passing exception messages via constructor instead of overriding toString
2017-07-14 20:40:21 +01:00
Mike Hearn
a56540a3d6 Fix support for large attachments by de-batching tx/attachment fetch. This is a workaround until the upstream Artemis large message streaming bugs are fixed. 2017-07-14 18:21:33 +01:00
Mike Hearn
2cbdb719c6 Minor: move some test functions for making zips out of the global namespace. 2017-07-14 18:21:33 +01:00
Shams Asari
6ba3ae870c Merge pull request #1046 from corda/shams-flow-session-exception-rename
Renamed FlowSessionException to UnexpectedFlowEndException
2017-07-14 17:10:08 +01:00
Ross Nicoll
42f217f212 Add extension hooks to FinalityFlow
Add extension hooks to FinalityFlow to support different behaviours depending on whether the node knows who all of the parties in a transaction are.
2017-07-14 16:54:39 +01:00
Katelyn Baker
0bfe1de3ba Review comments
* Rename some functions to more descriptive names
 * Remove some egregious whitespace
 * Revert some changes that were a dangling holdover from an aborted
   refactoring - put it back how it was
2017-07-14 15:21:46 +01:00
Shams Asari
ae01d658b6 Renamed FlowSessionException to UnexpectedFlowEndException 2017-07-14 15:14:54 +01:00
szymonsztuka
05327f3826 decouple Exposed (#1028)
Exposed library decoupled from transaction management and JDBC connection creation for Hibernate and ReQuery
2017-07-14 14:39:59 +01:00
Katelyn Baker
86902e6356 Review comments
* Move all alterations on the amqp schema object out of the actual
  amqp/Schema file and have them live in the carpenter as extension
  functions
* Move carpenter exceptions to their own file
* Rename the schema name corrupter to the name mangler
* reduce whitespace
* alter comment style
2017-07-14 10:40:48 +01:00
Katelyn Baker
5ab26dd275 Update to account for nullability awareness in the carpenter 2017-07-14 10:38:29 +01:00
Katelyn Baker
c29673a4a4 Tidy up 2017-07-14 10:35:33 +01:00
Katelyn Baker
4dd37f009e Integrate with the carpenter now it's in core 2017-07-14 10:35:33 +01:00
Katelyn Baker
9ab6a72ea8 Carpenter bug fixes
Squashed commit messages:
	* Nested schema creation now works with dependencies recursvly created in
	  the carpenter

	* Remove spurious prints from tests

	* Remove warnings

	* Don't add cladd member dep by name

	  Since that's the name of the field, not the type we depend on. If we do
	  we'll never actually be able to craft the type as the dependency chain
	  will be horribly broken

	  Various bug fixes

	* Fix merge issue where types weren't being seen as Prims

	* IntelliJ auto code cleanup / reformat

	* Whitespace changes

	* Add comment blocking as I like seeing it in files
2017-07-14 10:35:33 +01:00
Katelyn Baker
d76c1e75a4 Carpenter / amqp syntesis tidyup
- squashes a lot of WIP / rebase / code reformat commits
2017-07-14 10:35:33 +01:00
Katelyn Baker
b4a62722fc Add recursive dependency resolution to schema generation
A complete amqp schema can now be used to generate a set of carpetner
schemas representing all of the classes not found on the deserialzing
end.

A dependency and depdendent chain is setup such that all classes are
created in the order required

Squashed commit messages:
	* IntelliJ reformat of the code

	* Merge the interface synthesis changes and rebase onto the tip of master

	  Somethign is very broken in the AMQP -> Carpenter schema code but want a
	  commit so I at least know the actual carpenter is merged

	* Nested schema creation now works with dependencies recursvly created in
	  the carpenter

	* Unit test fixes

	* Remove spurious prints from tests

	* Remove warnings

	* Don't add cladd member dep by name

	  Since that's the name of the field, not the type we depend on. If we do
	  we'll never actually be able to craft the type as the dependency chain
	  will be horribly broken

	  Various bug fixes
2017-07-14 10:35:33 +01:00
Katelyn Baker
ce172887d0 Unit Tests for the amqp -> carpenter schema
Squahed commit mesages:
	* Better tests
	* WIP
	* WIP
2017-07-14 10:35:00 +01:00
Katelyn Baker
4cbf31681b Initial work towards integrating the serializer with the carpenter
Unit tests that pull out the envelope from a deserialsed object (which
we have already serialised) then using the AMQP schema contained within
convert that to a carpenter schema and build an object

Currently testing only simple classes with a single type member

Squashed merge commits:
	* Fix for the type issue in the SerializerFactory

  	  Needs to pull in the actual Java types otherwise we use the Kotlin types
	  as the map keys which will never correspond to the java types that the
	  wrapper wraps around the primitive before doing a map lookup

	  Boolean just doesn't seem to work as pulling that in starts breaking
	  Kotlin and Character also seems broken. There is a fix for this also on
	  Rick's branch so pushing this in for now and can use his actual changes
	  when they're available on Master

	* Better tests

	* Add support for sub classes known to the JVM

	* Initial work towards integrating serializer with the carpenter

	  Unit tests that pull out the envelope from a deserialsed object (which
	  we have already serialized) then using the AMQP schema contained within
	  convert that to a carpenter schema and build an object

	  Currently testing only simple classes with a single type member
2017-07-14 10:28:36 +01:00
Katelyn Baker
e48c1c1689 Merge pull request #1042 from corda/carpenterBeans
Fix toString generated method that breaks Introspection for BEANS
2017-07-13 18:40:24 +01:00
Shams Asari
a49baddd4b Moved KeyStoreUtilities out of core and into node 2017-07-13 16:54:30 +01:00
Katelyn Baker
5438e82e68 Merge pull request #1029 from corda/kat-makePutObjectExtensible
Make serialise putObject function an open function
2017-07-13 16:38:55 +01:00
Katelyn Baker
056811845b Review Comments - rename putObject to writeSchema 2017-07-13 14:23:08 +01:00
Katelyn Baker
0d0a6d7966 Fix toString generated method that breaks Introspection for BEANS
Pass signature as null, not empty string, otherwise the class asm isn't
correct. Using javap at the command line prior to the fix yields

public class MyClass implements
net.corda.core.serialization.carpenter.SimpleFieldAccess {
    protected final java.lang.Integer a;
        descriptor: Ljava/lang/Integer;
    public MyClass(java.lang.Integer);
        descriptor: (Ljava/lang/Integer;)V

    public java.lang.Integer getA();
        descriptor: ()Ljava/lang/Integer;

    public java.lang.Object get(java.lang.String);
        descriptor:
(Ljava/lang/String;)Ljava/lang/Object;
Error: A serious internal error has occurred: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
2017-07-13 13:32:31 +01:00
Shams Asari
e93cdf29f8 Moved the core flows into net.corda.core.flows 2017-07-13 13:27:11 +01:00
Andras Slemmer
eac7db295c Merge remote-tracking branch 'open/master' into aslemmer-enterprise-merge-july-13 2017-07-13 12:35:20 +01:00
Shams Asari
fa4577d236 Cleaned up NonEmptySet and expanded its usage in the codebase 2017-07-13 12:32:33 +01:00
Konstantinos Chalkias
ce06ad3878 Remove DigitalSignature.LegallyIdentifiable
Remove DigitialSignature.LegallyIdentifiable
2017-07-13 11:24:33 +01:00
Ross Nicoll
773aa28873 Clean up IssuerFlow
* Switch to using anonymous party as recipient
* Enable anonymisation for issuance as well as move in issuer flows.
* Pass notary into issuer flow rather than taking a notary at random from the network map.
* Enable anonymisation in Bank of Corda RPC test
* Parameterize issuer flow tests into anonymous and deanonymised versions
2017-07-13 11:23:56 +01:00
Shams Asari
7eed258bcb Fixed incorrect package declarations in CommonSchema and VaultSchema 2017-07-12 20:04:28 +01:00
Shams Asari
6e570b4d65 Moved dummy stuff from core into test-utils 2017-07-12 18:11:57 +01:00
Katelyn Baker
534f60dc57 Make serialise putObject function an open function
For testing I need to be able to mess with the schema before it gets
added to the envelope, extract the function where that happens and make
it open so the tests can do what they want
2017-07-12 14:37:02 +01:00
Patrick Kuo
78ecff7933 Added composite key provider for storing composite keys in keystore (#1006)
* Add unit tests around decoding composite keys

(cherry picked from commit 9ccdd8e)

* Start writing a Composite signature scheme

(cherry picked from commit 72ac3a5)

* Composite key serialisation

* refactoring

* * Address PR issues

* * Address PR issues

* * Address PR issues

* * Address PR issues

* fix up after rebase
2017-07-12 12:13:29 +01:00
josecoll
5f7b8f6ec3 Vault Query Pagination simplification (#997)
* Pagination improvements (fail-fast on too many results without pagination specification)
* Fix incorrectly returned results count.
* Performance optimisation: only return totalStatesAvailable count on Pagination specification.
* Changed DEFAULT_PAGE_NUMBER to 1 (eg. page numbering starts from 1)
* Changed MAX_PAGE_SIZE to Int.MAX_VALUE
* Fixed compiler WARNINGs in Unit tests.
* Fixed minimum page size check (1).
* Updated API-RST docs with behavioural notes.
* Updated documentation (RST and API);
2017-07-12 09:53:15 +01:00
Katelyn Baker
057fa0443b Remove debug println that snuck past code review 2017-07-11 14:42:22 +01:00
Shams Asari
7caee508ec Refactored ErrorOr into Try, with Success and Failure data sub-classes, and moved it into core.utilities 2017-07-11 12:10:38 +01:00
Patrick Kuo
7e8de79848 Legal name validation for X500Name (#983)
* * Legal name validation for X500Name while loading from config file.

* * Removed unintended changes.
2017-07-11 12:09:30 +01:00
Konstantinos Chalkias
d52b0e5db9 NodeAndWeight deterministic comparator (#1003)
NodeAndWeight deterministic ordering by comparing hashes of public keys when required.
2017-07-11 10:18:22 +01:00
Katelyn Baker
5b78863e57 Merge pull request #942 from corda/kat-carpentty
Add array support to the class carpenter
2017-07-10 17:24:28 +01:00
josecoll
c81ef7eb93 Vault Query Sort by StateRef (or constituents: txId, index) (#990)
* Provide sorting by state reference (and individual constituents of: txId, index)

* Fixed formatting.

* Updated import following rebase from master.

* Updated import following rebase from master.
2017-07-10 12:49:00 +01:00
Katelyn Baker
fd3a827438 Annotation testing 2017-07-10 11:50:24 +01:00
Shams Asari
f718acb939 Moved CordaException.kt to base core package 2017-07-10 10:36:59 +01:00
Andrzej Cichocki
d2869e4f45 Refactor then/success/failure (#984)
to make ListenableFuture replacement less fiddly.
2017-07-07 15:50:50 +01:00
Shams Asari
fb0a043485 Moved dummy contracts to test-utils 2017-07-07 15:16:29 +01:00
Andrzej Cichocki
cefa14507a Retire HostAndPort (#962)
* Don't attempt to parse a resolved InetSocketAddress toString
* A mock node isn't reachable via an address
2017-07-07 15:11:07 +01:00
Shams Asari
7822118835 Moved random63BitValue() to CryptoUtils 2017-07-07 12:19:55 +01:00
Shams Asari
984fbd8995 Moved loggerFor and other useful Kotlin extensions into KotilnUtils.kt and moved LogHelper into test-utils 2017-07-07 00:14:20 +01:00
Shams Asari
8f1529b863 Moved ByteArrays.kt to core.utilities 2017-07-06 17:58:18 +01:00
Katelyn Baker
c1cd7d6b79 Take out blanket import of Character TYPE 2017-07-06 17:03:29 +01:00
Shams Asari
fc97fb2368 Removed DeserializeAsKotlinObjectDef interface as serialisation of Kotlin objects is now handled automatically 2017-07-06 15:57:20 +01:00
Shams Asari
8fc76b3803 Moved VersionInfo out of core and into node 2017-07-06 14:31:43 +01:00
Joel Dudley
3063debd98 Moves to builder syntax for TxBuilder. Adds attachments and time-windows to withItems. 2017-07-06 14:23:43 +01:00
Katelyn Baker
81b84ebf5c Review comments
Name Exceptions <blah>Exception
Swap null / non null annotations onto the correct classes
Don't shadow parameters with local vars
Explicitly handle Character Type
2017-07-06 14:09:14 +01:00
Shams Asari
c6e165947b Added background checkpoint checker to make sure they're at least deserialisable 2017-07-06 13:11:46 +01:00
Shams Asari
54aa4802f9 Clarifying the need for a single Party c'tor for InitiatedBy flows 2017-07-06 12:31:22 +01:00
Shams Asari
182c9cceb5 Cleaned up the QueryCriteria API to be more Java friendly 2017-07-06 11:08:54 +01:00
josecoll
44f57639d2 Vault Query Aggregate Function support (#950)
* Partial (ie. incomplete) implementation of Aggregate Functions.

* Completed implementation of Aggregate Functions (sum, count, max, min, avg) with optional grouping.

* Completed Java DSL and associated JUnit tests.

* Added optional sorting by aggregate function.

* Added Jvm filename annotation on QueryCriteriaUtils.

* Added documentation (API and RST with code samples).

* Incorporating feedback from MH - improved readability in structuring Java and/or queries.

* Remove redundant import.

* Removed redundant commas.

* Streamlined expression parsing (in doing so, remove the ugly try-catch raised by RP in PR review comments.)

* Added JvmStatic and JvmOverloads to Java DSL; removed duplicate Kotlin DSL functions using default params; changed varargs to lists due to ambiguity

* Fix missing imports after rebase from master.

* Fix errors following rebase from master.

* Updates on expression handling following feedback from RP.
2017-07-06 10:57:59 +01:00
Konstantinos Chalkias
baaef30d5b CompositeKey validation checks (#956) 2017-07-05 16:14:18 +01:00
Katelyn Baker
32543021c9 Review comments and fix warnings 2017-07-05 14:26:03 +01:00
Shams Asari
2973755bc8 Moved TestConstants.kt from core into test-utils 2017-07-05 11:54:43 +01:00
Ross Nicoll
3176ecfecf Clean up transaction key flow
* Identities returned from TxKeyFlow were backwards, meaning keys were incorrectly assigned to the remote and local identities. Added unit test covering this case and corrected the flow logic.
* Rename TxKeyFlow to TransactionKeyFlow
* Correct registration of transaction key flows
* Move TransactionKeyFlow.Provider into CoreFlowHandlers
* Move TransactionKeyFlow.Request up to the top level class instead of being a class within an object.
* Remove AbstractIdentityFlow and move the validation logic into individual flows to make it clearer that it's registering the received identities.
* Cash flows now return the recipient identity instead of full identity lookup, as this is what
the caller actually needs and simplifies a lot of cases.
2017-07-05 11:39:08 +01:00
Katelyn Baker
7d8d17ac08 Small tidyup 2017-07-05 11:05:27 +01:00
Joel Dudley
65f385953f Changes the name of the addTimeWindow method to setTimeWindow. 2017-07-05 10:57:18 +01:00
Katelyn Baker
6dc7f694e4 Add explicit support for nullable types
Remove prohibition against non string object classes such as arrays

Squashed Commmits:
	* Tidyup whitespace
	* WIP
	* Review Comments
	* WIP - adding concept of nullabltily into the carpenter
	* Add explicit nullable and non nullable fields
	* Rebase onto master, fix package names in carpenter
2017-07-05 10:47:26 +01:00
Matthew Nesbit
7eaac8a306 Merge pull request #968 from corda/mnesbit-tidy-test-classes
Move test classes out of api namespaces
2017-07-05 10:20:03 +01:00
josecoll
f732d2cefe FIX Vault Query defaults to UNCONSUMED in all QueryCriteria types (#958)
* Fix https://github.com/corda/corda/issues/949 by providing a default StateStatus argument to all QueryCriteria types.

* Abstracted Common Criteria into its own abstract data class + associated visitor.

* Incorporating feedback from RP PR review.
2017-07-05 10:01:35 +01:00
Matthew Nesbit
3ef5c39633 Put test classes into clear namespaces, so that they don't pollute the API. 2017-07-05 09:14:22 +01:00
Katelyn Baker
88a8eabd60 Merge pull request #946 from corda/carpenterTestingBootstrap
Add secondry deserializer to return amqp envelope
2017-07-05 08:48:07 +01:00
Katelyn Baker
a33d5dcd2f Add Tests to class name 2017-07-04 20:24:00 +01:00
Shams Asari
46e23b7716 Clean up of ServiceHubInternal, including how it's created in AbstractNode 2017-07-03 17:05:36 +01:00
Katelyn Baker
56402c744a Merge pull request #955 from corda/kat-carpenterMoveToCore
Move carpenter into core
2017-07-03 16:53:03 +01:00
Joel Dudley
7df8c50167 Adds helper methods to grab a LedgerTx or verify a SignedTx. Deprecates builder signing methods. 2017-07-03 15:53:48 +01:00
Katelyn Baker
88ed35636c Fix mis-move 2017-07-03 15:04:51 +01:00
Katelyn Baker
f11f17e2aa Move carpenter into core 2017-07-03 14:42:59 +01:00
Katelyn Baker
fcba32700c Review comment changes 2017-07-03 12:12:28 +01:00
Katelyn Baker
04d7432622 Add secondry deserializer to return amqp envelope
Useful for testing the carpenter by giving access to a cosntructed
envelope rather than manually building one every time
2017-06-30 14:12:36 +01:00
Mike Hearn
82f68f212a Minor: add another emoji, import a couple of changes for Enterprise 2017-06-30 13:06:46 +01:00
Shams Asari
a08f701dc5 Removed the StorageService and puts its components directly into the service hub 2017-06-30 09:37:29 +01:00
Andrius Dagys
00b272906a Decouple notary implementations from AbstractNode. Allow custom notaries to be provided via CorDapps. 2017-06-29 18:05:44 +01:00
Ross Nicoll
083b8265b5 Restructure Crypto to use ASN.1 algorithm identifiers
Remove use of Sun internal APIs and algorithm identifiers (which are incomplete and non-standard) in Crypto. Also eliminates uncertainty about which signature scheme is being used (and therefore iterating through several to find the correct one).
2017-06-29 14:36:39 +01:00
Rick Parker
5a45459b9d AMQP serialization part 3: some custom serializers, integration with Kryo (disabled) (#859) 2017-06-29 14:03:41 +01:00
Ross Nicoll
b791530b28 Correct trackBy() call
Correct trackBy() call on vault service, which should call _trackBy() but previously called _queryBy()
2017-06-29 12:13:33 +01:00
Ross Nicoll
1a4965c294 Change CashIssueFlow to use anonymous identity
* Add functions for:
    * Retrieving nodes via their legal identity
    * Filtering a set of public keys down to those the node has corresponding private keys for
* Modify contract upgrade flows to handle identifying participants after an anomymisation step
* Correct terminology: "party who" -> "party which"
* Modify CashIssueFlow and CashPaymentFlow to optionally use an anonymous identity for the recipient.
2017-06-28 13:47:50 +01:00
Andrzej Cichocki
e5395fe1b7 Enforce node death on failure to register with network map (#905)
* Give up polling when result future cancelled
2017-06-28 12:07:53 +01:00
Patrick Kuo
c3ca2744aa Replace Vault.PageAndUpdates with DataFeed data class (#931)
* Replace kotlin Pair with DataFeed data class

* remove unintended changes

* Replace Vault.PageAndUpdates with DataFeed data class

* Remove PageAndUpdates
2017-06-28 11:29:14 +01:00
Patrick Kuo
e02c37c06d Replace kotlin Pair with DataFeed data class (#930)
* Replace kotlin Pair with DataFeed data class

* remove unintended changes

* minor fix

* address PR issues
2017-06-28 11:06:06 +01:00
Andrzej Cichocki
0aadc037ef Make logging available in IntelliJ between gradle clean and assemble (#929)
* Enforce absence of node from client rpc smokeTest classpath
2017-06-28 09:54:09 +01:00
Katarzyna Streich
58da76c052 Network map redesign: Change field types in NodeInfo, move away messaging data from NodeInfo (#921)
* First stage of changing fields in NodeInfo.

Part of work related to NetworkMapService upgrade. Create slots for
multiple IP addresses and legalIdentities per node.

* NodeInfo stores HostAndPort.

Move information specific to messaging layer away from NodeInfo.
Only HostAndPort addresses are stored. Add peer name - peer handle
mapping to MockNetwork to reflect that change.
2017-06-27 18:14:51 +01:00
Andras Slemmer
4f85026dfc Merge remote-tracking branch 'open/master' 2017-06-27 14:45:30 +01:00
Ross Nicoll
14068f1b96 Enforce certificate constraints on all identities
* Enforce that the identity service must always have a root CA specified, which all identities have
certificates signed by (or intermediaries of). Also adds a certificate store to the identity service
for help building/verifying certificate paths.
* Add a certificate store for the CA certificate and intermediaries
* Use the certificate factory directly to build paths rather than assembling them via an interim
API call. After reducing the complexity of the utility API, it's replacing two lines of code,
at which point it seems better to make the behaviour clearer rather than having a function
hide what's actually going on.
2017-06-23 15:18:13 +01:00
josecoll
1866f6ff7f Align CordaRPCOps Vault Query API's for Java/Kotlin with VaultQuery service equivalents. (#914)
Added Kotlin extension functions for ease of use in simplest case.
Added missing Java contractType class (previously was forced cast of ContractState::class)

Fixed generic typing.

Addressed items raised in SA PR review.

Removed 2 blank lines.

Fixed generics typing.

Updates RST doc and grouped API helpers accordingly.
2017-06-23 14:35:55 +01:00
Konstantinos Chalkias
61a24897fe deriveKeyPair renaming 2017-06-23 13:48:21 +01:00
josecoll
f8ad5c9d10 Vault Query Service JPA implementation (#840)
* Vault Query Service API implementation using JPA Hibernate

Added queryBy(QueryCriteria) Vault API and Junit tests.

Minor cosmetic API changes following rebase.

Fixes following rebase from master

Upgraded to requery 1.3.1

WIP - removed 'latestOnly' from LinearStateQueryCriteria

WIP - CommercialSchemas V2, V3, V4 testing

WIP - sort out generics handling.

WIP - most general queries completed.

WIP - join queries, contractStateType derivation

WIP - refactoring Requery

WIP - refactored VaultService to extract a VaultQueryService interface (and associated Requery implementation).

WIP - HibernateVaultQuery implementation

WIP - Re-structured all Schema definitions (requery/jpa) and make Hibernate Config reusable.

WIP - Multi-version schema testing, hibernate query testing.

WIP - Custom Criteria and Fungible Criteria impl & testing.

WIP - Kotlin Comparable Generics error

WIP - Party queries all working now

WIP - All VaultQueryTests now working (refactored for AND / OR composition)

WIP - added schema registration in CordaPluginRegistry to enable custom vault queries on arbitrary schemas.

WIP - added new default Sort NULL order to be NONE + added lots more tests for Logical Operator testing.

Mostly identity fixes following rebase from master.

Exception handling and public API cleanup in prep for PR.

Additional tests for Logical Operators; additional tests for NULLS sort ordering; additional logging;

Additional parser to handle Nullable attribute values; added Unary and Collection logical expression handlers

Lots of cleanup: participants; trackBy interfaces; additional fungible tests; parser cleanup and improved support for Java

Removed all traces of Requery implementation.

Further minor cleanup and Junit test fix.

Final identity and schema related identity clean-up.

Revert unrelated changes.

PR review updates: blank lines, isRelevant.

Fixed wiring of updatesPublisher for dynamic trackBy queries.

PR review changes: multi-versioned schema samples and associated dummy contracts moved to test packages.

Fixed problem with sorted queries (not specifying any filterable criteria).

PR review: minor updates to address RP comments.

Typesafe custom query criteria

Cleanup: remove redundant tests.

Further clean-up and make all Java test work successfully.

Remove debugging print statements.

Rebased from master - changes required due to DealState module change.

fixed broken assertion caused by DealState ordering change (different package)

Fixed transaction demarcation issue causing "java.lang.IllegalStateException: Was not expecting to find existing database transaction on current strand"

trackBy() now filters on ContractType and StateStatus (CONSUMED, UNCONSUMED, ALL)

Added tests to exercise RPCOps trackBy and queryBy (RPC smoke test and CordaRPCOps)

Added additional @CordaSerializable annotations.

Updated documentation and referenced sample code.

Added deprecation annotations.

Re-added missing deprecation annotation.

Hibernate debug logging is now configurable and disabled by default.

Introduced common Sort attributes based on the node schemas.

Completely removed NULL_HANDLING sort parameter as this is not supported in JPA.

Revisited and fixed usage of @CordaSerializable.

* Minor fix following rebase from master.

* Remove blank line as per RP PR feedback request.

* Minor Java documentation and example clean-up.

* Disable BFT Notary Service tests.
2017-06-22 10:35:49 +01:00
Mike Hearn
ca8f5050cf Merge branch 'master' into mike-enterprise-merge-june-20th 2017-06-21 19:49:33 +02:00
Ross Nicoll
19ff72a411 Correct ISO country code in names 2017-06-21 14:04:22 +01:00
Shams Asari
a4e4ecff8a Moved FlowStateMachine into an internal package 2017-06-21 12:19:09 +01:00
Andrzej Cichocki
ef74a0a618 Fix the command line notary demos (#875)
* The fancy classloader setup in Cordform.loadCordformDefinition is defeated by certificates in 2 ways
** Class cast when creating a cert (via TestConstants) in a CordformDefinition
** Some issue when persisting a cert in ServiceIdentityGenerator
* This PR is a quickfix to get the demos working again
* Proper fix (not this PR) is to work out why it's not enough for eddsa to be in the project runtime classpath - if it can be removed from the gradle environment that ought to properly fix the above problems
2017-06-21 10:25:11 +01:00
Ross Nicoll
d54f66ccb0 Replace certificate path generation
Use the certificate factory directly to build paths rather than assembling them via an interim
API call. After reducing the complexity of the utility API, it's replacing two lines of code,
at which point it seems better to make the behaviour clearer rather than having a function
hide what's actually going on.
2017-06-20 17:59:38 +01:00
Ross Nicoll
b7bec90fae Add DER format encoding for CompositeKey
Add extremely rough DER format encoding for CompositeKey so that they can be used in X.509 certificates,
and switch service identity generator to using the proper identity cert for signing.
2017-06-20 16:39:11 +01:00
Shams Asari
155bb029da Cleaned up the trader, irs and simm demos so that things like the driver are used in test so that the node module isn't a compile dependency.
This has resulted in some classes moving into core, such as ClockUtils and FiberBox.
2017-06-20 16:02:51 +01:00
szymonsztuka
4195adfb7b Move Web API from CordaPluginRegistry to new class WebPluginRegistry (#864)
Move Web API from CordaPluginRegistry to new class WebPluginRegistry
2017-06-20 15:29:35 +01:00
Matthew Nesbit
beb0f876f5 Merge pull request #868 from corda/mnesbit-java-accessible-merkle-api
Java accessible API for merkle trees
2017-06-20 11:22:43 +01:00
Konstantinos Chalkias
cd0da5e093 DKG - Remove the modular reduction which may induce bias (#867)
Remove the modular reduction which may induce bias in DKG
2017-06-20 11:19:03 +01:00
Andrzej Cichocki
52c7100267 BFT fixes (#844)
* Fix BFT config that only worked with clusters of size 4
* Shutdown BFT properly so that tests can run back to back in theory
* Wait for initial connection between client and all replicas before touching it
* Add test for non-trivial BFT cluster
* Shutdown NodeBasedTest nodes in parallel, as BFT shutdown time is non-trivial
* Overlapping ports check no longer assumes all on localhost
* Fix overlapping ports test to actually check the messages
2017-06-20 11:01:52 +01:00
Katarzyna Streich
20403d806a Cleanup of the explorer code related to internal flow view work. (#832)
Cleanup of the explorer code related to internal flow view work.
Changes in simulation, widgets, minor visual.
2017-06-20 10:45:42 +01:00
Matthew Nesbit
d2aaba2820 Java accessible API for merkle trees
Respond to PR comment
2017-06-20 10:02:37 +01:00
Ross Nicoll
b874b3e62a Correct identity service tests
* Correct path composition in identity service tests
* Correct identity service certificate path verification to handle the owning certificate being anywhere in the path, rather than expecting it to be trust root
2017-06-16 16:15:23 +01:00
Ross Nicoll
56ad64c524 Correct construction of anonymous parties
Correct construction of anonymous parties to use the first certificate (the target)
rather than the last (the trust root). Worked because early tests used single certificate
paths, but later work introducing multi-certificate paths reveal it's rather broken.
2017-06-16 16:10:51 +01:00
Matthew Nesbit
1f42997915 Merge pull request #850 from corda/mnesbit-cleanup-financetypes
Move all advanced finance types into finance module.
2017-06-16 14:56:49 +01:00
Joel Dudley
bfd02f5d78 Adds a constructor overload to the TransactionBuilder for Java use. 2017-06-16 13:53:10 +01:00
Matthew Nesbit
6933c8fda3 Move all advanced finance types into finance module.
Fixup after rebase

Also pull in the interpolator code, which is used for financial calculations.

Fix up rebase
2017-06-16 11:19:24 +01:00
Matthew Nesbit
a970bc1bb1 Merge pull request #851 from corda/mnesbit-delete-ambigious-timewindow
Remove ambiguous TimeWindow class
2017-06-16 10:09:34 +01:00
Scott James
aab536646f Fixed various compiler warnings, mostly removing unused parameters and replacing calls to getDevX509Name with getX509Name with specific data, this should be a nullop. Remainign compiler warnings will require changing semantics of code 2017-06-16 09:59:52 +02:00
Clinton
a6853be035 Merge pull request #834 from corda/clint-irswebfix
IRS web demo now shows fixings + general IRS fixes
2017-06-15 17:49:43 +01:00
Matthew Nesbit
156a9515ad We had two TimeWindow classes in Corda core, which has caused ambiguity issues for some users. Delete one and merge functionality.
Address PR comment
2017-06-15 16:52:53 +01:00
RogerWillis
0cb41c55a5 Marked TransactionBuilder.signWith() as deprecated. 2017-06-15 14:45:59 +02:00
Andrzej Cichocki
77ab6d4af3 Refactoring related to BFT state persistence/transfer (#829)
* Remove unused type param
* If we drop Runnable we can use conciser syntax
* Sometimes we need the fully-fledged object, so retire separate handle class
* Implement IntelliJ suggestion
2017-06-14 09:57:46 +01:00
Konstantinos Chalkias
ec0e0dd442 Deterministic Key Generation for ECDSA and EdDSA (#729)
Deterministic Key Derivation for ECDSA R1/K1 and EdDSA

* DKG description and comments

* Removing a (confusing) not-required comma in comments.

* rename deterministic and generate to derive
2017-06-13 21:55:55 +01:00
Konstantinos Chalkias
56bad3a9b4 Blacklist implementation for internal Kryo
Blacklist support for internal Kryo, supporting inheritance and forciblyAllowed classes.
2017-06-13 17:39:54 +01:00
Mike Hearn
a9b794ace5 Cleanup: add an extension function to X509CertificateHolder and use that instead of the verbose JcaX509CertificateConverter construct everywhere. 2017-06-13 17:11:01 +02:00
Mike Hearn
ccf43a8e17 Support fuzzy matching for identities.
Matching can be done with case insensitive substrings in the identity service, RPC and shell. In future cleverer matching should be possible, e.g. using Lucene or RDBMS free text search features.
2017-06-13 16:19:55 +02:00
Katarzyna Streich
608550c920 Change tabs to search field in state machine view. Some carving of UI. 2017-06-12 17:37:39 +01:00
Katarzyna Streich
c734f625ad Add StateMachineViewer and data model to explorer.
Add state machine details with flow result or error, flow initiator, flow name and progress.
Split flows into categories: in progress, errored, done.
2017-06-12 17:37:39 +01:00
Richard Green
70e7a94310 Interim checkin 2017-06-12 17:37:38 +01:00
Ross Nicoll
a3fd54bdb0 Modify generateExit to return full set of signing keys
Modify generateExit to return full set of signing keys in preparation for anonymity work meaning
that owner and issuer keys are typically not the same.
2017-06-12 15:49:35 +01:00
Mike Hearn
782d4bd731 Merge commit '246de55433f747707b2d0dd6299437c664ea933d' into mike-enterprise-remerge
Includes API updates to the doorman code.
2017-06-12 16:25:30 +02:00
josecoll
b5a1cb5109 Removed duplicate identity attribute (parties) from DealState. (#820)
All references to 'parties' now refer to the inherited 'participants' attribute from ContractState.

Samples: all duplicate references to `parties` now changed to `participants`.
2017-06-09 17:33:04 +01:00
Clinton Alexander
5fdd57ec48 WIP - squash me. 2017-06-08 18:29:26 +01:00
Ross Nicoll
35b0ceac0b Clean up cash tests
Clean up cash tests ahead of anonymisation work. This simplifies some boiler plate setup/teardown
and ensures idenities and flows are correctly registered.
2017-06-06 17:09:32 +01:00
Shams Asari
afa3efb308 Fixes relating to testing flows and services.
Fixed issue where Corda services installed in unit tests were not being marked as serialise as singleton. Also the driver now automatically picks up the scanning annotations. This required moving the NodeFactory used in smoke tests into a separate module.
2017-06-06 15:22:43 +01:00
Clinton
08cbcac40c Corda publications and JARs now have cord or corda at the start. (#749)
Core corda publications and JARs now have cord or corda at the start (excluding gradle plugins). Removed an unnecessary dependency on test-utils in node-schemas to prevent an evaluation order bug in gradle.
2017-06-06 15:05:47 +01:00
Mike Hearn
f4321affad DemoBench: enable emoji in the terminal when built with a JetBrains JRE. 2017-06-06 14:55:09 +02:00
Andrzej Cichocki
c2ab4cf26f Replace mapToArray with Streams-based code (#739)
and you can now do (1..10).stream()...
2017-06-06 11:02:26 +01:00
Andrzej Cichocki
101e96d8d7 Rename net to network (#773)
* So net no longer interferes with IntelliJ auto-import of net.* packages
* Use mockNet for MockNetwork to avoid clashing with Node network
2017-06-05 14:00:14 +01:00
Joel Dudley
e5fba5d0af Docsite reorg ahead of beta launch. 2017-06-05 13:37:23 +01:00
Andrzej Cichocki
51ea9fec1a IRS demo fixes (#782)
* Increase max network map request size so the notary can register
* Suppress oracle service installation errors in non-oracle nodes
* Make demos automatically build capsule jars
2017-06-02 16:23:05 +01:00
Andrzej Cichocki
c510e67ed5 Move ShutdownHook to node-api. (#770) 2017-06-02 15:32:20 +01:00
Katarzyna Streich
6104b107c0 Fix how network visualiser displays node X500 names. (#785)
* Fix how network visualiser displays node X500 names.

* Change locations of test nodes, so when used for explorer map visualisation not all of them are stacked one on another in London.
2017-06-02 14:51:40 +01:00
Ross Nicoll
e2214c95b4 Change PartyAndCertificate to an aggregate class (#778)
Change PartyAndCertificate to an aggregate class instead of a subclass of Party. This reduces the changes compared to M11, as well as avoiding risk of accidental serialization of a PartyAndCertificate (which may be very large) where a Party is expected.

Cleaned up initial nodes known to the identity service, in particular mock nodes now know about themselves; previously full nodes registered themselves but mock nodes did not.
2017-06-01 18:54:44 +01:00
Joel Dudley
f646936ab8 Updates TwoPartyTradeFlow to use the CollectSignaturesFlow. 2017-06-01 11:08:39 +01:00
Rick Parker
d3f027cea8 Custom serialiser support for AMQP (#741) 2017-05-31 18:33:57 +01:00
Andrzej Cichocki
4bd38d381a Fix tests that check ports are bound/unbound (#756)
* Specifically, DriverTests and WebserverDriverTests
* RPCDriver.startRpcBroker now waits for port to be unbound, as was probably intended
* Explicitly drop network map future while ensuring the error is logged
2017-05-31 17:12:25 +01:00
Katarzyna Streich
39fdb353ad Remove nearestCity from node configuration. (#721)
* Fix bug in demobench. Explorer didn't show correctly location of a node.
There was no nearestCity override in config.

* Remove nearestCity from node configuration. Now information about the location is always taken from
node's legal name. If not present - exception on node startup.

* Add X500Name.locationOrNull that soft fails when location is not in X500 name. Address PR comments.

* Remove unused imports.
2017-05-31 16:07:13 +01:00
Ross Nicoll
34eb5a3b70 Store certificate and path with well known identity (#726)
* Construct standard flows using PartyAndCertificate, and add support for launching
flows that are constructed with PartyAndCertificate or just Party.
* Store PartyAndCertificate in network map service
* Expand identity service to store certificates along with all identities.
2017-05-31 14:45:58 +01:00
Shams Asari
329e5ff17b Introducing InitiatedBy annotation to be used on initiated flows to simplify flow registration.
This removes the need to do manual registration using the PluginServiceHub. As a result CordaPluginRegistry.servicePlugins is no longer needed. For oracles and services there is a CorDappService annotation.

I've also fixed the InitiatingFlow annotation such that client flows can be customised (sub-typed) without it breaking the flow sessions.
2017-05-31 10:50:16 +01:00
Ross Nicoll
0e1e4042dc Add PartyAndCertificate class
Add PartyAndCertificate class for pairing proof of a party's identity with the party.
2017-05-31 09:45:40 +01:00
Ross Nicoll
b6dbd6bbb5 Add docs 2017-05-30 17:05:43 +01:00
Ross Nicoll
c003ec0042 Replace X509Certificate with X509CertificateHolder
Replace X509Certificate with X509CertificateHolder for consistency in implementation of how X.509 certificates
are managed. Using the Java standard class entails the actual implementing class being one of several options
depending how a certificate is built, which makes serialization/deserialization with Kryo inconsistent as some
of these forms cannot be directly built from outside restricted classes.
2017-05-30 17:05:43 +01:00
Ross Nicoll
a8d4dccea4 Infrastructure for confidential identities
* De-anonymise parties in AbstractStateReplacementFlow flows
* Convert transaction key negotiation to a subflow instead of utility functions
* Add serialization support for CertPath
* Restructure cash flows so that a counterparty flow can be added later
2017-05-26 10:00:57 +01:00
Chris Rankin
ea53bab7d7 Forbid internal classes from being serialised. (#655) 2017-05-25 17:18:51 +01:00
Konstantinos Chalkias
9f2b44f8f7 Rename Timestamp to TimeWindow (#706)
Rename Timestamp to TimeWindow + refactoring
2017-05-25 13:18:49 +01:00
Patrick Kuo
246de55433 Create client CA certificate with X509 name constraint (#731)
* The node will be issued a CA certificate with name constraint which will allow the node to create keys with a valid certificate chain.
2017-05-24 16:13:37 +01:00
Andrzej Cichocki
bbe4c170c2 BFT notary demo (#725)
* Rename raft-notary-demo project to notary-demo
* Refactor serialisation filtering to allow BFT SMaRt to work, it no longer relies on the jdk.serialFilter system property
* In NodeBasedTest remove whitespace in node directory names for consistency with cordform and driver
2017-05-24 12:25:06 +01:00
Andrius Dagys
376a9d399f Merge remote-tracking branch 'open/master' 2017-05-24 12:19:49 +01:00
Ross Nicoll
36a091dd6a Add support for X509Certificate and CertPath serialization 2017-05-23 15:42:11 +01:00
Shams Asari
b8755ccdb2 Merge pull request #711 from corda/shams-retryableexception
Made RetryableExeption a FlowException and reverted UnknownFix to be …
2017-05-23 13:56:54 +01:00
Roger Willis
6f9cdb92c7 This function previously ALWAYS returned true providing the checkList wasn't empty. (#727) 2017-05-23 13:04:20 +01:00
Shams Asari
b8eb4448c8 Made RetryableExeption a FlowException and reverted UnknownFix to be retryable 2017-05-23 12:05:55 +01:00
Ross Nicoll
47d3415d20 X509Utilities API changes (#723)
* Add "TLS" to createTlsServerCert() to differentiate it from future work to introduce a non-TLS variant.
*Change to using Java 8 time types for certificate validity - does introduce so unnecessary roundtrips, but makes the code significantly easier to read/follow. In particular avoids opaque integers in the code and replaces them with Duration.
2017-05-22 14:57:22 +01:00
Konstantinos Chalkias
53276c1f06 faster key encoding/decoding and generic converters between key implementations 2017-05-22 11:14:05 +01:00
Mike Hearn
c7b751d6a5 Minor: add another convenience c'tor to FinalityFlow 2017-05-19 16:45:22 +02:00
Mike Hearn
839cc04844 Minor: MappedSchema is now open rather than abstract (it had no abstract members) 2017-05-19 16:45:22 +02:00
Mike Hearn
8d538e14a0 Minor: add a doc for the "using" infix function. 2017-05-19 16:45:22 +02:00
Mike Hearn
3f7acd3c68 Minor: just print the X.500 name in Party toString not base58 key too.
It's kind of annoying to have the big binary blog in the toString, which is often used for UI/debug purposes.
2017-05-19 16:45:22 +02:00
Mike Hearn
980d3455bd Minor: extra javadocs for Timestamp 2017-05-19 16:45:22 +02:00
Mike Hearn
07e01388d2 Minor: add more javadoc 2017-05-19 16:45:22 +02:00
Mike Hearn
a5be12a81b Minor: print org name at startup instead of full X.500 name. 2017-05-19 16:45:22 +02:00
Mike Hearn
1e1ebf1370 In CollectSignaturesFlow wrap ISE/IAE/AE in FlowException so the other side can find out the details of what check failed. 2017-05-19 16:45:22 +02:00
Ross Nicoll
794ce03958 Remove mock identity service
Remove mock identity service and merge it with the in memory identity service. The two services
provide extremely similar functionality, and having two different version for production/test
risks subtle implementation differences. On that note, this patch includes changes to a number
of tests which worked only with mock identity service.
2017-05-19 11:22:47 +01:00
Matthew Nesbit
05a97b11f3 First cut at removing PrivateKey leakage from KeyManagementService
Fixup after rebase

Restore original key property names

Fixup after rebase

Undo extra import that IntelliJ keeps erroneously adding.

Add comments and fix docs for transaction signing.

Fixes after rebase

More fixes after rebase

Address PR requests

Address PR requests
2017-05-18 17:34:04 +01:00
Andrzej Cichocki
c8d71a96f5 One demo definition for both IntelliJ and gradle (#697)
* Raft notary demo now defined in one place that both IntelliJ/driver and gradle/runnodes can run
* New module cordform-common for code common to cordformation and corda
* Add single notary demo
2017-05-18 15:58:35 +01:00
Ross Nicoll
9aa1ac7009 Remove net.corda.core.crypto.Party
Remove net.corda.core.crypto.Party rather than deprecate, as it makes it a lot easier to
understand the change that's happened.
2017-05-16 12:07:14 +01:00
Ross Nicoll
c13a99a2f9 Replaces keys and parties in states with AbstractParty
Switch to using AbstractParty as the standard identifier for parties in
states, so that full parties can be used during construction of
transactions and anonymised parties when the transaction is being added
to the ledger.
2017-05-16 12:07:14 +01:00
Andrzej Cichocki
d3bb040355 Refactoring related to BFT notary demo (#680)
* Fix: Add missing @StartableByRPC to fix the Raft notary demo
* Make loadConfig take a Config object, for cordformation Node
* Unduplicate User.toMap
* Unduplicate WHITESPACE regex, choose possessive form
* Use slash to make a Path
* Remove Companion where redundant
* Remove unused code
2017-05-16 11:30:50 +01:00
Andras Slemmer
f445590cff Address #665, add more leak tests 2017-05-15 15:20:00 +01:00
Andras Slemmer
b192a86a30 Address comments #665 2017-05-15 13:18:45 +01:00
Andras Slemmer
7c3a566197 RPC: call close() on startup failure, add thread leak tests 2017-05-15 13:18:45 +01:00
Konstantinos Chalkias
769ac6d088 SignatureScheme object equality in supported schemes. (#637)
Check SignatureScheme reference equality on crypto operations.
2017-05-12 12:19:12 +01:00
Shams Asari
47c6b9c135 Making use of latest FastClasspathScanner version and cleanup of CollectSignaturesFlow.kt 2017-05-12 10:33:43 +01:00
Roger Willis
6d1462f8eb CollectSignaturesFlow (#560)
* Initial commit for CollectSignaturesFlow, some tests and associated documentation via a new "Flow Library" section of the docsite.

* Refactored the TwoPartyDealFlow to use the CollectSignaturesFlow.

* Added the subclassed CollectsigsFlow to the trader demo, whitelisted it and added a flow initiator for the responder.

* Minor edits to progress tracker.

* Amended as per Rick's comments.

* Generalised this flow, so it now works if more than one signatures have been collected, initially.

* Minor edits to the IRS demo so it uses the CollectSignaturesFlow.

* For debugging purposes...

* Adding CollectsigsFlow support to SIMM Demo.

* Removing debug logging.

* Amended top level comment: transactions can only have one notary.

* Added TODOs as checkTransaction logic is absent.

* Addressed Mike's review comments.

* Minor edit to flow-library docs.

* Updated flow based on Mike's review comments.

* Added two usage examples and updated the tests.

* Made changes to accommodate new CollectSignaturesFlow approach.

* Made changes to SIMM demo to accommodate new CollectSignaturesFlow approach.

* Added abstract check proposal method to two party deal flow.

* Added missing TODOs.

* Addressed Sham's comments.

* Rebased to M11.
2017-05-11 14:37:53 -04:00
Ross Nicoll
edfc4dd7d9 Add certificate path storage to identity service
Add functionality for generating certificate paths from identity
certificates to transaction certificates, validating, storing and
retrieving those certificate paths.
2017-05-11 16:55:23 +01:00
Patrick Kuo
af7ba082a4 Store identity key to keystore with self sign cert (#645)
* Support signing and storing EdDSA key and certificate in java keystore.
2017-05-11 16:53:44 +01:00
Shams Asari
48f58b6dbc Introducing StartableByRPC and SchedulableFlow annotations, needed by flows started via RPC and schedulable flows respectively.
CordaPluginRegistry.requiredFlows is no longer needed as a result.
2017-05-11 14:55:40 +01:00
Andrius Dagys
dfb63231e3 Merge remote-tracking branch 'open/master' 2017-05-11 13:59:02 +01:00
Ross Nicoll
e4a0bc6e11 Move party classes into identity package
Move AbstractParty, AnonymousParty and Party into a new net.corda.core.identity package,
as they're not really cryptography tools, and in preparation for further code coming in
for identity.

Optimize imports on many files to clean up the resulting refactor.
2017-05-11 11:25:59 +01:00
Matthew Nesbit
8aa341dc7b Merge pull request #620 from corda/mnesbit-audit-interface
Create header files for discussion of possible flow audit api.
2017-05-10 16:42:49 +01:00
Matthew Nesbit
540fd746bb Create header files for discussion of possible flow audit api.
Fix compile error

Address PR comments

Change from a general interface to a restricted set of audit event types.

Fixup after rebase
2017-05-10 14:49:11 +01:00
Shams Asari
e75732af91 Making sure non-serialisable objects in FlowException do not interfere with the flow session (#651)
Also TransactionVerificationException no longer has reference to non-serialisable LedgerTransaction
2017-05-10 11:07:28 +01:00
Chris Rankin
d3075928b2 Move FlowHandle implementations back into core so that RPC clients can use them. (#653) 2017-05-09 18:25:43 +01:00
Chris Rankin
bb0ac3253d Move FlowSessionException into core so that it can be serialised. (#654) 2017-05-09 18:09:34 +01:00
Konstantinos Chalkias
5188e672eb Generic PublicKey.toStringShort() (#641)
Generic PublicKey.toStringShort() using the hash of the serialised form.
2017-05-09 14:47:58 +01:00
Konstantinos Chalkias
9362ad28e8 Check that a public key (EC point) lies on its corresponding curve. (#634)
Check that a public key EC point lies on its corresponding curve and it's not point at infinity.
2017-05-09 14:08:34 +01:00
Konstantinos Chalkias
2db31b941f Move keyPairFromEntropy to Crypto.kt (#636)
Move implementation of keyPairFromEntropy to Crypto.kt
2017-05-09 13:00:46 +01:00
Shams Asari
60b1f9b0b2 Merge pull request #639 from corda/shams-initiating-flow-annotation
Introducing InitiatingFlow annotation which has to be annotated by in…
2017-05-09 12:24:33 +01:00
Ross Nicoll
546d96934a Expand X509Utilities
Mark several functions in X509Utilities as @JvmStatic so they're readily accessible from Java.

Add functions for modifying common name of an X.500 name, either direct replacement or adding a postfix.
2017-05-09 10:27:01 +01:00
Shams Asari
221bb81f84 Introducing InitiatingFlow annotation which has to be annotated by initiating flows.
This removes the need for the shareParentSessions parameter of FlowLogic.subFlow. It also has the flow's version number so FlowVersion is now no longer needed.
2017-05-08 20:19:45 +01:00
Patrick Kuo
1f4535bc2e Support signing and storing EdDSA key and certificate in java keystore. (#601) 2017-05-08 17:38:59 +01:00
Matthew Nesbit
c3557e0a68 Merge pull request #640 from corda/mnesbit-flowlogicfactory-internal
Move the implementation of the FlowLogicRefFactory internal
2017-05-08 15:24:41 +01:00
Mike Hearn
8016bc5fcd Detect broken macOS localhost resolution and tell the user how to fix it. 2017-05-08 14:16:20 +02:00
Matthew Nesbit
bfa7d50d37 Move the implementation of the FlowLogicRefFactory internal to the node as it is an implementation detail, not an API. 2017-05-08 11:32:32 +01:00
Andras Slemmer
3a2afcdbb2 #592: Address more comments 2017-05-05 17:10:52 +01:00
Andras Slemmer
34517f653a #592: Address more comments 2017-05-05 17:10:52 +01:00
Andras Slemmer
de88ad4f40 RPC muxing, multithreading, RPC driver, performance tests 2017-05-05 17:10:52 +01:00
Ross Nicoll
25dbac0f07 Change party to hold an X.500 name
Change the legal name of parties to be an X500 name. This ensures that we aren't converting between
common names and X500 names in various places, eliminating substantial scope for error in the conversion
process. As a result, all node names must now be full X500 names, which has impact on most configurations.
2017-05-05 16:13:29 +01:00
Ross Nicoll
b64e7f51f6 Enforce X.500 distinguished names in configuration 2017-05-05 16:13:29 +01:00
josecoll
8c3b9ac589 Vault Query API design (#522)
* Added queryBy(QueryCriteria) Vault API and Junit tests.

* Minor fix following rebase.

* Spit out Vault Query tests into separate source file.

* WIP

* Enable composition of QueryCriteria specifications.
Additional JUnit test cases to validate API.

* Added Deprecating annotations.
Added QueryCriteria for set of contractStateTypes

* Minor tweaks and additional JUnit test cases (chain of linear id)

* Added Java Junit tests and QueryCriteria builder support.

* Added API documentation (including coding snippets and examples).

* Added @JvmOverloads to QueryCriteria classes for easy of use from Java.

* Refactored QueryCriteria API to use composition via sealed data classes.

* Enable infix notation.

* Fixed typo.

* Clarified future work to enforce DB level permissioning.

* Moved PageSpec and Order from QueryCriteria to become parameters of Query itself.

* Moved PageSpec and Order from QueryCriteria to become parameters of Query itself.

* TokenType now specified as set of <Class> (was non extensible enum).

* Exposed new Vault Query API functions via RPC.

* Fixed compiler error in java test.

* Addressed a couple of minor PR review scomments from MH.

* Major updates following PR discussion and recommendations.

* All pagination and sorting arguments are optional (and constructed with sensible defaults).
Added Java helper functions for queryBy and trackBy interfaces.
Added Java trackBy unit tests.
Miscellaneous cleanup.

* Added Generic Index schema mapping and query support.

* Query criteria referencing Party now references a String (until Identity framework built out).
Added participants attribute to general query criteria.

* Fleshed our IndexCriteria including PR recommendation to define column aliases for index mappings.

* Removed all directly exposed API dependencies on requery.

* Updated documentation.

* Provide sensible defaults for all Query arguments.
Add RPC Java helpers and increase range of Vault Service helpers.

* Further improvements (upgrading notes) and updates to documentation.

* RST documentation updates.

* Updates to address RP latest set of review comments.

* Updates to address MH latest set of review comments.

* Updated to highlight use of VaultIndexQueryCriteria to directly reference a JPA-annotated entity (versus the indirect, explicitly mapped attribute to GenericIndexSchema approach)

* Aesthetic updates requested by MH

* Reverted Indexing approach: removed all references to VaultIndexedQueryCriteria and GenericVaultIndexSchemaV1 scheme.

* Final clean-up and minor updates prior to merge.

* Fixed compiler warnings (except deprecation warnings)

* Reverted all changes to Vault Schemas (except simple illustrative VaultLinearState used in VaultQueryTests)

* Reverted all changes to Vault Schemas (except simple illustrative VaultLinearState used in VaultQueryTests)

* Commented out @Deprecated annotations (as a hedge against us releasing M12 with the work half-done)

* Renamed RPC JavaHelper functions as RPCDispatcher does not allow more than one method with same name.
2017-05-05 15:14:43 +01:00
Shams Asari
de83866ebe Removed createHandle from the FlowStateMachine interface as it doesn't need to be publicly exposed 2017-05-05 12:21:34 +01:00
Rick Parker
18a0df4239 AMQP serialisation: Part 1 (#581)
Also turns on `-parameters` for java compiler
2017-05-05 12:14:02 +01:00
Andrius Dagys
9a0653128c Add support for re-sending session messages. This is useful when talking to a distributed service, e.g. notary – if one of the nodes go down in the middle of a session, the session will be re-established with a different node (round-robin order). 2017-05-05 10:08:53 +01:00
Konstantinos Chalkias
d8fa75654f Support for multi-sig schemes. ECC (K1/R1) and EdDSA are fully supported. (#599)
Support for multi-sig scheme. ECC (K1/R1) and EdDSA are fully supported.
2017-05-04 18:19:00 +01:00
Matthew Nesbit
fe7d893de2 Merge pull request #627 from corda/mnesbit-servicehub-cleanup2
Remove scheduler service from ServiceHub
2017-05-04 14:34:41 +01:00
Matthew Nesbit
b3b4457b4e Remove scheduler service from ServiceHub 2017-05-04 10:00:49 +01:00
Shams Asari
eba753ddfe Moved the initiated-side of core flows in net.corda.flows to net.corda.node.services. They are not meant to be visible to end-users. 2017-05-03 17:42:51 +01:00
Chris Rankin
e22ad19fcd Use assert methods from test framework. Don't use Java assert. (#625) 2017-05-03 17:32:30 +01:00
Matthew Nesbit
99bf98c0d8 Merge pull request #624 from corda/mnesbit-ServiceHub-refactor
Remove Messaging service from service hub
2017-05-03 16:04:23 +01:00
Ross Nicoll
c8201c18fc Clean up X.500 names in X509UtilitiesTest 2017-05-03 15:55:19 +01:00
Ross Nicoll
e85ed639bb Clean up X500 names in Corda simulation
Clean up X500 names in Corda simulation, and ensure they're consistent with the standard test names.
This includes using the locations present in those test names, which requires updates to the node
config test.
2017-05-03 15:55:19 +01:00
Matthew Nesbit
7e8aa1d706 Remove Messaging service from service hub
Remove mention of MessagingService as being on ServiceHub.
2017-05-03 15:19:27 +01:00
Chris Rankin
780f93e625 Fix downloading attachments from WebServer. (#615)
* Fix /attachments endpoint on WebServer, and update demo to use it.
* Add @Throws statements to servlet methods.
* Ensure target entry is not a directory.
* Simplify, because JarInputStream verifies signatures by default.
* Move JarInputStream.extractFile() function into core.
* Don't close the output stream automatically as it commits our response.
2017-05-03 13:21:26 +01:00
Chris Rankin
7e718a81ca Fixes for Network Visualiser (#618)
* Restore Zurich and Cairo to cities.txt
* Only display each node's common name in Network Visualiser.
2017-05-03 10:52:39 +01:00
Ross Nicoll
d65d63e4f6 Interim patch introducing X500Names
This is an intermediary step to introducing X500Names in all Party instances, which adds:

* Party constructor which accepts X500Name and then converts it to string.
* startNode() function which takes in X500Name instead of String
* Numerous legal name fixes to use full distinguished names
2017-05-03 10:46:03 +01:00
Shams Asari
cfe5786d2d Introducing versioning of flows using the FlowVersion annotation.
Core flows, which are baked into the platform, are also versioned using the platform version of the node. Several core flows, such as the data vending ones, which were provided via plugins are now instead baked into the node.
2017-05-02 15:12:07 +01:00
Andrzej Cichocki
f2d138cdab Replace code only used in 1 test with existing general mechanism. (#600) 2017-04-28 15:50:24 +01:00
Andrzej Cichocki
cb3522588f In checkpoints, serialize hash of attachment instead of its data (#543) 2017-04-28 13:50:47 +01:00
Katarzyna Streich
e75a24937d Rename leavesKeys to leafKeys. 2017-04-28 11:56:07 +01:00
Andrzej Cichocki
b3894fa38a Fix race in IntegrationTestingTutorial. (#594) 2017-04-27 09:15:12 +01:00
Shams Asari
3fcb773a31 Updated docs and release notes for recent deprecation of getCounterpartyMarker 2017-04-26 11:02:51 +01:00
Shams Asari
c5a9312e07 Merge pull request #582 from corda/shams-flow-counterpartymarker-cleanup
Deprecated FlowLogic.getCounterpartyMarker as it's complicated and probably not used
2017-04-26 09:40:48 +01:00
Matthew Nesbit
7e3b9a8934 Fix duplicate content root problems in IntelliJ 2017-04-26 10:37:16 +02:00
Shams Asari
913487cb32 Deprecated FlowLogic.getCounterpartyMarker as it's complicated and probably not used (replacement is to use sub-flows).
Also made flow registration require the client flow class rather than any old class.
2017-04-25 18:53:33 +01:00
Konstantinos Chalkias
a8172e607e Move i2p Provider to crypto module 2017-04-25 18:19:28 +01:00
Konstantinos Chalkias
2ff8d14491 add EdDSA Provider and update i2p dependency to 0.2.0 2017-04-25 18:19:28 +01:00
Katarzyna Streich
f92949d3b5 Add information on why state machine was removed from StateMachineManager (#570)
* Add information on why state machine was removed from StateMachineManager.
There are two cases: normal end of flow or error.

Return flow result as part of state machine remove data.

Make Change a sealed class with Add and Remove.

fiber.actionOnEnd takes ErrorOr<R> parameter.

* Remove unnecessary fields from StateMachineManager.Change.
2017-04-25 14:34:45 +01:00
Mike Hearn
b4e7944a18 DemoBench: address review comments 2017-04-25 14:13:20 +02:00
Mike Hearn
238d4e29e2 Webserver: Redirect / to the first static web path.
DemoBench: Misc usability improvements:

- Pre-fill details for some fictional banks when Add Node is pushed.
- Make services a checkbox list rather than one where you have to know how to use the keyboard to do multi-select.
- Make web server launch button spin until server is launched to show activity.
- Suppress an exception that spams the log due to inability to load all the states. It'll get fixed as part of the vault API and serialisation work.
2017-04-25 14:13:20 +02:00
Katarzyna Streich
c1b7b1cb75 Add information on who started flow on a node. (#549)
* Add information on who started flow on a node with name where possible.
Add sealed class holding information on different ways of starting a flow: RPC, peer, shell, scheduled.

* Remove invokeFlowAsync from ServiceHub, move it to ServiceHubInternal.
We shouldn't be able to start new state machines from inside flows.
2017-04-24 17:05:51 +01:00
Shams Asari
b5e022f350 Introducing Platform Version and its use by the NMS for min version requirements for the network 2017-04-24 15:31:10 +01:00
Ross Nicoll
684d1089f0 Introduce full legal names for test parties
Use full names for test parties, ahead of complete X.500 name support.
2017-04-24 15:18:21 +01:00
Mike Hearn
3f7f05a0d9 DemoBench: better autocomplete and flags for city list 2017-04-24 15:52:22 +02:00
Mike Hearn
dec2c82693 Switch to using Antony's list of country coordinates, and load country code of each city. 2017-04-24 15:52:22 +02:00
Antony Lewis
1a2fe41330 Update cities.txt to go with CORDA-367
Assuming that Autocomplete will be added, according to JIRA https://r3-cev.atlassian.net/browse/CORDA-367
Note that there are still a few duplicates in the source with slightly different coordinates.  I assume the autocomplete will be able to cope, or these can be removed.
2017-04-24 15:52:22 +02:00
Mike Hearn
a90b2ba839 DemoBench: UI improvements, part uno 2017-04-24 15:52:22 +02:00
Patrick Kuo
87dd99d968 legal name validator for doorman node registration (#532) 2017-04-24 21:16:00 +08:00
Ross Nicoll
6c6ed3a758 Move transaction generation to OnLedgerAsset
Move functions for generating transactions into OnLedgerAsset from various locations in
the code (VaultService, AbstractConserveAmount, etc.) to unify the code paths and reduce
duplication.
2017-04-24 13:29:52 +01:00
Andrzej Cichocki
160d13b6f7 Prohibit Java deserialisation in the Corda process (#566) 2017-04-21 16:26:35 +01:00
Konstantinos Chalkias
c692a39e62 generateKeyPair() calls Crypto.kt implementation
generateKeyPair() calls Crypto.kt implementation Vs the EdDSA specific.
2017-04-20 14:18:41 +01:00
josecoll
d24f0ea0ba Fix incorrectly referenced public key. (#559) 2017-04-20 11:11:36 +01:00
Chris Rankin
d2d7cbc9ec CORDA-299: Remove progress Observable from FlowHandle, unless explicitly requested. (#513)
* Remove progress Observable from FlowHandle, unless explicitly requested.
* Refactor FlowHandle creation into FlowStateMachine.
* Prevent server-side queue subscription for dummy Observable.
* Refactor so that RPC client does not receive any unused progress Observables. This is the simplest way of ensuring we have no dangling "hot" Observables when the RPC client closes.
* Test flow has correct handle.
* Resolve some compiler warnings.
* Document how starting a flow does not involve progress tracking by default.
* Update changelog and release notes for RPC API.
* Rename new RPC API to startTrackedFlow().
* Remove optimisation because of its affect on the client-side.
* Update documentation.
2017-04-19 20:11:51 +01:00
Shams Asari
37a94237c8 Moved tests in net.corda.node.services to correct packages 2017-04-19 12:11:59 +01:00
Konstantinos Chalkias
66890d845a Extract methods and classes from CryptoUtilities. Keep one utils file. 2017-04-18 12:36:57 +01:00
Ross Nicoll
6d48667d91 Add infrastructure for X.500 name support (#534)
This introduces new functions for fetching parties by their X.500 name, Kryo serialization support for X500Name objects, an X500Name generator and some X509 utility support in preparation for full X.500 name support.
2017-04-13 15:32:34 +01:00
Ross Nicoll
1a88ca4bee Add composite signature engine (#446)
Add CompositeSignature and CompositeSignatureWithKeys classes as part of preliminary work to make CompositeKey signature validation compatible with java.security classes, so that these keys and signatures can be used readily in X.509 certificates.
2017-04-13 13:25:12 +01:00
Andrzej Cichocki
88b5e32ab2 Convert databaseTransaction to extension function on Database. (#537) 2017-04-12 17:15:29 +01:00
Andrzej Cichocki
3e007c02f4 Fix potential file handle leak in Attachment (#539)
* Make mockito available everywhere (core in particular).
* Also set the not-found path as FNFE message.
2017-04-12 15:30:28 +01:00
Mike Hearn
ac337240a6 Minor: more cleanups 2017-04-12 14:42:30 +02:00
Mike Hearn
1a86ac481f Minor: core: fix static analysis warnings.
One actual bug was found this way, albeit a harmless one.
2017-04-12 14:42:29 +02:00
Ross Nicoll
d35bd74596 Standardise identities used in tests, demos, etc.
Standaridise the identity names of Alice, Bob and Charlie, notary, map service, etc. in order
to ensure consistency across the code base and reduce number of places that have to be changed
to introduce proper X.500 names.

Move Alice, Bob & Charlie identities into the utilities package so they can be used in demos
2017-04-12 11:40:48 +01:00
gary-rowe
108f171e03 Replace 'by' with 'using' to avoid overloading Kotlin keyword in contracts DSL. Deprecates 'by' with offered replacement. 2017-04-12 12:27:02 +02:00
kasiastreich
36d5d0d7b2 Refactor of CompositeKeys to implement PublicKey interface. (#433)
* Make CompositeKey implement PublicKey

The initial implementation of composite keys as their own distinct class separate from PublicKey
means that the keys cannot be used on standard classes such as Certificate. This work is a beginning
to modifying CompositeKey to being a PublicKey implementation, although significant further work
is required to integrate this properly with the standard Java APIs, especially around verifying
signatures using the new key type.

* First stage of making CompositeKey implement PublicKey interface. Revert to using PublicKey everywhere we expect a key.

* Move algorithm and format into companion object (#432)

Move algorithm and format into companion object so that they can be referenced from other
classes (i.e. the upcoming signature class).

* Add simple invariants to construction of CompositeKey.
Builder emits CompositeKeys in simplified normalised form. Forbid keys with single child node, force ordering on children and forbid duplicates on the same level. It's not full semantical normalisation.

* Make constructor of CompositeKey private, move NodeWeight inside the class.
Add utility function for Kryo deserialization to read list with length constraints.
2017-04-12 11:13:20 +01:00