mirror of
https://github.com/corda/corda.git
synced 2025-06-13 04:38:19 +00:00
Kryo serialisation whitelisting and misc enhancements. (#267)
Kryo serialisation whitelisting and misc enhancements
This commit is contained in:
@ -1,6 +1,5 @@
|
||||
package net.corda.docs
|
||||
|
||||
import com.esotericsoftware.kryo.Kryo
|
||||
import net.corda.contracts.asset.Cash
|
||||
import net.corda.core.contracts.Amount
|
||||
import net.corda.core.contracts.Issued
|
||||
@ -10,7 +9,9 @@ import net.corda.core.messaging.CordaRPCOps
|
||||
import net.corda.core.messaging.startFlow
|
||||
import net.corda.core.node.CordaPluginRegistry
|
||||
import net.corda.core.node.services.ServiceInfo
|
||||
import net.corda.core.serialization.CordaSerializable
|
||||
import net.corda.core.serialization.OpaqueBytes
|
||||
import net.corda.core.serialization.SerializationCustomization
|
||||
import net.corda.core.transactions.SignedTransaction
|
||||
import net.corda.flows.CashExitFlow
|
||||
import net.corda.flows.CashIssueFlow
|
||||
@ -132,12 +133,17 @@ fun generateTransactions(proxy: CordaRPCOps) {
|
||||
// END 6
|
||||
|
||||
// START 7
|
||||
// Not annotated, so need to whitelist manually.
|
||||
data class ExampleRPCValue(val foo: String)
|
||||
|
||||
// Annotated, so no need to whitelist manually.
|
||||
@CordaSerializable
|
||||
data class ExampleRPCValue2(val bar: Int)
|
||||
|
||||
class ExampleRPCCordaPluginRegistry : CordaPluginRegistry() {
|
||||
override fun registerRPCKryoTypes(kryo: Kryo): Boolean {
|
||||
override fun customizeSerialization(custom: SerializationCustomization): Boolean {
|
||||
// Add classes like this.
|
||||
kryo.register(ExampleRPCValue::class.java)
|
||||
custom.addToWhitelist(ExampleRPCValue::class.java)
|
||||
// You should return true, otherwise your plugin will be ignored for registering classes with Kryo.
|
||||
return true
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import net.corda.core.flows.FlowLogic
|
||||
import net.corda.core.node.PluginServiceHub
|
||||
import net.corda.core.node.ServiceHub
|
||||
import net.corda.core.node.services.unconsumedStates
|
||||
import net.corda.core.serialization.CordaSerializable
|
||||
import net.corda.core.transactions.SignedTransaction
|
||||
import net.corda.core.utilities.unwrap
|
||||
import net.corda.flows.FinalityFlow
|
||||
@ -27,12 +28,14 @@ object FxTransactionDemoTutorial {
|
||||
}
|
||||
}
|
||||
|
||||
@CordaSerializable
|
||||
private data class FxRequest(val tradeId: String,
|
||||
val amount: Amount<Issued<Currency>>,
|
||||
val owner: Party,
|
||||
val counterparty: Party,
|
||||
val notary: Party? = null)
|
||||
|
||||
@CordaSerializable
|
||||
private data class FxResponse(val inputs: List<StateAndRef<Cash.State>>,
|
||||
val outputs: List<Cash.State>)
|
||||
|
||||
|
@ -7,6 +7,7 @@ import net.corda.core.flows.FlowLogic
|
||||
import net.corda.core.node.PluginServiceHub
|
||||
import net.corda.core.node.ServiceHub
|
||||
import net.corda.core.node.services.linearHeadsOfType
|
||||
import net.corda.core.serialization.CordaSerializable
|
||||
import net.corda.core.transactions.SignedTransaction
|
||||
import net.corda.core.utilities.unwrap
|
||||
import net.corda.flows.FinalityFlow
|
||||
@ -32,6 +33,7 @@ inline fun <reified T : LinearState> ServiceHub.latest(ref: StateRef): StateAndR
|
||||
// DOCEND 1
|
||||
|
||||
// Minimal state model of a manual approval process
|
||||
@CordaSerializable
|
||||
enum class WorkflowState {
|
||||
NEW,
|
||||
APPROVED,
|
||||
|
Reference in New Issue
Block a user