Interface Valve

All Known Implementing Classes:
AbstractDefaultValve, AddItemValve, AttributeOptionValve, BaseGrantUserValve, BasketItemDependValve, BeforeNotificationValve, BranchPointValve, ConditionalValve, DependTypeMatchingConditionValve, GlobalGrantUserValve, GrantUserValve, GroupCurriculumRelationDependValve, ItemTypeValve, ModifiedValve, ModuleAttributeOptionValve, ModuleAttributeValve, ModuleCategoryConditionValve, ModuleMatchingConditionValve, NotificationValve, OnEndNotificationValve, OptionOptionValve, QuizQuizGroupDependValve, QuizSheetDependValve, SetExecuteContextValve, StepPlanStudyPlanDependValve, TransitionValve, UpdateAttributeOptionValve, UpdateAttributeValueOptionValve, UpdateAttributeValueValve, UpdateItemValve, WebGrantUserValve
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface Valve

A Valve is a request processing component. A series of Valves are generally associated with each other into a Pipeline. The detailed contract for a Valve is included in the description of the invoke() method below.

HISTORICAL NOTE: The "Valve" name was assigned to this concept because a valve is what you use in a real world pipeline to control and/or modify flows through it.
See Also:
  • Method Details

    • invoke

      void invoke(PipelineData pipelineData, ValveContext context) throws IOException, PipelineException

      Perform request processing as required by this Valve.

      An individual Valve MAY perform the following actions, in the specified order:

      • Examine and/or modify the properties of the specified Request and Response.
      • Examine the properties of the specified Request, completely generate the corresponding Response, and return control to the caller.
      • Examine the properties of the specified Request and Response, wrap either or both of these objects to supplement their functionality, and pass them on.
      • If the corresponding Response was not generated (and control was not returned, call the next Valve in the pipeline (if there is one) by executing context.invokeNext().
      • Examine, but not modify, the properties of the resulting Response (which was created by a subsequently invoked Valve via a call to context.invokeNext()).

      A Valve MUST NOT do any of the following things:

      • Change request properties that have already been used to direct the flow of processing control for this request.
      • Create a completed Response AND pass this Request and Response on to the next Valve in the pipeline.
      • Consume bytes from the input stream associated with the Request, unless it is completely generating the response, or wrapping the request before passing it on.
      • Modify the HTTP headers included with the Response after the invokeNext() method has returned.
      • Perform any actions on the output stream associated with the specified Response after the invokeNext() method has returned.
      Parameters:
      pipelineData - The run-time information pipelineData
      context - The valve context used to invoke the next valve in the current processing pipeline
      Throws:
      IOException - Thrown by a subsequent Valve.
      PipelineException
    • initialize

      default void initialize() throws Exception
      Initialize the valve before using in a pipeline.
      Throws:
      Exception - if initialization fails
    • getValue

      default String getValue()
      DOCUMENT ME!
      Returns:
      DOCUMENT ME!
    • setValue

      default void setValue(String value)
      DOCUMENT ME!
      Parameters:
      value - DOCUMENT ME!
    • getPipeline

      default String getPipeline()
      DOCUMENT ME!
      Returns:
      DOCUMENT ME!
    • setPipeline

      default void setPipeline(String pipeline)
      DOCUMENT ME!
      Parameters:
      pipeline - DOCUMENT ME!