Skip to content

Corbeans example based on the original Yo! CorDapp

License

Notifications You must be signed in to change notification settings

manosbatsis/corbeans-yo-cordapp

Repository files navigation

Corbeans Yo! Cordapp Build Status

A Corbeans project sample and template originally based on Joel Dudley's yo-cordapp by R3.

This project demonstrates how to apply Corbeans in order to create fully testable webapp/cordapp modules with Spring Boot and Corda. It also demonstrates some approaches towards more maintainable code using the following projects:

  • Lean State for auto-generating ContractState / PersistentState mappings
  • Partiture for component-based Flows
  • Vaultaire for auto-generating data access services, DTOs, query DSL and RSQL support for your Corda states
  • Corda RPC PoolBoy for RPC connection pooling
  • Corda Testacles for testing with MockNetwork, Node Driver, or Docker

Quick HowTo

> For Windows, use `gradlew.bat` instead of `./gradlew`
  1. Start by cloning the corbeans-yo-cordapp template
git clone https://github.com/manosbatsis/corbeans-yo-cordapp.git
  1. Navigate to the project directory
cd corbeans-yo-cordapp
  1. Build the project and run unit tests
./gradlew clean build 

Note that unit tests for the Spring Boot module use the node driver. You can also use the integrationTest task to execute the same tests against a Docker-based corda network:

./gradlew clean build integrationTest -x test

This will implicitly call deployNodes as well (see below) and uses Docker via Testcontainers (see also Corda Testacles).

Both approaches run the same tests by extending mypackage.server.AbstractRootTest.

  1. Deploy Corda nodes
./gradlew deployNodes
  1. Run nodes and webserver

Linux/Unix:

cordapp-workflow/build/nodes/runnodes

Windows:

call cordapp/build/nodes/runnodes.bat

You can also uncomment webPort and webserverJar in build.gradle to have runnodes launch Spring Boot as well, then browse the API:

http://localhost:8080/swagger-ui.html

Project Modules

  • cordapp-contract: States , contracts and tests with MockServices.
  • cordapp-workflow: Flows and tests with MockNetwork.
  • bootapp-webserver: Spring Boot app with a number of approaches to integration testing.

Customisation

Application Properties

You can configure nodes, logging and other options for either runtime or testing by editing server/src/main/resources/application.properties
or server/src/test/resources/application.properties respectively.

Custom Package

If you refactor from mypackage to your actual base package, make sure to update main and test sources throughout project modules, along with the corbeans.cordappPackages property in both application.properties files in the bootapp-webserver module.

Multiple Webservers

By default runnodes will only create a single webserver instance. If a webserver per node is desired, uncomment "PartyB" node's webPort and webserverJar in cordapp-workflow/build.gradle's Cordform task.

About

Corbeans example based on the original Yo! CorDapp

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published