Class SimpleXStreamFlowNodeStorage

java.lang.Object
org.jenkinsci.plugins.workflow.support.storage.FlowNodeStorage
org.jenkinsci.plugins.workflow.support.storage.SimpleXStreamFlowNodeStorage
All Implemented Interfaces:
org.jenkinsci.plugins.workflow.graph.FlowActionStorage

public class SimpleXStreamFlowNodeStorage extends FlowNodeStorage
FlowNodeStorage that stores one node per one file.
Author:
Kohsuke Kawaguchi
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final XStream2
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    SimpleXStreamFlowNodeStorage(org.jenkinsci.plugins.workflow.flow.FlowExecution exec, File dir)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    autopersist(org.jenkinsci.plugins.workflow.graph.FlowNode n)
    Flushes the node if needed, and if supported, marks it as needing to flush with EVERY write to the FlowNode.actions.
    void
    Force persisting any nodes that had writing deferred
    void
    flushNode(org.jenkinsci.plugins.workflow.graph.FlowNode n)
    Persists a single FlowNode to disk (if not already persisted).
    org.jenkinsci.plugins.workflow.graph.FlowNode
     
    boolean
    Have we written everything to disk that we need to, or is there something waiting to be written
    loadActions(org.jenkinsci.plugins.workflow.graph.FlowNode node)
     
    void
    saveActions(org.jenkinsci.plugins.workflow.graph.FlowNode node, List<Action> actions)
    Just stores this one node, using the supplied actions.
    void
    storeNode(org.jenkinsci.plugins.workflow.graph.FlowNode n)
    Registers node in this storage, potentially persisting to disk.
    void
    storeNode(org.jenkinsci.plugins.workflow.graph.FlowNode n, boolean delayWritingActions)
    Register the given node to the storage, potentially flushing to disk, and optionally marking the node as deferring writes.

    Methods inherited from class org.jenkinsci.plugins.workflow.support.storage.FlowNodeStorage

    isAvoidAtomicWrite, setAvoidAtomicWrite

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • XSTREAM

      public static final XStream2 XSTREAM
  • Constructor Details

    • SimpleXStreamFlowNodeStorage

      public SimpleXStreamFlowNodeStorage(org.jenkinsci.plugins.workflow.flow.FlowExecution exec, File dir)
  • Method Details

    • getNode

      public org.jenkinsci.plugins.workflow.graph.FlowNode getNode(String id) throws IOException
      Specified by:
      getNode in class FlowNodeStorage
      Returns:
      null If no node of the given ID has been persisted before.
      Throws:
      IOException
    • storeNode

      public void storeNode(@NonNull org.jenkinsci.plugins.workflow.graph.FlowNode n, boolean delayWritingActions) throws IOException
      Description copied from class: FlowNodeStorage
      Register the given node to the storage, potentially flushing to disk, and optionally marking the node as deferring writes.

      This should be invoked with delayWritingAction=true until you have a fully configured node to write out. Generally FlowNodeStorage.autopersist(FlowNode) should be automatically invoked before Step execution begins unless the step is block-scoped (in which case the FlowNode will handle this).

      Overrides:
      storeNode in class FlowNodeStorage
      Parameters:
      n - Node to store
      delayWritingActions - If true, node will avoid persisting actions except on explicit flush or when you call FlowNodeStorage.autopersist(FlowNode).
      Throws:
      IOException
    • storeNode

      public void storeNode(org.jenkinsci.plugins.workflow.graph.FlowNode n) throws IOException
      Description copied from class: FlowNodeStorage
      Registers node in this storage, potentially persisting to disk. FlowNodeStorage.flushNode(FlowNode) will guarantee it is persisted.
      Specified by:
      storeNode in class FlowNodeStorage
      Throws:
      IOException
    • autopersist

      public void autopersist(@NonNull org.jenkinsci.plugins.workflow.graph.FlowNode n) throws IOException
      Description copied from class: FlowNodeStorage
      Flushes the node if needed, and if supported, marks it as needing to flush with EVERY write to the FlowNode.actions.
      Overrides:
      autopersist in class FlowNodeStorage
      Throws:
      IOException
    • flushNode

      public void flushNode(@NonNull org.jenkinsci.plugins.workflow.graph.FlowNode n) throws IOException
      Persists a single FlowNode to disk (if not already persisted).
      Overrides:
      flushNode in class FlowNodeStorage
      Parameters:
      n - Node to persist
      Throws:
      IOException
    • flush

      public void flush() throws IOException
      Force persisting any nodes that had writing deferred
      Overrides:
      flush in class FlowNodeStorage
      Throws:
      IOException
    • loadActions

      public List<Action> loadActions(@NonNull org.jenkinsci.plugins.workflow.graph.FlowNode node) throws IOException
      Throws:
      IOException
    • saveActions

      public void saveActions(@NonNull org.jenkinsci.plugins.workflow.graph.FlowNode node, @NonNull List<Action> actions) throws IOException
      Just stores this one node, using the supplied actions. GOTCHA: technically there's nothing ensuring that node.getActions() matches supplied actions.
      Throws:
      IOException
    • isPersistedFully

      public boolean isPersistedFully()
      Have we written everything to disk that we need to, or is there something waiting to be written
      Overrides:
      isPersistedFully in class FlowNodeStorage