onSuccess
Description
Evaluates its parameter of type CompletionStage<T>
, and once it has been completed successfully, extracts its result as a value of type T
and passes it to the inner route.
If the future fails its failure throwable is bubbled up to the nearest ExceptionHandler
.
To handle the Failure
case manually as well, use onComplete, instead.
Example
final Route route = path("success", () ->
onSuccess(() -> CompletableFuture.supplyAsync(() -> "Ok"),
extraction -> complete(extraction)
)
).orElse(path("failure", () ->
onSuccess(() -> CompletableFuture.supplyAsync(() -> {
throw new RuntimeException();
}),
extraction -> complete("never reaches here"))
));
testRoute(route).run(HttpRequest.GET("/success"))
.assertEntity("Ok");
testRoute(route).run(HttpRequest.GET("/failure"))
.assertStatusCode(StatusCodes.InternalServerError())
.assertEntity("There was an internal server error.");