Class StepListener<Response>

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

public final class StepListener<Response>
extends NotifyOnceListener<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

  • Method Details

    • innerOnResponse

      protected void innerOnResponse​(Response response)
      Specified by:
      innerOnResponse in class NotifyOnceListener<Response>
    • innerOnFailure

      protected void innerOnFailure​(java.lang.Exception e)
      Specified by:
      innerOnFailure in class NotifyOnceListener<Response>
    • whenComplete

      public void whenComplete​(org.elasticsearch.common.CheckedConsumer<Response,​java.lang.Exception> onResponse, java.util.function.Consumer<java.lang.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
    • result

      public Response result()
      Gets the result of this step. This method will throw IllegalStateException if this step is not completed yet.