Class LocalScopeTrigger

  • All Implemented Interfaces:
    AdditionalInformationHandler, CleanUpHandler, Destroyable, GlobalInfoSupporter, LoggingLevelHandler, LoggingSupporter, OptionHandler, Pausable, QuickInfoSupporter, ShallowCopySupporter<Actor>, SizeOfHandler, Stoppable, StoppableWithFeedback, VariablesHandler, VariablesInspectionHandler, FlowPauseStateListener, VariableChangeListener, AtomicExecution, LocalScopeHandler, ScopeHandler, StorageHandler, Actor, ActorHandler, ActorWithConditionalEquivalent, ActorWithTimedEquivalent, ControlActor, ErrorHandler, Flushable, InputConsumer, MutableActorHandler, OutputProducer, StopRestrictor, SubFlowWrapUp, Serializable, Comparable

    public class LocalScopeTrigger
    extends Trigger
    implements VariablesHandler, StorageHandler, LocalScopeHandler, StopRestrictor
    Executes the sub-actors whenever a token gets passed through, just like the adams.flow.control.Trigger actor, but also provides its own scope for variables and internal storage.
    It is possible to 'propagate' or 'leak' variables and storage items from within the local scope back to the output scope. However, storage items from caches cannot be propagated.

    Input/output:
    - accepts:
       adams.flow.core.Unknown
    - generates:
       adams.flow.core.Unknown


    Conditional equivalent:
       adams.flow.control.ConditionalTrigger

    -logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel)
        The logging level for outputting errors and debugging output.
        default: WARNING
     
    -name <java.lang.String> (property: name)
        The name of the actor.
        default: LocalScopeTrigger
     
    -annotation <adams.core.base.BaseAnnotation> (property: annotations)
        The annotations to attach to this actor.
        default: 
     
    -skip <boolean> (property: skip)
        If set to true, transformation is skipped and the input token is just forwarded 
        as it is.
        default: false
     
    -stop-flow-on-error <boolean> (property: stopFlowOnError)
        If set to true, the flow gets stopped in case this actor encounters an error;
         useful for critical actors.
        default: false
     
    -finish-before-stopping <boolean> (property: finishBeforeStopping)
        If enabled, actor first finishes processing all data before stopping.
        default: false
     
    -asynchronous <boolean> (property: asynchronous)
        If enabled, the sub-actors get executed asynchronously rather than the flow 
        waiting for them to finish before proceeding with execution.
        default: false
     
    -tee <adams.flow.core.AbstractActor> [-tee ...] (property: actors)
        The actors to siphon-off the tokens to.
        default: 
     
    -scope-handling-variables <EMPTY|COPY|SHARE> (property: scopeHandlingVariables)
        Defines how variables are handled in the local scope; whether to start with 
        empty set, a copy of the outer scope variables or share variables with the 
        outer scope.
        default: EMPTY
     
    -variables-filter <adams.core.base.BaseRegExp> (property: variablesFilter)
        The regular expression that variable names must match in order to get into 
        the local scope (when using COPY).
        default: .*
     
    -propagate-variables <boolean> (property: propagateVariables)
        If enabled and variables are not shared with outer scope, variables that 
        match the specified regular expression get propagated to the outer scope.
        default: false
     
    -variables-regexp <adams.core.base.BaseRegExp> (property: variablesRegExp)
        The regular expression that variable names must match in order to get propagated.
        default: .*
     
    -scope-handling-storage <EMPTY|COPY|SHARE> (property: scopeHandlingStorage)
        Defines how storage is handled in the local scope; whether to start with 
        empty set, a (deep) copy of the outer scope storage or share the storage 
        with the outer scope.
        default: EMPTY
     
    -storage-filter <adams.core.base.BaseRegExp> (property: storageFilter)
        The regular expression that storage item names must match in order to get 
        into the local scope (when using COPY).
        default: .*
     
    -propagate-storage <boolean> (property: propagateStorage)
        If enabled and storage is not shared with outer scope, storage items which 
        names match the specified regular expression get propagated to the outer 
        scope.
        default: false
     
    -storage-regexp <adams.core.base.BaseRegExp> (property: storageRegExp)
        The regular expression that the names of storage items must match in order 
        to get propagated.
        default: .*
     
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Detail

      • m_LocalStorage

        protected transient Storage m_LocalStorage
        the storage for temporary data.
      • m_LocalVariables

        protected FlowVariables m_LocalVariables
        the variables manager.
      • m_EnforceCallableNameCheck

        protected boolean m_EnforceCallableNameCheck
        whether the callable name check is enforced.
      • m_VariablesFilter

        protected BaseRegExp m_VariablesFilter
        the regular expression of the variables to allow into the local scope.
      • m_StorageFilter

        protected BaseRegExp m_StorageFilter
        the regular expression of the storage items to allow into the local scope.
      • m_PropagateVariables

        protected boolean m_PropagateVariables
        whether to propagate variables from the local scope to the outer scope.
      • m_VariablesRegExp

        protected BaseRegExp m_VariablesRegExp
        the regular expression of the variables to propagate.
      • m_PropagateStorage

        protected boolean m_PropagateStorage
        whether to propagate variables from the local scope to the outer scope.
      • m_StorageRegExp

        protected BaseRegExp m_StorageRegExp
        the regular expression of the variables to propagate.
      • m_RestrictedStop

        protected boolean m_RestrictedStop
        whether a restricted stop occurred.
    • Constructor Detail

      • LocalScopeTrigger

        public LocalScopeTrigger()
        Default constructor.
      • LocalScopeTrigger

        public LocalScopeTrigger​(String name)
        Initializes with the specified name.
        Parameters:
        name - the name to use
    • Method Detail

      • initialize

        protected void initialize()
        Initializes the members.
        Overrides:
        initialize in class Trigger
      • scopeHandlingVariablesTipText

        public String scopeHandlingVariablesTipText()
        Returns the tip text for this property.
        Specified by:
        scopeHandlingVariablesTipText in interface LocalScopeHandler
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setVariablesFilter

        public void setVariablesFilter​(BaseRegExp value)
        Sets the regular expression that variable names must match to get into the local scope.
        Specified by:
        setVariablesFilter in interface LocalScopeHandler
        Parameters:
        value - the expression
      • getVariablesFilter

        public BaseRegExp getVariablesFilter()
        Returns the regular expression that variable names must match to get into the local scope.
        Specified by:
        getVariablesFilter in interface LocalScopeHandler
        Returns:
        the expression
      • variablesFilterTipText

        public String variablesFilterTipText()
        Returns the tip text for this property.
        Specified by:
        variablesFilterTipText in interface LocalScopeHandler
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setPropagateVariables

        public void setPropagateVariables​(boolean value)
        Sets whether to propagate variables from the local to the outer scope.
        Specified by:
        setPropagateVariables in interface LocalScopeHandler
        Parameters:
        value - if true then variables get propagated
      • getPropagateVariables

        public boolean getPropagateVariables()
        Returns whether to propagate variables from the local to the outer scope.
        Specified by:
        getPropagateVariables in interface LocalScopeHandler
        Returns:
        true if variables get propagated
      • propagateVariablesTipText

        public String propagateVariablesTipText()
        Returns the tip text for this property.
        Specified by:
        propagateVariablesTipText in interface LocalScopeHandler
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setVariablesRegExp

        public void setVariablesRegExp​(BaseRegExp value)
        Sets the regular expression that variable names must match to get propagated.
        Specified by:
        setVariablesRegExp in interface LocalScopeHandler
        Parameters:
        value - the expression
      • getVariablesRegExp

        public BaseRegExp getVariablesRegExp()
        Returns the regular expression that variable names must match to get propagated.
        Specified by:
        getVariablesRegExp in interface LocalScopeHandler
        Returns:
        the expression
      • variablesRegExpTipText

        public String variablesRegExpTipText()
        Returns the tip text for this property.
        Specified by:
        variablesRegExpTipText in interface LocalScopeHandler
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • scopeHandlingStorageTipText

        public String scopeHandlingStorageTipText()
        Returns the tip text for this property.
        Specified by:
        scopeHandlingStorageTipText in interface LocalScopeHandler
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setStorageFilter

        public void setStorageFilter​(BaseRegExp value)
        Sets the regular expression that storage item names must match to get into the local scope.
        Specified by:
        setStorageFilter in interface LocalScopeHandler
        Parameters:
        value - the expression
      • getStorageFilter

        public BaseRegExp getStorageFilter()
        Returns the regular expression that storage item names must match to get into the local scope.
        Specified by:
        getStorageFilter in interface LocalScopeHandler
        Returns:
        the expression
      • storageFilterTipText

        public String storageFilterTipText()
        Returns the tip text for this property.
        Specified by:
        storageFilterTipText in interface LocalScopeHandler
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setPropagateStorage

        public void setPropagateStorage​(boolean value)
        Sets whether to propagate storage items from the local to the outer scope.
        Specified by:
        setPropagateStorage in interface LocalScopeHandler
        Parameters:
        value - if true then storage items get propagated
      • getPropagateStorage

        public boolean getPropagateStorage()
        Returns whether to propagate storage items from the local to the outer scope.
        Specified by:
        getPropagateStorage in interface LocalScopeHandler
        Returns:
        true if storage items get propagated
      • propagateStorageTipText

        public String propagateStorageTipText()
        Returns the tip text for this property.
        Specified by:
        propagateStorageTipText in interface LocalScopeHandler
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setStorageRegExp

        public void setStorageRegExp​(BaseRegExp value)
        Sets the regular expression that storage item names must match to get propagated.
        Specified by:
        setStorageRegExp in interface LocalScopeHandler
        Parameters:
        value - the expression
      • getStorageRegExp

        public BaseRegExp getStorageRegExp()
        Returns the regular expression that storage item names must match to get propagated.
        Specified by:
        getStorageRegExp in interface LocalScopeHandler
        Returns:
        the expression
      • storageRegExpTipText

        public String storageRegExpTipText()
        Returns the tip text for this property.
        Specified by:
        storageRegExpTipText in interface LocalScopeHandler
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setEnforceCallableNameCheck

        public void setEnforceCallableNameCheck​(boolean value)
        Sets whether to enforce the callable name check.
        Specified by:
        setEnforceCallableNameCheck in interface ScopeHandler
        Parameters:
        value - true if to enforce check
      • getEnforceCallableNameCheck

        public boolean getEnforceCallableNameCheck()
        Returns whether the check of callable names is enforced.
        Specified by:
        getEnforceCallableNameCheck in interface ScopeHandler
        Returns:
        true if check enforced
      • forceVariables

        protected void forceVariables​(Variables value)
        Updates the Variables instance in use.
        Overrides:
        forceVariables in class AbstractTee
        Parameters:
        value - ignored
      • isRestrictingStops

        public boolean isRestrictingStops()
        Returns whether stops are being restricted.
        Specified by:
        isRestrictingStops in interface StopRestrictor
        Returns:
        true if restricting stops
      • restrictedStopExecution

        public void restrictedStopExecution​(String msg)
        Stops the (restricted) execution.
        Specified by:
        restrictedStopExecution in interface StopRestrictor
        Parameters:
        msg - the message to set as reason for stopping, can be null
      • isRestrictedStop

        public boolean isRestrictedStop()
        Returns whether the stop was a restricted one (that can be resumed).
        Specified by:
        isRestrictedStop in interface StopRestrictor
        Returns:
        true if restricted stop occurred