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);
  }
 
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.elasticsearch.action.ActionListener

    ActionListener.MappedActionListener<Response,​MappedResponse>
  • Constructor Summary

    Constructors
    Constructor Description
    StepListener()  
  • Method Summary

    Modifier and Type Method Description
    void addListener​(ActionListener<Response> listener)
    Registers the given listener to be notified with the result of this step.
    java.util.concurrent.Future<Response> asFuture()
    Returns the future associated with the given step listener
    protected void innerOnFailure​(java.lang.Exception e)  
    protected void innerOnResponse​(Response response)  
    Response result()
    Gets the result of this step.
    <OtherResponse,​ OuterResponse>
    StepListener<OuterResponse>
    thenCombine​(StepListener<OtherResponse> other, java.util.function.BiFunction<Response,​OtherResponse,​OuterResponse> fn)
    Combines this listener with another one, waiting for both to successfully complete and combining their results.
    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.

    Methods inherited from class org.elasticsearch.action.NotifyOnceListener

    onFailure, onResponse

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.elasticsearch.action.ActionListener

    map
  • Constructor Details

    • StepListener

      public StepListener()
  • 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
    • thenCombine

      public <OtherResponse,​ OuterResponse> StepListener<OuterResponse> thenCombine​(StepListener<OtherResponse> other, java.util.function.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
    • asFuture

      public java.util.concurrent.Future<Response> asFuture()
      Returns the future associated with the given step listener
    • result

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

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