# cordapp-iou-java
**Repository Path**: yojea/cordapp-iou-java
## Basic Information
- **Project Name**: cordapp-iou-java
- **Description**: No description available
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-12-07
- **Last Updated**: 2024-05-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CorDapp Template - Java [
](https://ide.corda.net/?folder=/home/coder/cordapp-template-java)
Welcome to the Java CorDapp template. The CorDapp template is a stubbed-out CorDapp that you can use to bootstrap
your own CorDapps.
**This is the Java version of the CorDapp template. The Kotlin equivalent is
[here](https://github.com/corda/cordapp-template-kotlin/).**
# Pre-Requisites
See https://docs.corda.net/getting-set-up.html.
# Usage
## Running tests inside IntelliJ
We recommend editing your IntelliJ preferences so that you use the Gradle runner - this means that the quasar utils
plugin will make sure that some flags (like ``-javaagent`` - see below) are
set for you.
To switch to using the Gradle runner:
* Navigate to ``Build, Execution, Deployment -> Build Tools -> Gradle -> Runner`` (or search for `runner`)
* Windows: this is in "Settings"
* MacOS: this is in "Preferences"
* Set "Delegate IDE build/run actions to gradle" to true
* Set "Run test using:" to "Gradle Test Runner"
If you would prefer to use the built in IntelliJ JUnit test runner, you can run ``gradlew installQuasar`` which will
copy your quasar JAR file to the lib directory. You will then need to specify ``-javaagent:lib/quasar.jar``
and set the run directory to the project root directory for each test.
## Running the nodes
See https://docs.corda.net/tutorial-cordapp.html#running-the-example-cordapp.
## Interacting with the nodes
### Shell
When started via the command line, each node will display an interactive shell:
Welcome to the Corda interactive shell.
Useful commands include 'help' to see what is available, and 'bye' to shut down the node.
Tue Nov 06 11:58:13 GMT 2018>>>
You can use this shell to interact with your node. For example, enter `run networkMapSnapshot` to see a list of
the other nodes on the network:
Tue Nov 06 11:58:13 GMT 2018>>> run networkMapSnapshot
[
{
"addresses" : [ "localhost:10002" ],
"legalIdentitiesAndCerts" : [ "O=Notary, L=London, C=GB" ],
"platformVersion" : 3,
"serial" : 1541505484825
},
{
"addresses" : [ "localhost:10005" ],
"legalIdentitiesAndCerts" : [ "O=PartyA, L=London, C=GB" ],
"platformVersion" : 3,
"serial" : 1541505382560
},
{
"addresses" : [ "localhost:10008" ],
"legalIdentitiesAndCerts" : [ "O=PartyB, L=New York, C=US" ],
"platformVersion" : 3,
"serial" : 1541505384742
}
]
Tue Nov 06 12:30:11 GMT 2018>>>
You can find out more about the node shell [here](https://docs.corda.net/shell.html).
### Client
`clients/src/main/java/com/template/Client.java` defines a simple command-line client that connects to a node via RPC
and prints a list of the other nodes on the network.
#### Running the client
##### Via the command line
Run the `runTemplateClient` Gradle task. By default, it connects to the node with RPC address `localhost:10006` with
the username `user1` and the password `test`.
##### Via IntelliJ
Run the `Run Template Client` run configuration. By default, it connects to the node with RPC address `localhost:10006`
with the username `user1` and the password `test`.
### Webserver
`clients/src/main/java/com/template/webserver/` defines a simple Spring webserver that connects to a node via RPC and
allows you to interact with the node over HTTP.
The API endpoints are defined here:
clients/src/main/java/com/template/webserver/Controller.java
And a static webpage is defined here:
clients/src/main/resources/static/
#### Running the webserver
##### Via the command line
Run the `runTemplateServer` Gradle task. By default, it connects to the node with RPC address `localhost:10006` with
the username `user1` and the password `test`, and serves the webserver on port `localhost:10050`.
##### Via IntelliJ
Run the `Run Template Server` run configuration. By default, it connects to the node with RPC address `localhost:10006`
with the username `user1` and the password `test`, and serves the webserver on port `localhost:10050`.
#### Interacting with the webserver
The static webpage is served on:
http://localhost:10050
While the sole template endpoint is served on:
http://localhost:10050/templateendpoint
# Extending the template
You should extend this template as follows:
* Add your own state and contract definitions under `contracts/src/main/java/`
* Add your own flow definitions under `workflows/src/main/java/`
* Extend or replace the client and webserver under `clients/src/main/java/`
For a guided example of how to extend this template, see the Hello, World! tutorial
[here](https://docs.corda.net/hello-world-introduction.html).