From 27efafecfc17879bd1db71d78a9aabe818019c91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Andr=C3=A9n?= Date: Fri, 22 Jul 2016 13:12:33 +0200 Subject: [PATCH] =htp #21009 Correct type of response in logging directive samples (#21010) * Correct type of response in logging directive samples #21009 * Updates to signatures in the docs as well --- .../DebuggingDirectivesExamplesTest.java | 8 +++--- .../DebuggingDirectivesExamplesSpec.scala | 25 ++++++++++--------- .../debugging-directives/logRequestResult.rst | 4 +-- .../debugging-directives/logResult.rst | 8 +++--- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/akka-docs/rst/java/code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java b/akka-docs/rst/java/code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java index dee1e78d3d..3910d1f8fe 100644 --- a/akka-docs/rst/java/code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java +++ b/akka-docs/rst/java/code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java @@ -48,7 +48,7 @@ public class DebuggingDirectivesExamplesTest extends JUnitRouteTest { // logs just the request method at info level Function requestMethodAsInfo = (request) -> - LogEntry.create(request.method().toString(), InfoLevel()); + LogEntry.create(request.method().name(), InfoLevel()); final Route routeUsingFunction = get(() -> logRequest(requestMethodAsInfo, () -> complete("logged"))); @@ -70,7 +70,7 @@ public class DebuggingDirectivesExamplesTest extends JUnitRouteTest { (response.status().isSuccess()) ? Optional.of( LogEntry.create( - request.method().toString() + ":" + response.status().intValue(), + request.method().name() + ":" + response.status().intValue(), InfoLevel())) : Optional.empty(); // not a successful response @@ -80,7 +80,7 @@ public class DebuggingDirectivesExamplesTest extends JUnitRouteTest { (!rejections.isEmpty()) ? Optional.of( LogEntry.create( - rejections + rejections .stream() .map(Rejection::toString) .collect(Collectors.joining(", ")), @@ -116,7 +116,7 @@ public class DebuggingDirectivesExamplesTest extends JUnitRouteTest { LogEntry.create( rejections .stream() - .map(rejection->rejection.toString()) + .map(rejection -> rejection.toString()) .collect(Collectors.joining(", ")), InfoLevel()); diff --git a/akka-docs/rst/scala/code/docs/http/scaladsl/server/directives/DebuggingDirectivesExamplesSpec.scala b/akka-docs/rst/scala/code/docs/http/scaladsl/server/directives/DebuggingDirectivesExamplesSpec.scala index 4ff330a9eb..37239609a5 100644 --- a/akka-docs/rst/scala/code/docs/http/scaladsl/server/directives/DebuggingDirectivesExamplesSpec.scala +++ b/akka-docs/rst/scala/code/docs/http/scaladsl/server/directives/DebuggingDirectivesExamplesSpec.scala @@ -6,6 +6,7 @@ package docs.http.scaladsl.server.directives import akka.event.Logging import akka.http.scaladsl.model.{ HttpRequest, HttpResponse } +import akka.http.scaladsl.server.RouteResult import akka.http.scaladsl.server.directives.{ DebuggingDirectives, LogEntry, LoggingMagnet } import docs.http.scaladsl.server.RoutingSpec @@ -21,15 +22,15 @@ class DebuggingDirectivesExamplesSpec extends RoutingSpec { DebuggingDirectives.logRequest(("get-user", Logging.InfoLevel)) // logs just the request method at debug level - def requestMethod(req: HttpRequest): String = req.method.toString + def requestMethod(req: HttpRequest): String = req.method.name DebuggingDirectives.logRequest(requestMethod _) // logs just the request method at info level - def requestMethodAsInfo(req: HttpRequest): LogEntry = LogEntry(req.method.toString, Logging.InfoLevel) + def requestMethodAsInfo(req: HttpRequest): LogEntry = LogEntry(req.method.name, Logging.InfoLevel) DebuggingDirectives.logRequest(requestMethodAsInfo _) // This one doesn't use the implicit LoggingContext but uses `println` for logging - def printRequestMethod(req: HttpRequest): Unit = println(req.method) + def printRequestMethod(req: HttpRequest): Unit = println(req.method.name) val logRequestPrintln = DebuggingDirectives.logRequest(LoggingMagnet(_ => printRequestMethod)) // tests: @@ -48,14 +49,14 @@ class DebuggingDirectivesExamplesSpec extends RoutingSpec { DebuggingDirectives.logRequestResult(("get-user", Logging.InfoLevel)) // logs just the request method and response status at info level - def requestMethodAndResponseStatusAsInfo(req: HttpRequest): Any => Option[LogEntry] = { - case res: HttpResponse => Some(LogEntry(req.method + ":" + res.status, Logging.InfoLevel)) - case _ => None // other kind of responses + def requestMethodAndResponseStatusAsInfo(req: HttpRequest): RouteResult => Option[LogEntry] = { + case RouteResult.Complete(res) => Some(LogEntry(req.method.name + ": " + res.status, Logging.InfoLevel)) + case _ => None // no log entries for rejections } DebuggingDirectives.logRequestResult(requestMethodAndResponseStatusAsInfo _) // This one doesn't use the implicit LoggingContext but uses `println` for logging - def printRequestMethodAndResponseStatus(req: HttpRequest)(res: Any): Unit = + def printRequestMethodAndResponseStatus(req: HttpRequest)(res: RouteResult): Unit = println(requestMethodAndResponseStatusAsInfo(req)(res).map(_.obj.toString).getOrElse("")) val logRequestResultPrintln = DebuggingDirectives.logRequestResult(LoggingMagnet(_ => printRequestMethodAndResponseStatus)) @@ -75,18 +76,18 @@ class DebuggingDirectivesExamplesSpec extends RoutingSpec { DebuggingDirectives.logResult(("get-user", Logging.InfoLevel)) // logs just the response status at debug level - def responseStatus(res: Any): String = res match { - case x: HttpResponse => x.status.toString - case _ => "unknown response part" + def responseStatus(res: RouteResult): String = res match { + case RouteResult.Complete(x) => x.status.toString + case RouteResult.Rejected(rejections) => "Rejected: " + rejections.mkString(", ") } DebuggingDirectives.logResult(responseStatus _) // logs just the response status at info level - def responseStatusAsInfo(res: Any): LogEntry = LogEntry(responseStatus(res), Logging.InfoLevel) + def responseStatusAsInfo(res: RouteResult): LogEntry = LogEntry(responseStatus(res), Logging.InfoLevel) DebuggingDirectives.logResult(responseStatusAsInfo _) // This one doesn't use the implicit LoggingContext but uses `println` for logging - def printResponseStatus(res: Any): Unit = println(responseStatus(res)) + def printResponseStatus(res: RouteResult): Unit = println(responseStatus(res)) val logResultPrintln = DebuggingDirectives.logResult(LoggingMagnet(_ => printResponseStatus)) // tests: diff --git a/akka-docs/rst/scala/http/routing-dsl/directives/debugging-directives/logRequestResult.rst b/akka-docs/rst/scala/http/routing-dsl/directives/debugging-directives/logRequestResult.rst index 801bd8fc65..23c2f42e04 100644 --- a/akka-docs/rst/scala/http/routing-dsl/directives/debugging-directives/logRequestResult.rst +++ b/akka-docs/rst/scala/http/routing-dsl/directives/debugging-directives/logRequestResult.rst @@ -10,9 +10,7 @@ Signature def logRequestResult(marker: String)(implicit log: LoggingContext): Directive0 def logRequestResult(marker: String, level: LogLevel)(implicit log: LoggingContext): Directive0 - def logRequestResult(show: HttpRequest => HttpResponsePart => Option[LogEntry]) - (implicit log: LoggingContext): Directive0 - def logRequestResult(show: HttpRequest => Any => Option[LogEntry])(implicit log: LoggingContext): Directive0 + def logRequestResult(show: HttpRequest => RouteResult => Option[LogEntry])(implicit log: LoggingContext): Directive0 The signature shown is simplified, the real signature uses magnets. [1]_ diff --git a/akka-docs/rst/scala/http/routing-dsl/directives/debugging-directives/logResult.rst b/akka-docs/rst/scala/http/routing-dsl/directives/debugging-directives/logResult.rst index bdbbe4e2de..17403bb018 100644 --- a/akka-docs/rst/scala/http/routing-dsl/directives/debugging-directives/logResult.rst +++ b/akka-docs/rst/scala/http/routing-dsl/directives/debugging-directives/logResult.rst @@ -10,9 +10,9 @@ Signature def logResult(marker: String)(implicit log: LoggingContext): Directive0 def logResult(marker: String, level: LogLevel)(implicit log: LoggingContext): Directive0 - def logResult(show: Any => String)(implicit log: LoggingContext): Directive0 - def logResult(show: Any => LogEntry)(implicit log: LoggingContext): Directive0 - def logResult(magnet: LoggingMagnet[Any => Unit])(implicit log: LoggingContext): Directive0 + def logResult(show: RouteResult => String)(implicit log: LoggingContext): Directive0 + def logResult(show: RouteResult => LogEntry)(implicit log: LoggingContext): Directive0 + def logResult(magnet: LoggingMagnet[RouteResult => Unit])(implicit log: LoggingContext): Directive0 The signature shown is simplified, the real signature uses magnets. [1]_ @@ -24,7 +24,7 @@ Description Logs the response. See :ref:`-logRequest-` for the general description how these directives work. This directive is different -as it requires a ``LoggingMagnet[Any => Unit]``. Instead of just logging ``HttpResponses``, ``logResult`` is able to +as it requires a ``LoggingMagnet[RouteResult => Unit]``. Instead of just logging ``HttpResponses``, ``logResult`` is able to log any :ref:`RouteResult` coming back from the inner route. Use ``logRequest`` for logging the request, or ``logRequestResult`` for logging both.