mapRouteResultPF
Description
Partial Function version of mapRouteResult.
Changes the message the inner route sends to the responder.
The mapRouteResult
directive is used as a building block for Custom Directives to transform the RouteResult coming back from the inner route. It’s similar to the mapRouteResult directive but allows to specify a partial function that doesn’t have to handle all potential RouteResult
RouteResult
instances.
See Result Transformation Directives for similar directives.
Example
- Scala
-
source
case object MyCustomRejection extends Rejection val rejectRejections = // not particularly useful directive mapRouteResultPF { case Rejected(_) => Rejected(List(AuthorizationFailedRejection)) } val route = rejectRejections { reject(MyCustomRejection) } // tests: Get("/") ~> route ~> check { rejection shouldEqual AuthorizationFailedRejection }
- Java
-
source
import static akka.http.javadsl.server.Directives.mapRouteResultPF; import static akka.http.javadsl.server.Directives.mapRouteResultPF; import static akka.http.javadsl.server.Directives.reject; final Route route = mapRouteResultPF( new PFBuilder<RouteResult, RouteResult>() .match(Rejected.class, rejected -> { final Iterable<Rejection> rejections = Collections.singletonList(Rejections.authorizationFailed()); return RouteResults.rejected(rejections); }).build(), () -> reject(new MyCustomRejection())); // tests: runRouteUnSealed(route, HttpRequest.GET("/")) .assertRejections(Rejections.authorizationFailed());