From 094eb266a812ea492e8f38c6602c14755e0dc25c Mon Sep 17 00:00:00 2001 From: Venelin Stoykov Date: Fri, 2 Nov 2018 13:44:18 +0200 Subject: [PATCH] [CORDA-2174] Fix demo node startup (#4151) - Make issuableCurrencies config optional - Allow additionalCordapps to override cordappsForAllNodes In driver DSL when passing additionalCordapps to startNode and one of the CordApps is also in cordappsForAllNodes will lead to confilc. This commit is resolving the conflict by using the CordApp provided by additionalCordapps --- .../net/corda/finance/internal/CashConfigDataFlow.kt | 7 ++++++- .../net/corda/testing/node/internal/DriverDSLImpl.kt | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/finance/src/main/kotlin/net/corda/finance/internal/CashConfigDataFlow.kt b/finance/src/main/kotlin/net/corda/finance/internal/CashConfigDataFlow.kt index 3c2ab3c988..020667c174 100644 --- a/finance/src/main/kotlin/net/corda/finance/internal/CashConfigDataFlow.kt +++ b/finance/src/main/kotlin/net/corda/finance/internal/CashConfigDataFlow.kt @@ -24,7 +24,12 @@ class ConfigHolder(services: AppServiceHub) : SingletonSerializeAsToken() { val issuableCurrencies: List init { - val issuableCurrenciesStringList: List = uncheckedCast(services.getAppContext().config.get("issuableCurrencies")) + val config = services.getAppContext().config + val issuableCurrenciesStringList: List = if (config.exists("issuableCurrencies")) { + uncheckedCast(config.get("issuableCurrencies")) + } else { + emptyList() + } issuableCurrencies = issuableCurrenciesStringList.map(Currency::getInstance) (issuableCurrencies - supportedCurrencies).let { require(it.isEmpty()) { "$it are not supported currencies" } diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt index 45dcbf077d..36e54c297e 100644 --- a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt +++ b/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt @@ -595,7 +595,12 @@ class DriverDSLImpl( emptyList() } - val cordappDirectories = existingCorDappDirectoriesOption + (cordappsForAllNodes + additionalCordapps).map { TestCordappDirectories.getJarDirectory(it).toString() } + // Instead of using cordappsForAllNodes we get only these that are missing from additionalCordapps + // This way we prevent errors when we want the same CordApp but with different config + val appOverrides = additionalCordapps.map { it.name to it.version}.toSet() + val baseCordapps = cordappsForAllNodes.filter { !appOverrides.contains(it.name to it.version) } + + val cordappDirectories = existingCorDappDirectoriesOption + (baseCordapps + additionalCordapps).map { TestCordappDirectories.getJarDirectory(it).toString() } val config = NodeConfig(specifiedConfig.typesafe.withValue(NodeConfiguration.cordappDirectoriesKey, ConfigValueFactory.fromIterable(cordappDirectories.toSet())))