onSuccess
Description
Evaluates its parameter of type Future[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
- Scala
-
val route = path("success") { onSuccess(Future { "Ok" }) { extraction => complete(extraction) } } ~ path("failure") { onSuccess(Future.failed[String](TestException)) { extraction => complete(extraction) } } // tests: Get("/success") ~> route ~> check { responseAs[String] shouldEqual "Ok" } Get("/failure") ~> Route.seal(route) ~> check { status shouldEqual InternalServerError responseAs[String] shouldEqual "Unsuccessful future!" }
- Java