Class 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 Detail

      • StepListener

        public StepListener()
    • Method Detail

      • 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
      • result

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