Class StepListener<Response>

java.lang.Object
org.elasticsearch.action.StepListener<Response>
All Implemented Interfaces:
ActionListener<Response>

public final class StepListener<Response> extends Object implements ActionListener<Response>
A StepListener provides a simple way to write a flow consisting of multiple asynchronous steps without having nested callbacks. For example:

  void asyncFlowMethod(... ActionListener<R> flowListener) {
    StepListener<R1> step1 = new StepListener<>();
    asyncStep1(..., step1);

    StepListener<R2> step2 = new StepListener<>();
    step1.whenComplete(r1 -> {
      asyncStep2(r1, ..., step2);
    }, flowListener::onFailure);

    step2.whenComplete(r2 -> {
      R1 r1 = step1.result();
      R r = combine(r1, r2);
     flowListener.onResponse(r);
    }, flowListener::onFailure);
  }
 
  • Constructor Details

    • StepListener

      public StepListener()
  • Method Details

    • onResponse

      public void onResponse(Response response)
      Description copied from interface: ActionListener
      Handle action response. This response may constitute a failure or a success but it is up to the listener to make that decision.
      Specified by:
      onResponse in interface ActionListener<Response>
    • onFailure

      public void onFailure(Exception e)
      Description copied from interface: ActionListener
      A failure caused by an exception at some phase of the task.
      Specified by:
      onFailure in interface ActionListener<Response>
    • whenComplete

      public void whenComplete(CheckedConsumer<Response,Exception> onResponse, Consumer<Exception> onFailure)
      Registers the given actions which are called when this step is completed. If this step is completed successfully, the onResponse is called with the result; otherwise the onFailure is called with the failure.
      Parameters:
      onResponse - is called when this step is completed successfully
      onFailure - is called when this step is completed with a failure
    • thenCombine

      public <OtherResponse, OuterResponse> StepListener<OuterResponse> thenCombine(StepListener<OtherResponse> other, BiFunction<Response,OtherResponse,OuterResponse> fn)
      Combines this listener with another one, waiting for both to successfully complete and combining their results.
      Parameters:
      other - the other step listener to combine with
      fn - the function that combines the results
      Returns:
      the combined listener
    • result

      public Response result()
      Returns:
      the result of this step, if it has been completed successfully, or throw the exception with which it was completed exceptionally. It is not valid to call this method if the step is incomplete.
    • isDone

      public boolean isDone()
      Returns:
      whether this step is complete yet.
    • addListener

      public void addListener(ActionListener<Response> listener)
      Registers the given listener to be notified with the result of this step.