java.lang.Object
org.glassfish.jersey.process.internal.Stages

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

    • 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.
    • chain

      public static <DATA> Stage.Builder<DATA> chain(ChainableStage<DATA> rootStage)
      Start building a stage chain.
      Parameters:
      rootStage - root chainable linear stage.
      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.