java.lang.Object
org.elasticsearch.action.StepListener<Response>
- All Implemented Interfaces:
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 Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addListener
(ActionListener<Response> listener) Registers the given listener to be notified with the result of this step.boolean
isDone()
void
A failure caused by an exception at some phase of the task.void
onResponse
(Response response) Handle action response.result()
<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.void
whenComplete
(CheckedConsumer<Response, Exception> onResponse, Consumer<Exception> onFailure) Registers the given actions which are called when this step is completed.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
delegateFailure, delegateResponse, map
-
Constructor Details
-
StepListener
public StepListener()
-
-
Method Details
-
onResponse
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 interfaceActionListener<Response>
-
onFailure
Description copied from interface:ActionListener
A failure caused by an exception at some phase of the task.- Specified by:
onFailure
in interfaceActionListener<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, theonResponse
is called with the result; otherwise theonFailure
is 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, 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
-
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
Registers the given listener to be notified with the result of this step.
-