From 2d53859745d92e4921a33d2c176e1e4aeb658ec3 Mon Sep 17 00:00:00 2001 From: Clinton Date: Thu, 28 Sep 2017 18:30:17 +0100 Subject: [PATCH] Fixes bugs with contract constraints (#1696) * Added schedulable flows to cordapp scanning Fixed a bug where the core flows are included in every cordapp. Added a test to prove the scheduled flows are loaded correctly. Added scheduled flow support to cordapp. Renabled broken test. Fixed test to prove cordapps aren't retreived from network. Review fixes. Fixed a test issue caused by gradle having slightly different paths to IntelliJ * Fixed test for real this time. --- .../contracts/isolated/IsolatedDummyFlow.kt | 1 + .../nodeapi/internal/serialization/Kryo.kt | 2 +- .../net/corda/node/services/isolated.jar | Bin 12477 -> 12672 bytes .../internal/cordapp/CordappLoaderTest.kt | 2 ++ 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/finance/isolated/src/main/kotlin/net/corda/finance/contracts/isolated/IsolatedDummyFlow.kt b/finance/isolated/src/main/kotlin/net/corda/finance/contracts/isolated/IsolatedDummyFlow.kt index 97c35c2af3..a065b49c43 100644 --- a/finance/isolated/src/main/kotlin/net/corda/finance/contracts/isolated/IsolatedDummyFlow.kt +++ b/finance/isolated/src/main/kotlin/net/corda/finance/contracts/isolated/IsolatedDummyFlow.kt @@ -9,6 +9,7 @@ import net.corda.core.identity.Party * loaded or blocked. */ class IsolatedDummyFlow { + @StartableByRPC @InitiatingFlow class Initiator(val toWhom: Party) : FlowLogic() { @Suspendable diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/Kryo.kt b/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/Kryo.kt index 06820db6c2..82234df40b 100644 --- a/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/Kryo.kt +++ b/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/Kryo.kt @@ -521,7 +521,7 @@ object LoggerSerializer : Serializer() { object ClassSerializer : Serializer>() { override fun read(kryo: Kryo, input: Input, type: Class>): Class<*> { val className = input.readString() - return Class.forName(className) + return Class.forName(className, true, kryo.classLoader) } override fun write(kryo: Kryo, output: Output, clazz: Class<*>) { diff --git a/node/src/integration-test/resources/net/corda/node/services/isolated.jar b/node/src/integration-test/resources/net/corda/node/services/isolated.jar index b1dfc71dac4cce43d4ba4bdb48c7b448d8ee1293..05544ab868067c1082eb80574f69c6dad2604b51 100644 GIT binary patch delta 5714 zcmZ8lWl$7q*j>7oMmnThmQF#sms|vv?q=zBr8}39P`VYQ1SzFKBo>h7lG4p02ngTR zx!-r^e($g6nK^Ujo#%OH&UsIl^-J5dXgDNg48Ipd-**z-t!P

amz=9zbc|du*N~ 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 CvIQ#u diff --git a/node/src/test/kotlin/net/corda/node/internal/cordapp/CordappLoaderTest.kt b/node/src/test/kotlin/net/corda/node/internal/cordapp/CordappLoaderTest.kt index e333595f35..628077d8c1 100644 --- a/node/src/test/kotlin/net/corda/node/internal/cordapp/CordappLoaderTest.kt +++ b/node/src/test/kotlin/net/corda/node/internal/cordapp/CordappLoaderTest.kt @@ -55,6 +55,8 @@ class CordappLoaderTest { assertThat(actualCordapp.rpcFlows).isEmpty() assertThat(actualCordapp.schedulableFlows).isEmpty() assertThat(actualCordapp.services).isEmpty() + assertThat(actualCordapp.serializationWhitelists).hasSize(1) + assertThat(actualCordapp.serializationWhitelists.first().javaClass.name).isEqualTo("net.corda.finance.contracts.isolated.IsolatedPlugin") assertThat(actualCordapp.jarPath).isEqualTo(isolatedJAR) }