Commit Graph

1237 Commits

Author SHA1 Message Date
Mike Hearn
4728062455 Add more formal support for observer/regulator nodes. This is a simplistic
approach which assumes a dedicated node for observers: states that are
reported to the node will appear in the database and update feeds as
normal. Apps that expect all updates to be relevant to themselves may
need adjusting if they run on an observer node too, but this is likely
to be rare.
2017-11-06 11:49:45 +00:00
Mike Hearn
f2dfeb2d9f Minor: InitiatedBy is a documented annotation. 2017-11-06 10:52:24 +00:00
Chris Rankin
2fe0a27139 Ensure that the contents of OpaqueBytes cannot be modified. (#1871) (#1881)
* Ensure that contents of OpaqueBytes cannot be modified.
* Update documentation and restore the signature verification check.
* Update the API definition.
* KDoc fixes.
* Update the changelog for v1.1.
2017-10-19 11:44:27 +01:00
Chris Rankin
8f7253149a Gradle API Scanner plugin (#1669)
* Skeleton plugin.
* Implement Gradle api-scanner plugin, and apply it.
* Generate API documentation for any jar without a classifier.
* Fix usage of smokeTests classifier.
* Tweak Gradle API usage.
* Upgrade to fast-classpath-scanner 2.7.0
* Include interfaces and more modifiers in the class description.
* Allow system classes to be supertypes and implemented interfaces.
* Make API Scanner plugin configuration tweakable via build.gradle.
* Add a miserable amount of unit testing.
* Sort methods and fields using their natural comparators. Way easier!
* Add README for api-scanner plugin.
* Add @OutputFiles to ScanApiTask.
* Rename ScanApiTask to ScanApi.
* Allow the ScanApi task to be disabled.
* WIP: Create a top-level GenerateApi task to collate the ScanApi output.
* Exclude package-private classes, as well as bridge/synthetic methods.
* Replace "End of Class" delimiter with '##'.
* Don't scan modules whose API is still "in flux".
* Include constructors in the API definitions.
* Finish implementation of GenerateApi task.
* Update README to include GenerateApi task.
* Filter out Kotlin's "internal" methods.
* Assign "fatjar" classifier to the fat jar artifact.
* Enhance README for GenerateApi.
* Explain effect of api-scanner plugin, and link to Corda's API strategy.
* Tweak README
* Exclude synthetic Kotlin classes by analysing @Metadata.
* Allow us to exclude some classes explicitly from the API.
2017-10-05 11:18:39 +01:00
Joel Dudley
f0138dfe17 Tutorial refresh for v1.0 and moving of code into separate files. (#1758)
* Moves code sections in tutorials to code files.

* Removes wallet references.

* Updates repo layout doc.

* Removes remaining cordapp-tutorial references, replaced with cordapp-example.

* Fixes broken link.

* Misc docs fixes.

* Refreshes the ServiceHub and rpc ops api pages.

* Updates the cheat sheet.

* Updates cookbooks.

* Refreshes the running-a-notary tutorial.

* Updates flow-testing tutorial

* Updates tear-offs tutorial.

* Refreshes integration-testing tutorial.

* Updates to contract tutorial and accompanying code to bring inline with V1 release.

* Refreshes contract-upgrade tutorial.

* Fixed broken code sample in "writing a contract" and updated contracts dsl.

* Added contract ref to java code. Fixed broken rst markup.

* Updates transaction-building tutorial.

* Updates the client-rpc and flow-state-machines tutorials.

* Updates the oracles tutorial.

* Amended country in X500 names from "UK" to "GB"

* Update FlowCookbook.kt

* Amended cheatsheet. Minor update on contract upgrades tutoraial.

* Added `extraCordappPackagesToScan` to node driver.

* Changes to match new function signature.

* Update to reflect change in location of cash contract name.
2017-10-02 10:11:33 +01:00
Clinton
84a60d161b V1 tests and fixes for the ContractConstraints work (#1739)
* V1 tests and fixes for the ContractConstraints work

* More fixes.
2017-09-29 17:18:06 +01:00
Rick Parker
30a829adbf Small API fixes against M16 (#1737)
* Move CompositeSignaturesWithKeys into net.corda.core.crypto package.

(cherry picked from commit 8f29562)

* Rename and move CordaPluginRegistry to reflect its real purpose now.
Simplify serialization code a bit.

(cherry picked from commit e2ecd3a)

* Docs: docsite improvements

* Remove discussion of webserver from 'writing a cordapp' page.
* Fixup some flow docs.
* Add a couple more package descriptions.

(cherry picked from commit 2aedc43)

* Review comments

(cherry picked from commit ba1d007)

* Review comments - always apply default whitelist and no longer load it via ServiceLoader

(cherry picked from commit 7d4d7bb)

* Added wording about renaming services resource file
2017-09-29 15:45:19 +01:00
Clinton
393323e082 Cordapps now have a name field. (#1664)
Corrected cordapp name generation.

Added changelog entry.
2017-09-29 13:25:49 +01:00
Rick Parker
075e0bd673 Add @suppress (#1725) 2017-09-29 11:12:32 +01:00
Matthew Nesbit
2774d6193a Consistent use of CordaException and CordaRuntimeException (#1710)
* Custom exceptions in corda, should either derive from an appropriate closely related java exception, or CordaException, or CordaRuntimeException. They should not inherit just from Exception, or RuntimeException.

Handle PR comments

Add nicer constructors to CordaException and CordaRuntimeException

* Fix ambiguous defaulted constructor
2017-09-28 18:42:24 +01:00
Clinton
ca0090420b Fixes bugs with contract constraints (#1696)
* Added schedulable flows to cordapp scanning

Fixed a bug where the core flows are included in every cordapp. Added a test to prove the scheduled flows are loaded correctly. Added scheduled flow support to cordapp.

Renabled broken test.

Fixed test to prove cordapps aren't retreived from network.

Review fixes.

Fixed a test issue caused by gradle having slightly different paths to IntelliJ

* Fixed test for real this time.
2017-09-28 18:30:17 +01:00
Andras Slemmer
73e3690596 FlowSession docs (#1693)
* FlowSession docs (#1660)

* FlowSession docs

* PR comments

* Milder example flow name
2017-09-28 16:29:24 +01:00
Rick Parker
183cc15808 Hide SerializationContext from public API on TransactionBuilder (#1707)
* Hide SerializationContext from public API on TransactionBuilder

(cherry picked from commit 6ff7b7e)

* Hide SerializationContext from public API on TransactionBuilder

(cherry picked from commit 6ff7b7e)
2017-09-28 11:19:30 +01:00
Andrius Dagys
1518b447e7 CORDA-641: A temporary fix for contract upgrade transactions (#1700)
* A temporary fix for contract upgrade transactions:
during LedgerTransaction verification run the right logic based on whether
it contains the UpgradeCommand.

* Move ContractUpgradeFlowTest away from createSomeNodes()

* Remove assembleBareTx as it's not used
2017-09-27 19:23:03 +01:00
josecoll
8dc2a96821 Unification of VaultQuery And VaultService APIs (into single VaultService interface) to simplify node bootstrapping and usability. (#1677) (#1688) 2017-09-27 14:40:17 +01:00
Mike Hearn
ff1652704e Merge "A variety of small fixes" into the 1.0 release branch (#1673)
* Minor: improve javadocs in NodeInfo

* Minor: use package descriptions in Kotlin build of api docs too, not just javadocs.

* RPC: make RPCConnection non-internal, as it's a core API. Move docs around so they're on public API not internal API.

* Add an IntelliJ scope that covers the currently supported Corda API.

This is useful when used in combination with the "Highlight public
declarations with missing KDoc" inspection.

* Ironic: upgrade the version of the Gradle plugin that checks for upgraded versions of things.

It had broken due being incompatible with the new versions of Gradle
itself.

* Docs: flesh out javadocs on ServiceHub

* Docs: add @suppress to a few things that were polluting the Dokka docs.

* Docs: mention RPC access in NodeInfo javadoc
2017-09-27 11:39:41 +01:00
Chris Rankin
46cd71ca6e Declare this internal message string as "const". (#1676) 2017-09-27 11:38:18 +01:00
Rick Parker
175e53d3d2 Extract identity helpers (#1636)
* First compiling version.  internal package accessed from finance and irsdemo

* Renaming
2017-09-25 17:49:34 +01:00
Rick Parker
d9715e970e CORDA-205: Supported core types documentation (#1621)
* Outline what is supported in AMQP serialization

* Object graph cycles

* Review feedback.

* Review feedback.

* Review feedback
2017-09-25 17:30:19 +01:00
Clinton
532bbb5cca Contract constraints (#1518)
* Contract constraints and attachment loading

Fix compiler warnings.

Fixed IdentitySyncFlowTests in confidential-identities.

Fixes.

Fix AttachmentClassLoaderTests.

Added a TODO.

Renamed cordapp service.

Fix compilation error in java code.

Fix RaftNotaryServiceTests

Fix AttachmentLoadingTest

Fix DistributedServiceTests and LargeTransactionTests.

Add cordapp packages to Verifier tests.

Refactor DummyContractBackdoor back out of internal package.

Resolve compiler warnings.

Consolidate excluding `isolated` project at top-level.

Fix contract attachment serialisation for remote verifier.

Fix integration tests for client:rpc.

Contract constraints and attachment loading

Fix compiler warnings.

Fixed IdentitySyncFlowTests in confidential-identities.

Fixes.

Fix AttachmentClassLoaderTests.

Added a TODO.

Renamed cordapp service.

Fix compilation error in java code.

Fix example compilation.

Fix RaftNotaryServiceTests

Fix AttachmentLoadingTest

Fix DistributedServiceTests and LargeTransactionTests.

Add cordapp packages to Verifier tests.

Refactor DummyContractBackdoor back out of internal package.

Resolve compiler warnings.

Consolidate excluding `isolated` project at top-level.

Fix integration tests for client:rpc.

Fixed issues with node driver and differing ZIPs.

Review changes.

Refactor GeneratedAttachment into node-api module.

Merge branch 'clint/hash-constraint' of https://github.com/corda/corda into clint/hash-constraint

Fixed compile error following rebase.

wip - test to check that app code isn't loaded from attachments sent over the wire.

Use Kotlin copyTo() rather than Apache's IOUtils.

Fixes

more fixes.

Removing unconstrained output.

More fixes.

Fixed another test.

Added missing plugin definition in net.corda.core.node.CordaPluginRegistry: net.corda.finance.contracts.isolated.IsolatedPlugin

Re-added missing magic string used in unit test.

Remove unused FlowSession variable.

* Review fixes.

* More review fixes.

* Moved Cordapp implementation to an internal package.

* More JVMOverloads.
2017-09-25 17:05:18 +01:00
josecoll
7b59f80bb3 Vault Query API parameter rename to aid clarity (#1627)
* Vault Query API `contractType` renamed to `contractStateType` for clarity.

* Vault Query API `contractType` renamed to `contractStateType` for clarity.

* Vault Query Criteria attribute `CONTRACT_TYPE` renamed to `CONTRACT_STATE_TYPE` for clarity.

* All references to `contractType` renamed to `contractStateType` for clarity.
2017-09-25 16:02:32 +01:00
Clinton Alexander
0de6994ef5 Base types and changes required for the Contract Constraints work. 2017-09-22 18:22:40 +02:00
Joel Dudley
095d94f2c7 Updates key types page. (#1616)
* Updates key types page.

* Adds ToC.

* Addresses review feedback.
2017-09-22 17:11:22 +01:00
Shams Asari
11be5dd417 Cleaned up ContractUpgradeFlow API (#1591) 2017-09-22 10:17:01 +01:00
Shams Asari
a11577840c Moved ServiceInfo and ServiceType into internal package (#1599) 2017-09-22 10:15:03 +01:00
Ross Nicoll
22be9fd6df CORDA-579: Move X509EdDSAEngine into net.corda.core.internal package (#1563)
* Add reflection based X509EdDSAEngine

* Rewrite X509EdDSAEngine to use public API rather than the direct equivalent functions

* Add unit tests for X509EdDSAEngine

* Remove unused imports

* Add unit tests for X509Key verification

* Add explicit x509 construct from eddsa key

This allows testing of conversion engine

* Review Comments
2017-09-21 18:18:37 +01:00
Ross Nicoll
c05e482c8f Change public constant values to Kotlin constants (#1588)
* Make string constants into Kotlin constants

* Add JvmName annotation to KeyStoreUtilities
2017-09-21 15:32:02 +01:00
Matthew Nesbit
c108637df6 Remove unused certificate method from IdentityService. (#1582)
Put wellKnownParty in methods that return a Party which is one.

Fixup rebase
2017-09-21 15:31:42 +01:00
Ross Nicoll
b0e9183850 CORDA-499: Dokka cleanup for 1.0 (#1579)
* Clean up Dokka comments on CordaRPCOps

* Remove use of "e.g." which Dokka will take as end of the first sentence
* Move example onto function that it actually works with
* Change comment which refers to comment above it, without any linkage, to directly describe the function
* Move implementation notes out of Dokka comment

* Make functions in CompositeSignature static

* Make contract IDs constant

* Correct contract ID in CashTestsJava
2017-09-21 14:46:36 +01:00
Andras Slemmer
33421bdd44 CORDA-577: FlowSession porting (#1530)
* Throw exception if a flow is initiated twice for the same Party

* Chunk of porting

* Need ReceiveTransactionFlow

(cherry picked from commit 774383e)

* Notaries compile

* TwoPartyTrade

* SimmFlow & StateRevisionFlow

(cherry picked from commit da602b1)

* TwoPArtyDealFlow regulator send

* installCoreFlow

* IRSTradeFlow
UpdateBusinessDayFlow
RatesFixFlow
NodeInterestRates

(cherry picked from commit 6c8d314)

* Added recordTransaction parameter to ReceiveTransactionFlow

* Some Tests, Flows

* Fixed typo in record tx param

* more things

* Fix CollectSignatures

* FlowFrameworkTests

(cherry picked from commit 2c50bc3)

* Fix TwoPartyTradeFlow

* CustomVaultQuery

(cherry picked from commit 48f88e8)

* FlowsInJavaTest

* WorkflowTransactionBuildTutorial

* PersistentNetworkMapCacheTest

* FlowCookBookJava

(cherry picked from commit 9b48114)

* Fix RatesFixFlow

* Fix TwoPartyDealFlow to get signature of initiating side

* Integration tests

(cherry picked from commit dbcd965)

* CordappSmokeTest

(cherry picked from commit d19cbd6)

* Inlined FinalityFlow

* Updated uses of FinalityFlow

* ContractUpgradeFlowTest passes

* CollectSignaturesFlow refactor

(cherry picked from commit 5e7b1a7)

* Check that we are not the recipient of cash

* Fix Simm demo

* WorkflowTransactionBuildTutorialTest

* Fix CashPaymentFlowTests

* ScheduledFlowTests

* FlowFrameworkTests

* Add cordappPackagesToScan Driver param

* FinalityFlowTests

* Fix LoaderTestFlow

* NodeMonitorModelTest

* BankOfCordaRPCClientTest

* rename to extraCordappPackagesToScan

* Fixed broken merge

* BankOfCordaHttpAPITest

* Fix CollectSignaturesFlow

* Fix annotation on DummyFlow to stop warning

* Fix TraderDemoTest

* Review feedback

* Doc improvements and minor changes

* Address some PR comments

* Looping regulators into the FinalityFlow broadcast rather than sending separately in TwoPartyDealFlow.

* Add Uninitiated FlowState

* Add test for double initiateFlow exception

* Some more s&r victims

* FlowSession utilities (#1562)

* Merge fix

* CollectSignatureFlow can handle several signing keys

* Actually handle several signing keys

* update kdoc

* Correct SignTransactionFlow error message

* Create deprecated flows package

* Add internal deprecated flows

* Reverted FinalityFlow to auto-broadcast all tx participants

* Move the deprecated packages into another PR
2017-09-21 12:12:25 +01:00
Ross Nicoll
78500205df Move IdentitySyncFlow into confidential-identities (#1583) 2017-09-21 11:22:01 +01:00
Andrius Dagys
0314e650a4 Clean up API for selecting notaries (#1573)
* Remove getAnyNotary() from network map API.
Change notaryIdentities() signature to return a Party instead of PartyAndCertificate.
Some API doc updates.

* Minor API doc formatting and typo fix

* Update changelog

* Address comments

* Address comments
2017-09-21 10:28:18 +01:00
Katarzyna Streich
002c6c4687 Remove notaryIdentityKey from ServiceHub (#1541)
* Remove notaryIdentityKey from ServiceHub

It was redundant, as we have notary field on a transaction. Notaries can
use this field to check if the transaction was meant for them and then
use that information while choosing a key to sign a transaction.

* Move notaryIdentityKey to NotaryService

* Address comments

* Fixes after rebase
2017-09-20 17:47:45 +01:00
Katarzyna Streich
fd57cf1c0c Remove advertised services from NodeInfo (#1521)
* Remove advertisedServices from NodeInfo.

Introduce notaryIdentities in NetworkMapCache, that will be filled in
later from NetworkParameters. Clean up NetworkMapCache API. Expose
notaryIdentities through RPC. For now we assume as temporary solution
that notaries in NetworkMap have to contain "notary" in name.

* Further clean up of NetworkMapCache API

Remve partyNodes. Introduce getAllNodeInfos function

* Remove notaryIdentity from ServiceHub

* Address Shams review comments

* Address Andrius review comments

* Add comments, cleanup

* Fixes

* Address comments

* Yet another commit with comments addressed

* Move ServiceType and ServiceInfo to node-api

Add changelog entry. Address rest of comments.

* Minor comments
2017-09-20 13:19:57 +01:00
Konstantinos Chalkias
6887947a4d CORDA-521: Backwards compatible Transactions using sub-Merkle trees (#1481)
* tx backwards compatibility + rebase

* SHA256d definition
2017-09-20 13:11:58 +01:00
Ross Nicoll
49a70cdbd6 CORDA-579: Add EdDSA engine that understands X.509 keys (#1540)
* Add EdDSA engine that understands X.509 keys

* Add test for Certificate serialization

* Address PR comments from Kostas
2017-09-19 17:50:04 +01:00
Shams Asari
1d6bd85f8a Clean up to NotaryFlow API (#1554) 2017-09-19 17:36:53 +01:00
Shams Asari
838e753164 Moved PhysicalLocationStructures into finance (#1557) 2017-09-19 17:36:26 +01:00
Shams Asari
8e0b8477af Changed FlowLogic.ourIdentity to return Party and added FlowLogic.ourIdentityAndCert which returns PartyAndCertificate. (#1537)
Updated code base to make use of these instead of chooseIdentity(). Also improved the serialisation of fiber checkpoints so that it doesn't store the entire cert parth of this identity.
2017-09-18 15:28:23 +01:00
Ross Nicoll
8f86068807 Move SwapIdentitiesFlow to confidential-identities module (#1531)
* Move SwapIdentitiesFlow to confidential-identities module

* Clean up confidential-identities build.gradle

* Change description to include Experimental

* Move confidential-identities to a dependency of node rather than node-api
2017-09-18 14:19:20 +01:00
Shams Asari
4c40c764c3 Cleaned up NodeInfo API (#1535) 2017-09-18 13:09:29 +01:00
Katarzyna Streich
495e870b74 NodeInfo remove main identity (#1284)
* Remove node's main identitiy from NodeInfo.

Preparation for getting rid of services + supporting multiple identities
on the node.
NodeInfo keeps multiple identities as a list. For now the first one is treated as a special one.
Introduced function chooseIdentity in CoreTestUtils as a preparation for proper handling of multiple identities in the future.
Remove legalIdentityKey from ServiceHub, add extension function - chooseIdentity on ServiceHub.
Add `me` field on FlowStateMachineImplemetation, flows should know what the calling identity is.
Remove SERVICES_PREFIX in artemis messaging layer.

* Address minor comments.

* Fixes after rebase.

Remove chooseIdentity from ServiceHub

* Rename me to ourIdentity on FlowLogic

* Fixes after rebase

* Address Ross comments, fixes

* Fix after rebase

* Fix services certificate paths

Apply Patrick's patch.
2017-09-15 14:39:34 +01:00
Andras Slemmer
c44fce1e47 Introduce FlowSession, startCounterFlow, Deprecate send/receive expec… (#1506)
* Introduce FlowSession, startCounterFlow, Deprecate send/receive expecting a Party

* FlowSessionImpl

* Change flow construtors to accept FlowSession

* Add some docs and a small guide to porting

* otherParty -> counterparty

* minor kdoc fixes
2017-09-15 10:31:44 +01:00
Ross Nicoll
3d577e5eed CORDA-499: Remove further Kt classes (#1489)
* Change how NetworkHostAndPort is parsed

Change from using a global extension function to parse
NetworkHostAndPort strings, into using a function on the companion
object. This is a lot easier for Java interop and matches the common
style used elsewhere both in Corda and in Java libraries.

* Move JAR extraction into new utils file

* Move path verification function to ArtemisUtils

Move path verification function "requireOnDefaultFileSystem()" to new
ArtemisUtils.kt file, as this makes more sense from a Java interop
perspective.

* Add JvmName to AMQPSchemaExtensions

* Add JvmName to AMQPSerializationScheme

* Revert "Move JAR extraction into new utils file"

This reverts commit 1f0f41909b68ff21cc24b5efd6a1a360393a0a14.

* Reformat code

* Run formatter on ArtemisUtils
2017-09-14 17:34:01 +01:00
Shams Asari
573987d929 Removed X509CertificateHolder from public API, using java.security.X509Certificate instead (#1510) 2017-09-14 15:48:33 +01:00
Shams Asari
943e873ff0 Moved AttachmentsClassLoader out of core (#1504) 2017-09-14 15:40:39 +01:00
Ross Nicoll
ae2183c8a1 Reduce use of X500Name bridges (#1483)
* Change to using strings in CordformContext; X500Name is an external API dependency we're trying to avoid, X500Principal rearranges the order of the elements in a way we don't want, and trying to put CordaX500Name into Groovy in the time available is impractical. As such having pre-formatted strings used in the Cordform plugin makes most sense right now.
* Remove uses of CordaX500Name.x500
* Remove old X.500 parsing tools
* Move CordaX500Name.x500 into X500NameUtils
* Move X500NameUtils into internal
2017-09-14 11:56:14 +01:00
Shams Asari
8f0c0c784b Removed PluginServiceHub 2017-09-14 09:30:37 +01:00
Viktor Kolomeyko
abac314b31 CORDA-540: Correctly mark AttachmentConstraint to be CordaSerializable (#1496)
Or else many core/contract unit tests failing in AMQP mode
2017-09-14 09:28:17 +01:00
Rick Parker
988e3e5007 Some additional serializers to fill in the blanks vs. our default whitelist (#1490) 2017-09-14 09:14:09 +01:00