Class Stages


  • public final class Stages
    extends Object
    A stage-related collection of utility methods.
    Author:
    Marek Potociar
    • Method Detail

      • identity

        public static <DATA> ChainableStage<DATA> identity()
        Get a chainable "identity" stage. This stage, when applied returns the unmodified input data object as part of it's continuation.
        Type Parameters:
        DATA - data type transformable by the stage.
        Returns:
        identity stage.
      • asStage

        public static <DATA,​RESULT> Stage<DATA> asStage​(Inflector<DATA,​RESULT> inflector)
        Creates a terminal Stage that implements Inflecting interface and returns the provided Inflector instance when the Inflecting.inflector() method is called.
        Type Parameters:
        DATA - data type transformable by the stage and returned inflector.
        RESULT - type of result produced by a successful inflector data transformation.
        Parameters:
        inflector - a request to response transformation to be wrapped in a stage.
        Returns:
        a stage that wraps the supplied Inflector.
      • extractInflector

        public static <DATA,​RESULT,​T extends Inflector<DATA,​RESULT>> T extractInflector​(Object stage)
        (Optionally) extracts an inflector from a processing stage, provided the stage implements Inflecting interface. Otherwise method returns null.
        Type Parameters:
        DATA - data type transformable by the stage and returned inflector.
        RESULT - type of result produced by a successful inflector data transformation.
        Parameters:
        stage - a stage to extract the inflector from.
        Returns:
        extracted inflector if present, null otherwise.
      • chain

        public static <DATA> Stage.Builder<DATA> chain​(Function<DATA,​DATA> transformation)
        Start building a stage chain.
        Parameters:
        transformation - root transformation function.
        Returns:
        linear accepting chain builder.
      • process

        public static <DATA> DATA process​(DATA data,
                                          Stage<DATA> rootStage)
        Run the data through a chain of stages identified by the root stage.
        Type Parameters:
        DATA - processed data type.
        Parameters:
        data - data to be processed.
        rootStage - root stage of the stage chain.
        Returns:
        processing result.
      • process

        public static <DATA,​RESULT,​T extends Inflector<DATA,​RESULT>> DATA process​(DATA data,
                                                                                                    Stage<DATA> rootStage,
                                                                                                    org.glassfish.jersey.internal.util.collection.Ref<T> inflectorRef)
        Run the data through a chain of stages identified by the root stage. If an inflector is found in the leaf stage, it's reference is set into the inflectorRef parameter.
        Type Parameters:
        DATA - processed data type.
        Parameters:
        data - data to be processed.
        rootStage - root stage of the stage chain.
        inflectorRef - a mutable reference to an inflector.
        Returns:
        processing result.