diff --git a/akka-docs/rst/java/code/docs/http/javadsl/server/directives/ParameterDirectivesExamplesTest.java b/akka-docs/rst/java/code/docs/http/javadsl/server/directives/ParameterDirectivesExamplesTest.java new file mode 100644 index 0000000000..203a4a595b --- /dev/null +++ b/akka-docs/rst/java/code/docs/http/javadsl/server/directives/ParameterDirectivesExamplesTest.java @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2016-2016 Lightbend Inc. + */ +package docs.http.javadsl.server.directives; + +import akka.http.javadsl.model.HttpRequest; +import akka.http.javadsl.model.StatusCodes; +import akka.http.javadsl.server.Route; +import akka.http.javadsl.testkit.JUnitRouteTest; +import org.junit.Test; + +import java.util.Map.Entry; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class ParameterDirectivesExamplesTest extends JUnitRouteTest { + + @Test + public void testParameter() { + //#parameter + final Route route = parameter("color", color -> + complete("The color is '" + color + "'") + ); + + // tests: + testRoute(route).run(HttpRequest.GET("/?color=blue")) + .assertEntity("The color is 'blue'"); + + testRoute(route).run(HttpRequest.GET("/")) + .assertStatusCode(StatusCodes.NOT_FOUND) + .assertEntity("Request is missing required query parameter 'color'"); + //#parameter + } + + @Test + public void testParameters() { + //#parameters + final Route route = parameter("color", color -> + parameter("backgroundColor", backgroundColor -> + complete("The color is '" + color + + "' and the background is '" + backgroundColor + "'") + ) + ); + + // tests: + testRoute(route).run(HttpRequest.GET("/?color=blue&backgroundColor=red")) + .assertEntity("The color is 'blue' and the background is 'red'"); + + testRoute(route).run(HttpRequest.GET("/?color=blue")) + .assertStatusCode(StatusCodes.NOT_FOUND) + .assertEntity("Request is missing required query parameter 'backgroundColor'"); + //#parameters + } + + @Test + public void testParameterMap() { + //#parameterMap + final Function paramString = + entry -> entry.getKey() + " = '" + entry.getValue() + "'"; + + final Route route = parameterMap(params -> { + final String pString = params.entrySet() + .stream() + .map(paramString::apply) + .collect(Collectors.joining(", ")); + return complete("The parameters are " + pString); + }); + + // tests: + testRoute(route).run(HttpRequest.GET("/?color=blue&count=42")) + .assertEntity("The parameters are color = 'blue', count = '42'"); + + testRoute(route).run(HttpRequest.GET("/?x=1&x=2")) + .assertEntity("The parameters are x = '2'"); + //#parameterMap + } + + @Test + public void testParameterMultiMap() { + //#parameterMultiMap + final Route route = parameterMultiMap(params -> { + final String pString = params.entrySet() + .stream() + .map(e -> e.getKey() + " -> " + e.getValue().size()) + .collect(Collectors.joining(", ")); + return complete("There are parameters " + pString); + }); + + // tests: + testRoute(route).run(HttpRequest.GET("/?color=blue&count=42")) + .assertEntity("There are parameters color -> 1, count -> 1"); + + testRoute(route).run(HttpRequest.GET("/?x=23&x=42")) + .assertEntity("There are parameters x -> 2"); + //#parameterMultiMap + } + + @Test + public void testParameterSeq() { + //#parameterSeq + final Function paramString = + entry -> entry.getKey() + " = '" + entry.getValue() + "'"; + + final Route route = parameterList(params -> { + final String pString = params.stream() + .map(paramString::apply) + .collect(Collectors.joining(", ")); + + return complete("The parameters are " + pString); + }); + + // tests: + testRoute(route).run(HttpRequest.GET("/?color=blue&count=42")) + .assertEntity("The parameters are color = 'blue', count = '42'"); + + testRoute(route).run(HttpRequest.GET("/?x=1&x=2")) + .assertEntity("The parameters are x = '1', x = '2'"); + //#parameterSeq + } + +} diff --git a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/index.rst b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/index.rst index 249c508f2f..abc97ca249 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/index.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/index.rst @@ -7,6 +7,7 @@ ParameterDirectives :maxdepth: 1 parameter + parameters parameterMap parameterMultiMap parameterSeq diff --git a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameter.rst b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameter.rst index 93491087c1..76ad0cf33d 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameter.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameter.rst @@ -12,4 +12,5 @@ See :ref:`which-parameter-directive-java` to understand when to use which direct Example ------- -TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 `_. + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/ParameterDirectivesExamplesTest.java#parameter diff --git a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterMap.rst b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterMap.rst index 7713310308..0001549794 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterMap.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterMap.rst @@ -12,4 +12,5 @@ See also :ref:`which-parameter-directive-java` to understand when to use which d Example ------- -TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 `_. + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/ParameterDirectivesExamplesTest.java#parameterMap diff --git a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterMultiMap.rst b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterMultiMap.rst index 75bceb91b6..124272a93f 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterMultiMap.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterMultiMap.rst @@ -17,4 +17,5 @@ See :ref:`which-parameter-directive-java` to understand when to use which direct Example ------- -TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 `_. + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/ParameterDirectivesExamplesTest.java#parameterMultiMap diff --git a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterSeq.rst b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterSeq.rst index 89c6808c91..c767389cf7 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterSeq.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameterSeq.rst @@ -13,4 +13,5 @@ See :ref:`which-parameter-directive-java` to understand when to use which direct Example ------- -TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 `_. + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/ParameterDirectivesExamplesTest.java#parameterSeq diff --git a/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameters.rst b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameters.rst new file mode 100644 index 0000000000..927a0a4d6e --- /dev/null +++ b/akka-docs/rst/java/http/routing-dsl/directives/parameter-directives/parameters.rst @@ -0,0 +1,15 @@ +.. _-parameters-java-: + +parameters +========= +Extracts multiple *query* parameter values from the request. + +Description +----------- + +See :ref:`which-parameter-directive-java` to understand when to use which directive. + +Example +------- + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/ParameterDirectivesExamplesTest.java#parameters diff --git a/akka-persistence/src/main/scala/akka/persistence/Eventsourced.scala b/akka-persistence/src/main/scala/akka/persistence/Eventsourced.scala index dd6fd10ad1..4f01d2739c 100644 --- a/akka-persistence/src/main/scala/akka/persistence/Eventsourced.scala +++ b/akka-persistence/src/main/scala/akka/persistence/Eventsourced.scala @@ -636,9 +636,9 @@ private[persistence] trait Eventsourced extends Snapshotter with PersistenceStas writeInProgress = false () // it will be stopped by the first WriteMessageFailure message - case _: RecoveryTick => - // we may have one of these in the mailbox before the scheduled timeout - // is cancelled when recovery has completed, just consume it so the concrete actor never sees it + case _: RecoveryTick ⇒ + // we may have one of these in the mailbox before the scheduled timeout + // is cancelled when recovery has completed, just consume it so the concrete actor never sees it } def onWriteMessageComplete(err: Boolean): Unit diff --git a/akka-stream-testkit/src/main/scala/akka/stream/testkit/StreamTestKit.scala b/akka-stream-testkit/src/main/scala/akka/stream/testkit/StreamTestKit.scala index b01e48dd2f..08ea91d654 100644 --- a/akka-stream-testkit/src/main/scala/akka/stream/testkit/StreamTestKit.scala +++ b/akka-stream-testkit/src/main/scala/akka/stream/testkit/StreamTestKit.scala @@ -606,8 +606,8 @@ object TestSubscriber { } /** - * Request and expect a stream element. - */ + * Request and expect a stream element. + */ def requestNext(element: T): Self = { subscription.request(1) expectNext(element) @@ -620,16 +620,16 @@ object TestSubscriber { } /** - * Request and expect a stream element. - */ + * Request and expect a stream element. + */ def requestNext(): T = { subscription.request(1) expectNext() } /** - * Request and expect a stream element during the specified time or timeout. - */ + * Request and expect a stream element during the specified time or timeout. + */ def requestNext(d: FiniteDuration): T = { subscription.request(1) expectNext(d)