Package org.elasticsearch.action
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.Delegating<Response,DelegateResponse>, ActionListener.DelegatingActionListener<T>, ActionListener.DelegatingFailureActionListener<T,R>, ActionListener.MappedActionListener<Response,MappedResponse>, ActionListener.RunAfterActionListener<T>, ActionListener.RunBeforeActionListener<T> -
Constructor Summary
Constructors Constructor Description StepListener() -
Method Summary
Modifier and Type Method Description voidaddListener(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 listenerprotected voidinnerOnFailure(java.lang.Exception e)protected voidinnerOnResponse(Response response)Responseresult()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.voidwhenComplete(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, onResponseMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.elasticsearch.action.ActionListener
delegateFailure, delegateResponse, map
-
Constructor Details
-
StepListener
public StepListener()
-
-
Method Details
-
innerOnResponse
- Specified by:
innerOnResponsein classNotifyOnceListener<Response>
-
innerOnFailure
protected void innerOnFailure(java.lang.Exception e)- Specified by:
innerOnFailurein classNotifyOnceListener<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, theonResponseis called with the result; otherwise theonFailureis called with the failure.- Parameters:
onResponse- is called when this step is completed successfullyonFailure- 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 withfn- the function that combines the results- Returns:
- the combined listener
-
asFuture
Returns the future associated with the given step listener -
result
Gets the result of this step. This method will throwIllegalStateExceptionif this step is not completed yet. -
addListener
Registers the given listener to be notified with the result of this step.
-