Class OperationChain<OUT>

  • Type Parameters:
    OUT - the output type of the OperationChain. This should match the output type of the last Operation in the chain.
    All Implemented Interfaces:
    Closeable, AutoCloseable, Output<OUT>, Operation, Operations<Operation>
    Direct Known Subclasses:
    OperationChainDAO

    public class OperationChain<OUT>
    extends Object
    implements Output<OUT>, Operations<Operation>

    An OperationChain holds a list of Operations that are chained together - ie. the output of one operation is passed to the input of the next. For the chaining to be successful the operations must be ordered correctly so the O and I types are compatible. The safest way to ensure they will be compatible is to use the OperationChain.Builder to construct the chain.

    A couple of special cases:
    • An operation with no output can come before any operation.
    • An operation with no input can follow any operation - the output from the previous operation will just be lost.
    See Also:
    OperationChain.Builder
    • Constructor Detail

      • OperationChain

        public OperationChain()
      • OperationChain

        public OperationChain​(Operation operation)
      • OperationChain

        public OperationChain​(Output<OUT> operation)
      • OperationChain

        public OperationChain​(Operation... operations)
      • OperationChain

        public OperationChain​(List<Operation> operations)
      • OperationChain

        public OperationChain​(List<Operation> operations,
                              boolean flatten)
    • Method Detail

      • getOutputTypeReference

        public com.fasterxml.jackson.core.type.TypeReference<OUT> getOutputTypeReference()
        Specified by:
        getOutputTypeReference in interface Output<OUT>
      • shallowClone

        public OperationChain<OUT> shallowClone()
                                         throws org.apache.commons.lang3.exception.CloneFailedException
        Description copied from interface: Operation
        Operation implementations should ensure a ShallowClone method is implemented. Performs a shallow clone. Creates a new instance and copies the fields across. It does not clone the fields. If the operation contains nested operations, these must also be cloned.
        Specified by:
        shallowClone in interface Operation
        Returns:
        shallow clone
        Throws:
        org.apache.commons.lang3.exception.CloneFailedException - if a Clone error occurs
      • getOptions

        public Map<String,​String> getOptions()
        Specified by:
        getOptions in interface Operation
        Returns:
        the operation options. This may contain store specific options such as authorisation strings or and other properties required for the operation to be executed. Note these options will probably not be interpreted in the same way by every store implementation.
      • setOptions

        public void setOptions​(Map<String,​String> options)
        Specified by:
        setOptions in interface Operation
        Parameters:
        options - the operation options. This may contain store specific options such as authorisation strings or and other properties required for the operation to be executed. Note these options will probably not be interpreted in the same way by every store implementation.
      • toOverviewString

        public String toOverviewString()
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object