mirror of
https://github.com/corda/corda.git
synced 2025-06-17 06:38:21 +00:00
Cleaned up the flow stack snapshot API
This commit is contained in:
@ -0,0 +1,40 @@
|
||||
package net.corda.node.services.statemachine
|
||||
|
||||
import net.corda.core.flows.FlowLogic
|
||||
import net.corda.core.flows.FlowStackSnapshot
|
||||
import net.corda.core.flows.StateMachineRunId
|
||||
import net.corda.core.utilities.loggerFor
|
||||
import java.nio.file.Path
|
||||
import java.util.*
|
||||
|
||||
interface FlowStackSnapshotFactory {
|
||||
private object Holder {
|
||||
val INSTANCE: FlowStackSnapshotFactory
|
||||
|
||||
init {
|
||||
val serviceFactory = ServiceLoader.load(FlowStackSnapshotFactory::class.java).singleOrNull()
|
||||
INSTANCE = serviceFactory ?: DefaultFlowStackSnapshotFactory
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
val instance: FlowStackSnapshotFactory by lazy { Holder.INSTANCE }
|
||||
}
|
||||
|
||||
fun getFlowStackSnapshot(flowClass: Class<out FlowLogic<*>>): FlowStackSnapshot?
|
||||
|
||||
fun persistAsJsonFile(flowClass: Class<out FlowLogic<*>>, baseDir: Path, flowId: StateMachineRunId)
|
||||
|
||||
private object DefaultFlowStackSnapshotFactory : FlowStackSnapshotFactory {
|
||||
private val log = loggerFor<DefaultFlowStackSnapshotFactory>()
|
||||
|
||||
override fun getFlowStackSnapshot(flowClass: Class<out FlowLogic<*>>): FlowStackSnapshot? {
|
||||
log.warn("Flow stack snapshot are not supposed to be used in a production deployment")
|
||||
return null
|
||||
}
|
||||
|
||||
override fun persistAsJsonFile(flowClass: Class<out FlowLogic<*>>, baseDir: Path, flowId: StateMachineRunId) {
|
||||
log.warn("Flow stack snapshot are not supposed to be used in a production deployment")
|
||||
}
|
||||
}
|
||||
}
|
@ -255,14 +255,12 @@ class FlowStateMachineImpl<R>(override val id: StateMachineRunId,
|
||||
}
|
||||
|
||||
@Suspendable
|
||||
override fun flowStackSnapshot(flowClass: Class<*>): FlowStackSnapshot? {
|
||||
val factory = FlowStackSnapshotFactory.instance
|
||||
return factory.getFlowStackSnapshot(flowClass)
|
||||
override fun flowStackSnapshot(flowClass: Class<out FlowLogic<*>>): FlowStackSnapshot? {
|
||||
return FlowStackSnapshotFactory.instance.getFlowStackSnapshot(flowClass)
|
||||
}
|
||||
|
||||
override fun persistFlowStackSnapshot(flowClass: Class<*>): Unit {
|
||||
val factory = FlowStackSnapshotFactory.instance
|
||||
factory.persistAsJsonFile(flowClass, serviceHub.configuration.baseDirectory, id.toString())
|
||||
override fun persistFlowStackSnapshot(flowClass: Class<out FlowLogic<*>>) {
|
||||
FlowStackSnapshotFactory.instance.persistAsJsonFile(flowClass, serviceHub.configuration.baseDirectory, id)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4,11 +4,7 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
|
||||
import net.corda.core.concurrent.CordaFuture
|
||||
import net.corda.core.contracts.Amount
|
||||
import net.corda.core.crypto.SecureHash
|
||||
import net.corda.core.flows.FlowContext
|
||||
import net.corda.core.flows.FlowInitiator
|
||||
import net.corda.core.flows.FlowLogic
|
||||
import net.corda.core.flows.FlowStackSnapshot
|
||||
import net.corda.core.flows.StateMachineRunId
|
||||
import net.corda.core.flows.*
|
||||
import net.corda.core.identity.Party
|
||||
import net.corda.core.internal.FlowStateMachine
|
||||
import net.corda.core.node.ServiceHub
|
||||
@ -93,21 +89,9 @@ class InteractiveShellTest {
|
||||
override val id: StateMachineRunId get() = throw UnsupportedOperationException()
|
||||
override val resultFuture: CordaFuture<Any?> get() = throw UnsupportedOperationException()
|
||||
override val flowInitiator: FlowInitiator get() = throw UnsupportedOperationException()
|
||||
|
||||
override fun checkFlowPermission(permissionName: String, extraAuditData: Map<String, String>) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
override fun recordAuditEvent(eventType: String, comment: String, extraAuditData: Map<String, String>) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
override fun flowStackSnapshot(flowClass: Class<*>): FlowStackSnapshot? {
|
||||
return null
|
||||
}
|
||||
|
||||
override fun persistFlowStackSnapshot(flowClass: Class<*>) {
|
||||
// Do nothing
|
||||
}
|
||||
override fun checkFlowPermission(permissionName: String, extraAuditData: Map<String, String>) = Unit
|
||||
override fun recordAuditEvent(eventType: String, comment: String, extraAuditData: Map<String, String>) = Unit
|
||||
override fun flowStackSnapshot(flowClass: Class<out FlowLogic<*>>): FlowStackSnapshot? = null
|
||||
override fun persistFlowStackSnapshot(flowClass: Class<out FlowLogic<*>>) = Unit
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user