Fixed review comments.

This commit is contained in:
Clinton Alexander 2016-08-24 21:03:20 +01:00
parent f46cbd32c6
commit f2a93ea67b
3 changed files with 14 additions and 12 deletions

View File

@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Creates three nodes. A network map and notary node and two regular nodes that can be extended with cordapps.
set -euo pipefail
trap 'kill $(jobs -p)' SIGINT SIGTERM EXIT
export CAPSULE_CACHE_DIR=cache

View File

@ -1,8 +1,8 @@
Creating a Cordapp
==================
A Cordapp is an application that runs on the Corda platform using Corda APIs and plugin system. Cordapps are self
contained in separate JARs from the Corda node server JAR that are created and distributed.
A Cordapp is an application that runs on the Corda platform using the platform APIs and plugin system. They are self
contained in separate JARs from the node server JAR that are created and distributed.
App Plugins
-----------
@ -12,10 +12,6 @@ App Plugins
To create an app plugin you must you must extend from `CordaPluginRegistry`_. The JavaDoc contains
specific details of the implementation, but you can extend the server in the following ways:
.. _CordaPluginRegistry: api/com.r3corda.core.node/-corda-plugin-registry/index.html
.. _ServiceHubInternal: api/com.r3corda.node.services.api/-service-hub-internal/index.html
.. _ServiceHub: api/com.r3corda.node.services.api/-service-hub/index.html
1. Required protocols: Specify which protocols will be whitelisted for use in your web APIs.
2. Service plugins: Register your :ref:`services`.
3. Web APIs: You may register your own endpoints under /api/ of the built-in web server.
@ -27,8 +23,8 @@ Services
.. _services:
Services are classes which are constructed after the node has started. It is provided a `ServiceHubInternal`_ which
allows a more rich API than the `ServiceHub`_ exposed to contracts. It enables adding protocols, registering
message handlers and more. The service does not run in a thread, the only entry point to the service is during
allows a richer API than the `ServiceHub`_ exposed to contracts. It enables adding protocols, registering
message handlers and more. The service does not run in a separate thread, so the only entry point to the service is during
construction, where message handlers should be registered and threads started.
@ -38,7 +34,7 @@ Starting Nodes
To use an app you must also have a node server. To create a node server run the gradle installTemplateNodes task.
This will output the node JAR to ``build/libs/corda.jar`` and several sample/standard
node servers to ``build/nodes``. For now you can use the ``build/nodes/nodea`` configuration as a template.
node setups to ``build/nodes``. For now you can use the ``build/nodes/nodea`` configuration as a template.
Each node server must have a ``node.conf`` file in the same directory as the node JAR file. After first
execution of the node server there will be many other configuration and persistence files created in this directory.
@ -56,7 +52,7 @@ case the ``node_dir`` is the location where your node server's JAR and configura
Starting your Node
------------------
Now you have a node server with your Cordapp installed, you can run it by navigating to ``<node_dir>`` and running
Now you have a node server with your app installed, you can run it by navigating to ``<node_dir>`` and running
java -jar corda.jar
@ -64,3 +60,6 @@ The plugin should automatically be registered and the configuration file used.
.. warning:: If your working directory is not ``<node_dir>`` your plugins and configuration will not be used.
.. _CordaPluginRegistry: api/com.r3corda.core.node/-corda-plugin-registry/index.html
.. _ServiceHubInternal: api/com.r3corda.node.services.api/-service-hub-internal/index.html
.. _ServiceHub: api/com.r3corda.node.services.api/-service-hub/index.html

View File

@ -21,6 +21,8 @@ public class CordaCaplet extends Capsule {
@Override
@SuppressWarnings("unchecked")
protected <T> T attribute(Map.Entry<String, T> attr) {
// Equality is used here because Capsule never instantiates these attributes but instead reuses the ones
// defined as public static final fields on the Capsule class, therefore referential equality is safe.
if(ATTR_APP_CLASS_PATH == attr) {
T cp = super.attribute(attr);
List<Path> classpath = (List<Path>) cp;
@ -47,7 +49,6 @@ public class CordaCaplet extends Capsule {
}
private Boolean isJAR(File file) {
String[] parts = file.getName().split("\\.");
return (parts.length > 1) && (parts[parts.length - 1].toLowerCase().equals("jar"));
return file.getName().toLowerCase().endsWith(".jar");
}
}