apply plugin: 'kotlin'
apply plugin: 'net.corda.plugins.cordapp'
apply plugin: 'net.corda.plugins.cordformation'

cordapp {
    info {
        name "Corda Network Verifier"
        vendor "R3"
        targetPlatformVersion corda_platform_version.toInteger()
        minimumPlatformVersion 1
    }
}

dependencies {
    if (System.getProperty('excludeShell') == null) {
        cordaDriver "net.corda:corda-shell:$corda_release_version"
    }
    // Cordformation needs this for the Network Bootstrapper.
    runtimeOnly project(':node-api')

    // Cordformation needs a SLF4J implementation when executing the Network
    // Bootstrapper, but Log4J doesn't shutdown completely from within Gradle.
    // Use a much simpler SLF4J implementation here instead.
    cordaRuntime "org.slf4j:slf4j-simple:$slf4j_version"

    // Corda integration dependencies
    cordaRuntime project(path: ":node:capsule", configuration: 'runtimeArtifacts')

    cordapp project(':samples:network-verifier:contracts')
    cordapp project(':samples:network-verifier:workflows')
}

def nodeTask = tasks.getByPath(':node:capsule:assemble')
task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar', nodeTask]) {
    ext.rpcUsers = [['username': "default", 'password': "default", 'permissions': [ 'ALL' ]]]
    nodeDefaults{
        projectCordapp {
            deploy = false
        }
        cordapp project(':samples:network-verifier:contracts')
        cordapp project(':samples:network-verifier:workflows')
        runSchemaMigration = true
    }
    node {
        name "O=Notary Node,L=Zurich,C=CH"
        notary = [validating : false,
                  serviceLegalName: "O=Notary Service,L=Zurich,C=CH"
        ]
        p2pPort 10002
        rpcSettings {
            port 10003
            adminPort 10004
        }
        extraConfig = ['h2Settings.address' : 'localhost:20004']
    }
    node {
        name "O=Bank A,L=London,C=GB"
        p2pPort 10005
        cordapps = []
        rpcUsers = ext.rpcUsers
        rpcSettings {
            port 10007
            adminPort 10008
        }
        extraConfig = ['h2Settings.address' : 'localhost:0']
    }
    node {
        name "O=Bank B,L=New York,C=US"
        p2pPort 10009
        cordapps = []
        rpcUsers = ext.rpcUsers
        rpcSettings {
            port 10011
            adminPort 10012
        }
        extraConfig = ['h2Settings.address' : 'localhost:0']
    }
}