diff --git a/.github/workflows/link-validator.yml b/.github/workflows/link-validator.yml
index 4bc3c5f28a..6542040587 100644
--- a/.github/workflows/link-validator.yml
+++ b/.github/workflows/link-validator.yml
@@ -28,7 +28,7 @@ jobs:
uses: coursier/cache-action@v6.4.0
- name: create the Akka site
- run: sbt -Dakka.genjavadoc.enabled=true "Javaunidoc/doc; Compile/unidoc; akka-docs/paradox"
+ run: sbt -Dakka.genjavadoc.enabled=true "Javaunidoc/doc; Compile/unidoc; docs/paradox"
- name: Install Coursier command line tool
run: curl -fLo cs https://git.io/coursier-cli-linux && chmod +x cs && ./cs
diff --git a/.gitignore b/.gitignore
index f914f3e6f6..fdb1c7885e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,11 +45,9 @@ _akka_cluster/
_dump
_mb
activemq-data
-akka-contrib/rst_preprocessed/
-akka-docs-dev/rst_preprocessed/
-akka-docs/_build/
-akka-docs/exts/
-akka-docs/rst_preprocessed/
+docs/_build/
+docs/exts/
+docs/rst_preprocessed/
akka-osgi/src/main/resources/*.conf
akka.sublime-project
akka.sublime-workspace
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f09d245197..2b6b81a0b9 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -70,7 +70,7 @@ The steps are exactly the same for everyone involved in the project, including t
- Please write additional tests covering your feature and adjust existing ones if needed before submitting your pull request. The `validatePullRequest` sbt task ([explained below](#the-validatepullrequest-task)) may come in handy to verify your changes are correct.
- Use the `verifyCodeStyle` sbt task to ensure your code is properly formatted and includes the proper copyright headers.
1. Once your feature is complete, prepare the commit following our [Creating Commits And Writing Commit Messages](#creating-commits-and-writing-commit-messages). For example, a good commit message would be: `Adding compression support for Manifests #22222` (note the reference to the ticket it aimed to resolve).
-1. If it's a new feature or a change of behavior, document it on the [akka-docs](https://github.com/apache/incubator-pekko/tree/main/akka-docs). When the feature touches Scala and Java DSL, document both the Scala and Java APIs.
+1. If it's a new feature or a change of behavior, document it on the [docs](https://github.com/apache/incubator-pekko/tree/main/docs). When the feature touches Scala and Java DSL, document both the Scala and Java APIs.
1. Now it's finally time to [submit the pull request](https://help.github.com/articles/using-pull-requests)!
- Please make sure to include a reference to the issue you're solving *in the comment* for the Pull Request, as this will cause the PR to be linked properly with the issue. Examples of good phrases for this are: "Resolves #1234" or "Refs #1234".
1. If you are a first time contributor, a core member must approve the CI to run for your pull request.
@@ -218,7 +218,7 @@ The Pekko build includes a special task called `validatePullRequest`, which inve
then running tests only on those projects.
For example, changing something in `akka-actor` would cause tests to be run in all projects which depend on it
-(e.g. `akka-actor-tests`, `akka-stream`, `akka-docs` etc.).
+(e.g. `akka-actor-tests`, `akka-stream`, `docs` etc.).
To use the task, simply type `validatePullRequest`, and the output should include entries like shown below:
@@ -226,7 +226,7 @@ To use the task, simply type `validatePullRequest`, and the output should includ
> validatePullRequest
[info] Diffing [HEAD] to determine changed modules in PR...
[info] Detected uncomitted changes in directories (including in dependency analysis): [akka-protobuf,project]
-[info] Detected changes in directories: [akka-actor-tests, project, akka-stream, akka-docs, akka-persistence]
+[info] Detected changes in directories: [akka-actor-tests, project, akka-stream, docs, akka-persistence]
```
By default, changes are diffed with the `main` branch when working locally. If you want to validate against a different
@@ -279,7 +279,7 @@ rolling upgrade to the next version.
All wire protocol changes that may concern rolling upgrades should be documented in the
[Rolling Update Changelog](https://pekko.apache.org/)
-(found in akka-docs/src/main/paradox/project/rolling-update.md)
+(found in docs/src/main/paradox/project/rolling-update.md)
### Protobuf
@@ -321,12 +321,12 @@ To build the documentation locally:
```shell
sbt
-akka-docs/paradox
+docs/paradox
```
-The generated HTML documentation is in `akka-docs/target/paradox/site/main/index.html`.
+The generated HTML documentation is in `docs/target/paradox/site/main/index.html`.
-Alternatively, use `akka-docs/paradoxBrowse` to open the generated docs in your default web browser.
+Alternatively, use `docs/paradoxBrowse` to open the generated docs in your default web browser.
#### Links to API documentation
@@ -567,7 +567,7 @@ Scala has proven the most viable way to do it, as long as you keep the following
Documentation of Pekko Streams operators is automatically enforced.
If a method exists on Source / Sink / Flow, or any other class listed in `project/StreamOperatorsIndexGenerator.scala`,
-it must also have a corresponding documentation page under `akka-docs/src/main/paradox/streams/operators/...`.
+it must also have a corresponding documentation page under `docs/src/main/paradox/streams/operators/...`.
Pekko Streams operators' consistency is enforced by `ConsistencySpec`, normally an operator should exist on both Source / SubSource, Flow / SubFlow, Sink / SubSink.
@@ -577,7 +577,7 @@ docs pages in there to see the pattern in action. In general the page must consi
- the title, including where the operator is defined (e.g. `ActorFlow.ask` or `Source.map`)
- a short explanation of what this operator does, 1 sentence is optimal
- an image explaining the operator more visually (whenever possible)
-- a link to the operators' "category" (these are listed in `akka-docs/src/main/paradox/categories`)
+- a link to the operators' "category" (these are listed in `docs/src/main/paradox/categories`)
- the method signature snippet (use the built in directives to generate it)
- a longer explanation about the operator and its exact semantics (when it pulls, cancels, signals elements)
- at least one usage example
diff --git a/RELEASING.md b/RELEASING.md
index d2c4a2ad15..f54504b4ca 100644
--- a/RELEASING.md
+++ b/RELEASING.md
@@ -71,7 +71,7 @@ It is possible to release a revised documentation to the already existing releas
1. Switch to a new branch for your documentation change, make the change
1. Build documentation locally with:
```sh
- sbt akka-docs/paradoxBrowse
+ sbt docs/paradoxBrowse
```
1. If the generated documentation looks good, create a PR to the `docs/v2.6.4` branch you created earlier.
1. It should automatically be published by GitHub Actions on merge.
diff --git a/akka-docs/src/main/paradox/project/issue-tracking.md b/akka-docs/src/main/paradox/project/issue-tracking.md
deleted file mode 100644
index c25a9f51be..0000000000
--- a/akka-docs/src/main/paradox/project/issue-tracking.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Issue Tracking
-
-Akka is using GitHub Issues as its issue tracking system.
-
-## Browsing
-
-### Tickets
-
-Before filing a ticket, please check the existing [Akka tickets](https://github.com/akka/akka/issues) for earlier reports of the same
-problem. You are very welcome to comment on existing tickets, especially if you
-have reproducible test cases that you can share.
-
-### Roadmaps
-
-Short and long-term plans are published in the [akka/akka-meta](https://github.com/akka/akka-meta/issues) repository.
-
-## Creating tickets
-
-*Please include the versions of Scala and Akka and relevant configuration files.*
-
-You can create a [new ticket](https://github.com/akka/akka/issues/new) if you
-have registered a GitHub user account.
-
-Thanks a lot for reporting bugs and suggesting features!
-
-## Submitting Pull Requests
-
-@@@ note
-
-*A pull request is worth a thousand +1's.* -- Old Klangian Proverb
-
-@@@
-
-Pull Requests fixing issues or adding functionality are very welcome.
-Please read [CONTRIBUTING.md](https://github.com/akka/akka/blob/main/CONTRIBUTING.md) for
-more information about contributing to Akka.
diff --git a/build.sbt b/build.sbt
index 5108c4f3f4..c4357a9e5c 100644
--- a/build.sbt
+++ b/build.sbt
@@ -85,7 +85,7 @@ lazy val aggregatedProjects: Seq[ProjectReference] = userProjects ++ List[Projec
streamTests,
streamTestsTck)
-lazy val root = Project(id = "akka", base = file("."))
+lazy val root = Project(id = "pekko", base = file("."))
.aggregate(aggregatedProjects: _*)
.enablePlugins(PublishRsyncPlugin)
.settings(rootSettings: _*)
@@ -203,7 +203,7 @@ lazy val distributedData = akkaModule("akka-distributed-data")
.configs(MultiJvm)
.enablePlugins(MultiNodeScalaTest)
-lazy val docs = akkaModule("akka-docs")
+lazy val docs = akkaModule("docs")
.configs(Jdk9.TestJdk9)
.dependsOn(
actor,
diff --git a/akka-docs/src/main/categories/actor-interop-operators.md b/docs/src/main/categories/actor-interop-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/actor-interop-operators.md
rename to docs/src/main/categories/actor-interop-operators.md
diff --git a/akka-docs/src/main/categories/additional-sink-and-source-converters.md b/docs/src/main/categories/additional-sink-and-source-converters.md
similarity index 100%
rename from akka-docs/src/main/categories/additional-sink-and-source-converters.md
rename to docs/src/main/categories/additional-sink-and-source-converters.md
diff --git a/akka-docs/src/main/categories/asynchronous-operators.md b/docs/src/main/categories/asynchronous-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/asynchronous-operators.md
rename to docs/src/main/categories/asynchronous-operators.md
diff --git a/akka-docs/src/main/categories/backpressure-aware-operators.md b/docs/src/main/categories/backpressure-aware-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/backpressure-aware-operators.md
rename to docs/src/main/categories/backpressure-aware-operators.md
diff --git a/akka-docs/src/main/categories/compression-operators.md b/docs/src/main/categories/compression-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/compression-operators.md
rename to docs/src/main/categories/compression-operators.md
diff --git a/akka-docs/src/main/categories/error-handling.md b/docs/src/main/categories/error-handling.md
similarity index 100%
rename from akka-docs/src/main/categories/error-handling.md
rename to docs/src/main/categories/error-handling.md
diff --git a/akka-docs/src/main/categories/fan-in-operators.md b/docs/src/main/categories/fan-in-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/fan-in-operators.md
rename to docs/src/main/categories/fan-in-operators.md
diff --git a/akka-docs/src/main/categories/fan-out-operators.md b/docs/src/main/categories/fan-out-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/fan-out-operators.md
rename to docs/src/main/categories/fan-out-operators.md
diff --git a/akka-docs/src/main/categories/file-io-sinks-and-sources.md b/docs/src/main/categories/file-io-sinks-and-sources.md
similarity index 100%
rename from akka-docs/src/main/categories/file-io-sinks-and-sources.md
rename to docs/src/main/categories/file-io-sinks-and-sources.md
diff --git a/akka-docs/src/main/categories/flow-operators-composed-of-sinks-and-sources.md b/docs/src/main/categories/flow-operators-composed-of-sinks-and-sources.md
similarity index 100%
rename from akka-docs/src/main/categories/flow-operators-composed-of-sinks-and-sources.md
rename to docs/src/main/categories/flow-operators-composed-of-sinks-and-sources.md
diff --git a/akka-docs/src/main/categories/nesting-and-flattening-operators.md b/docs/src/main/categories/nesting-and-flattening-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/nesting-and-flattening-operators.md
rename to docs/src/main/categories/nesting-and-flattening-operators.md
diff --git a/akka-docs/src/main/categories/simple-operators.md b/docs/src/main/categories/simple-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/simple-operators.md
rename to docs/src/main/categories/simple-operators.md
diff --git a/akka-docs/src/main/categories/sink-operators.md b/docs/src/main/categories/sink-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/sink-operators.md
rename to docs/src/main/categories/sink-operators.md
diff --git a/akka-docs/src/main/categories/source-operators.md b/docs/src/main/categories/source-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/source-operators.md
rename to docs/src/main/categories/source-operators.md
diff --git a/akka-docs/src/main/categories/time-aware-operators.md b/docs/src/main/categories/time-aware-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/time-aware-operators.md
rename to docs/src/main/categories/time-aware-operators.md
diff --git a/akka-docs/src/main/categories/timer-driven-operators.md b/docs/src/main/categories/timer-driven-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/timer-driven-operators.md
rename to docs/src/main/categories/timer-driven-operators.md
diff --git a/akka-docs/src/main/categories/watching-status-operators.md b/docs/src/main/categories/watching-status-operators.md
similarity index 100%
rename from akka-docs/src/main/categories/watching-status-operators.md
rename to docs/src/main/categories/watching-status-operators.md
diff --git a/akka-docs/src/main/java/docs/ddata/protobuf/msg/TwoPhaseSetMessages.java b/docs/src/main/java/docs/ddata/protobuf/msg/TwoPhaseSetMessages.java
similarity index 100%
rename from akka-docs/src/main/java/docs/ddata/protobuf/msg/TwoPhaseSetMessages.java
rename to docs/src/main/java/docs/ddata/protobuf/msg/TwoPhaseSetMessages.java
diff --git a/akka-docs/src/main/java/docs/persistence/proto/FlightAppModels.java b/docs/src/main/java/docs/persistence/proto/FlightAppModels.java
similarity index 100%
rename from akka-docs/src/main/java/docs/persistence/proto/FlightAppModels.java
rename to docs/src/main/java/docs/persistence/proto/FlightAppModels.java
diff --git a/akka-docs/src/main/paradox/.htaccess b/docs/src/main/paradox/.htaccess
similarity index 100%
rename from akka-docs/src/main/paradox/.htaccess
rename to docs/src/main/paradox/.htaccess
diff --git a/akka-docs/src/main/paradox/_template/projectSpecificFooter.st b/docs/src/main/paradox/_template/projectSpecificFooter.st
similarity index 100%
rename from akka-docs/src/main/paradox/_template/projectSpecificFooter.st
rename to docs/src/main/paradox/_template/projectSpecificFooter.st
diff --git a/akka-docs/src/main/paradox/actors.md b/docs/src/main/paradox/actors.md
similarity index 86%
rename from akka-docs/src/main/paradox/actors.md
rename to docs/src/main/paradox/actors.md
index ebbdcbfb35..038e8c24ea 100644
--- a/akka-docs/src/main/paradox/actors.md
+++ b/docs/src/main/paradox/actors.md
@@ -71,10 +71,10 @@ The `createReceive` method has no arguments and returns @javadoc[AbstractActor.R
Here is an example:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #imports1 #my-actor }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #imports1 #my-actor }
Java
-: @@snip [MyActor.java](/akka-docs/src/test/java/jdocs/actor/MyActor.java) { #imports #my-actor }
+: @@snip [MyActor.java](/docs/src/test/java/jdocs/actor/MyActor.java) { #imports #my-actor }
Please note that the Akka Actor @scala[`receive`] message loop is exhaustive, which is different compared to Erlang and the late Scala Actors. This means that you
need to provide a pattern match for all messages that it can accept and if you
@@ -97,7 +97,7 @@ construction.
#### Here is another example that you can edit and run in the browser:
-@@fiddle [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #fiddle_code template="Akka" layout="v75" minheight="400px" }
+@@fiddle [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #fiddle_code template="Akka" layout="v75" minheight="400px" }
@@@
@@ -110,10 +110,10 @@ dispatcher to use, see more below). Here are some examples of how to create a
`Props` instance.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #creating-props }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #creating-props }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-props #creating-props }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-props #creating-props }
The second variant shows how to pass constructor arguments to the
@@ -135,10 +135,10 @@ for cases when the actor constructor takes value classes as arguments.
#### Dangerous Variants
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #creating-props-deprecated }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #creating-props-deprecated }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #creating-props-deprecated }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #creating-props-deprecated }
This method is not recommended being used within another actor because it
encourages to close over the enclosing scope, resulting in non-serializable
@@ -170,13 +170,13 @@ There are two edge cases in actor creation with @scaladoc[actor.Props](pekko.act
* An actor with @scaladoc[AnyVal](scala.AnyVal) arguments.
-@@snip [PropsEdgeCaseSpec.scala](/akka-docs/src/test/scala/docs/actor/PropsEdgeCaseSpec.scala) { #props-edge-cases-value-class }
+@@snip [PropsEdgeCaseSpec.scala](/docs/src/test/scala/docs/actor/PropsEdgeCaseSpec.scala) { #props-edge-cases-value-class }
-@@snip [PropsEdgeCaseSpec.scala](/akka-docs/src/test/scala/docs/actor/PropsEdgeCaseSpec.scala) { #props-edge-cases-value-class-example }
+@@snip [PropsEdgeCaseSpec.scala](/docs/src/test/scala/docs/actor/PropsEdgeCaseSpec.scala) { #props-edge-cases-value-class-example }
* An actor with default constructor values.
-@@snip [PropsEdgeCaseSpec.scala](/akka-docs/src/test/scala/docs/actor/PropsEdgeCaseSpec.scala) { #props-edge-cases-default-values }
+@@snip [PropsEdgeCaseSpec.scala](/docs/src/test/scala/docs/actor/PropsEdgeCaseSpec.scala) { #props-edge-cases-default-values }
In both cases, an @javadoc[IllegalArgumentException](java.lang.IllegalArgumentException) will be thrown stating
no matching constructor could be found.
@@ -197,10 +197,10 @@ arguments as constructor parameters, since within static method]
the given code block will not retain a reference to its enclosing scope:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #props-factory }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #props-factory }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #props-factory }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #props-factory }
Another good practice is to declare what messages an Actor can receive
@scala[in the companion object of the Actor]
@@ -208,10 +208,10 @@ Another good practice is to declare what messages an Actor can receive
which makes easier to know what it can receive:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #messages-in-companion }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #messages-in-companion }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #messages-in-companion }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #messages-in-companion }
### Creating Actors with Props
@@ -220,20 +220,20 @@ Actors are created by passing a @apidoc[actor.Props] instance into the
@apidoc[actor.ActorContext].
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #system-actorOf }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #system-actorOf }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-actorRef }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-actorRef }
Using the `ActorSystem` will create top-level actors, supervised by the
actor system’s provided guardian actor while using an actor’s context will
create a child actor.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #context-actorOf }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #context-actorOf }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #context-actorOf }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #context-actorOf }
It is recommended to create a hierarchy of children, grand-children and so on
such that it fits the logical failure-handling structure of the application,
@@ -266,7 +266,7 @@ value classes.
In these cases you should either unpack the arguments or create the props by
calling the constructor manually:
-@@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #actor-with-value-class-argument }
+@@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #actor-with-value-class-argument }
@@@
@@ -278,10 +278,10 @@ are cases when a factory method must be used, for example when the actual
constructor arguments are determined by a dependency injection framework.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #creating-indirectly }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #creating-indirectly }
Java
-: @@snip [DependencyInjectionDocTest.java](/akka-docs/src/test/java/jdocs/actor/DependencyInjectionDocTest.java) { #import #creating-indirectly }
+: @@snip [DependencyInjectionDocTest.java](/docs/src/test/java/jdocs/actor/DependencyInjectionDocTest.java) { #import #creating-indirectly }
@@@ warning
@@ -343,7 +343,7 @@ In addition, it offers:
You can import the members in the `context` to avoid prefixing access with `context.`
-@@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #import-context }
+@@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #import-context }
@@@
@@ -354,7 +354,7 @@ Scala
: @@snip [Actor.scala](/akka-actor/src/main/scala/org/apache/pekko/actor/Actor.scala) { #lifecycle-hooks }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #lifecycle-callbacks }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #lifecycle-callbacks }
The implementations shown above are the defaults provided by the @scala[@scaladoc[Actor](pekko.actor.Actor) trait.] @java[@javadoc[AbstractActor](pekko.actor.AbstractActor) class.]
@@ -426,10 +426,10 @@ termination (see @ref:[Stopping Actors](#stopping-actors)). This service is prov
Registering a monitor is easy:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #watch }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #watch }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-terminated #watch }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-terminated #watch }
It should be noted that the @apidoc[actor.Terminated] message is generated
independently of the order in which registration and termination occur.
@@ -454,10 +454,10 @@ no `Terminated` message for that actor will be processed anymore.
Right after starting the actor, its @scala[@scaladoc[preStart](pekko.actor.Actor#preStart():Unit)]@java[@javadoc[preStart](pekko.actor.AbstractActor#preStart())] method is invoked.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #preStart }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #preStart }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #preStart }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #preStart }
This method is called when the actor is first created. During restarts, it is
called by the default implementation of @scala[@scaladoc[postRestart](pekko.actor.Actor#postRestart(reason:Throwable):Unit)]@java[@javadoc[postRestart](pekko.actor.AbstractActor#postRestart(java.lang.Throwable))], which means that
@@ -529,10 +529,10 @@ paths—logical or physical—and receive back an @apidoc[actor.ActorSelection]
result:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #selection-local }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #selection-local }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #selection-local }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #selection-local }
@@@ note
@@ -561,10 +561,10 @@ The path elements of an actor selection may contain wildcard patterns allowing f
broadcasting of messages to that section:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #selection-wildcard }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #selection-wildcard }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #selection-wildcard }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #selection-wildcard }
Messages can be sent via the @apidoc[actor.ActorSelection] and the path of the
`ActorSelection` is looked up when delivering each message. If the selection
@@ -581,10 +581,10 @@ negative result is generated. Please note that this does not mean that delivery
of that reply is guaranteed, it still is a normal message.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #identify }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #identify }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-identify #identify }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-identify #identify }
You can also acquire an `ActorRef` for an `ActorSelection` with
the @apidoc[resolveOne](actor.ActorSelection) {scala="#resolveOne(timeout:scala.concurrent.duration.FiniteDuration):scala.concurrent.Future[actor.ActorRef]" java="#resolveOne(java.time.Duration)"} method of the `ActorSelection`. It returns a @scala[@scaladoc[Future](scala.concurrent.Future)]@java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)]
@@ -595,10 +595,10 @@ didn't complete within the supplied `timeout`.
Remote actor addresses may also be looked up, if @ref:[remoting](remoting.md) is enabled:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #selection-remote }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #selection-remote }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #selection-remote }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #selection-remote }
An example demonstrating actor look-up is given in @ref:[Remoting Sample](remoting-artery.md#looking-up-remote-actors).
@@ -617,10 +617,10 @@ state) and works great with pattern matching at the receiver side.]
Here is an @scala[example:] @java[example of an immutable message:]
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #immutable-message-definition #immutable-message-instantiation }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #immutable-message-definition #immutable-message-instantiation }
Java
-: @@snip [ImmutableMessage.java](/akka-docs/src/test/java/jdocs/actor/ImmutableMessage.java) { #immutable-message }
+: @@snip [ImmutableMessage.java](/docs/src/test/java/jdocs/actor/ImmutableMessage.java) { #immutable-message }
## Send messages
@@ -658,10 +658,10 @@ This is the preferred way of sending messages. No blocking waiting for a
message. This gives the best concurrency and scalability characteristics.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #tell }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #tell }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #tell }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #tell }
@@@ div { .group-scala }
@@ -695,10 +695,10 @@ The `ask` pattern involves actors as well as futures, hence it is offered as
a use pattern rather than a method on @apidoc[actor.ActorRef]:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #ask-pipeTo }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #ask-pipeTo }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-ask #ask-pipe }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-ask #ask-pipe }
This example demonstrates `ask` together with the @scala[@scaladoc[pipeTo](pekko.pattern.PipeToSupport$PipeableFuture#pipeTo(recipient:org.apache.pekko.actor.ActorRef)(implicitsender:org.apache.pekko.actor.ActorRef):scala.concurrent.Future[T])]@java[@javadoc[pipeTo](pekko.pattern.PipeToSupport.PipeableCompletionStage#pipeTo(org.apache.pekko.actor.ActorRef,org.apache.pekko.actor.ActorRef))] pattern on
@@ -727,10 +727,10 @@ are treated specially by the ask pattern.]
@@@
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #reply-exception }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #reply-exception }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #reply-exception }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #reply-exception }
If the actor does not complete the @scala[@scaladoc[Future](scala.concurrent.Future)]@java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)], it will expire after the timeout period,
@scala[completing it with an @scaladoc[AskTimeoutException](pekko.pattern.AskTimeoutException). The timeout is taken from one of the following locations in order of precedence:]
@@ -740,11 +740,11 @@ If the actor does not complete the @scala[@scaladoc[Future](scala.concurrent.Fut
1. explicitly given timeout as in:
- @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #using-explicit-timeout }
+ @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #using-explicit-timeout }
2. implicit argument of type `org.apache.pekko.util.Timeout`, e.g.
- @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #using-implicit-timeout }
+ @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #using-implicit-timeout }
@@@
@@ -773,10 +773,10 @@ through a 'mediator'. This can be useful when writing actors that work as
routers, load-balancers, replicators etc.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #forward }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #forward }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #forward }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #forward }
## Receive messages
@@ -788,7 +788,7 @@ Scala
: @@snip [Actor.scala](/akka-actor/src/main/scala/org/apache/pekko/actor/Actor.scala) { #receive }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #createReceive }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #createReceive }
@@@ div { .group-scala }
@@ -807,23 +807,23 @@ You can build such behavior with a builder named @javadoc[receiveBuilder](pekko.
@@@
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #imports1 #my-actor }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #imports1 #my-actor }
Java
-: @@snip [MyActor.java](/akka-docs/src/test/java/jdocs/actor/MyActor.java) { #imports #my-actor }
+: @@snip [MyActor.java](/docs/src/test/java/jdocs/actor/MyActor.java) { #imports #my-actor }
@@@ div { .group-java }
In case you want to provide many `match` cases but want to avoid creating a long call
trail, you can split the creation of the builder into multiple statements as in the example:
-@@snip [GraduallyBuiltActor.java](/akka-docs/src/test/java/jdocs/actor/GraduallyBuiltActor.java) { #imports #actor }
+@@snip [GraduallyBuiltActor.java](/docs/src/test/java/jdocs/actor/GraduallyBuiltActor.java) { #imports #actor }
Using small methods is a good practice, also in actors. It's recommended to delegate the
actual work of the message processing to methods instead of defining a huge `ReceiveBuilder`
with lots of code in each lambda. A well-structured actor can look like this:
-@@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #well-structured }
+@@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #well-structured }
That has benefits such as:
@@ -845,7 +845,7 @@ that the JVM can have problems optimizing and the resulting code might not be as
untyped version. When extending `UntypedAbstractActor` each message is received as an untyped
`Object` and you have to inspect and cast it to the actual message type in other ways, like this:
-@@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #optimized }
+@@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #optimized }
@@@
@@ -860,10 +860,10 @@ message was sent without an actor or future context) then the sender
defaults to a 'dead-letter' actor ref.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #reply-without-sender }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #reply-without-sender }
Java
-: @@snip [MyActor.java](/akka-docs/src/test/java/jdocs/actor/MyActor.java) { #reply }
+: @@snip [MyActor.java](/docs/src/test/java/jdocs/actor/MyActor.java) { #reply }
## Receive timeout
@@ -882,10 +882,10 @@ periods).
To cancel the sending of receive timeout notifications, use `cancelReceiveTimeout`.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #receive-timeout }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #receive-timeout }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #receive-timeout }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #receive-timeout }
Messages marked with @apidoc[NotInfluenceReceiveTimeout] will not reset the timer. This can be useful when
@apidoc[actor.ReceiveTimeout] should be fired by external inactivity but not influenced by internal activity,
@@ -901,10 +901,10 @@ to use the support for named timers. The lifecycle of scheduled messages can be
when the actor is restarted and that is taken care of by the timers.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/TimerDocSpec.scala) { #timers }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/TimerDocSpec.scala) { #timers }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/TimerDocTest.java) { #timers }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/TimerDocTest.java) { #timers }
The @ref:[Scheduler](scheduler.md#schedule-periodically) documentation describes the difference between
`fixed-delay` and `fixed-rate` scheduling. If you are uncertain of which one to use you should pick
@@ -927,10 +927,10 @@ termination of the actor is performed asynchronously, i.e. `stop` may return bef
the actor is stopped.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #stoppingActors-actor }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #stoppingActors-actor }
Java
-: @@snip [MyStoppingActor.java](/akka-docs/src/test/java/jdocs/actor/MyStoppingActor.java) { #my-stopping-actor }
+: @@snip [MyStoppingActor.java](/docs/src/test/java/jdocs/actor/MyStoppingActor.java) { #my-stopping-actor }
Processing of the current message, if any, will continue before the actor is stopped,
@@ -958,10 +958,10 @@ The `postStop()` hook is invoked after an actor is fully stopped. This
enables cleaning up of resources:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #postStop }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #postStop }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #postStop }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #postStop }
@@@ note
@@ -982,10 +982,10 @@ ordinary messages and will be handled after messages that were already queued
in the mailbox.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #poison-pill }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #poison-pill }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #poison-pill }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #poison-pill }
### Killing an Actor
@@ -998,10 +998,10 @@ See @ref:[What Supervision Means](general/supervision.md#supervision-directives)
Use `Kill` like this:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #kill }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #kill }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #kill }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #kill }
In general, it is not recommended to overly rely on either `PoisonPill` or `Kill` in
designing your actor interactions, as often a protocol-level message like `PleaseCleanupAndStop`
@@ -1014,10 +1014,10 @@ over which design you do not have control over.
termination of several actors:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #gracefulStop}
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #gracefulStop}
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-gracefulStop #gracefulStop}
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #import-gracefulStop #gracefulStop}
When `gracefulStop()` returns successfully, the actor’s @scala[@scaladoc[postStop](pekko.actor.Actor#postStop():Unit)]@java[@javadoc[postStop](pekko.actor.AbstractActor#postStop())] hook
will have been executed: there exists a happens-before edge between the end of
@@ -1059,10 +1059,10 @@ Please note that the actor will revert to its original behavior when restarted b
To hotswap the Actor behavior using `become`:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #hot-swap-actor }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #hot-swap-actor }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #hot-swap-actor }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #hot-swap-actor }
This variant of the `become` method is useful for many different things,
such as to implement a Finite State Machine (FSM). It will replace the current behavior (i.e. the top of the behavior
@@ -1076,14 +1076,14 @@ in the long run, otherwise this amounts to a memory leak (which is why this
behavior is not the default).
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #swapper }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #swapper }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #swapper }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #swapper }
### Encoding Scala Actors nested receives without accidentally leaking memory
-See this @extref[Unnested receive example](github:akka-docs/src/test/scala/docs/actor/UnnestedReceives.scala).
+See this @extref[Unnested receive example](github:docs/src/test/scala/docs/actor/UnnestedReceives.scala).
## Stash
@@ -1120,10 +1120,10 @@ control over the mailbox, see the documentation on mailboxes: @ref:[Mailboxes](m
Here is an example of the @scala[@scaladoc[Stash](pekko.actor.Stash) trait] @java[@javadoc[AbstractActorWithStash](pekko.actor.AbstractActorWithStash) class] in action:
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #stash }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #stash }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #stash }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #stash }
Invoking `stash()` adds the current message (the message that the
actor received last) to the actor's stash. It is typically invoked
@@ -1187,7 +1187,7 @@ For example, imagine you have a set of actors which are either `Producers` or `C
have an actor share both behaviors. This can be achieved without having to duplicate code by extracting the behaviors to
traits and implementing the actor's `receive` as a combination of these partial functions.
-@@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #receive-orElse }
+@@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #receive-orElse }
Instead of inheritance the same pattern can be applied via composition - compose the receive method using partial functions from delegates.
@@ -1223,10 +1223,10 @@ One useful usage of this pattern is to disable creation of new `ActorRefs` for c
achieved by overriding @scala[@scaladoc[preRestart](pekko.actor.Actor#preRestart(reason:Throwable,message:Option[Any]):Unit)]@java[@javadoc[preRestart](pekko.actor.AbstractActor#preRestart(java.lang.Throwable,java.util.Optional))]. Below is the default implementation of these lifecycle hooks:
Scala
-: @@snip [InitializationDocSpec.scala](/akka-docs/src/test/scala/docs/actor/InitializationDocSpec.scala) { #preStartInit }
+: @@snip [InitializationDocSpec.scala](/docs/src/test/scala/docs/actor/InitializationDocSpec.scala) { #preStartInit }
Java
-: @@snip [InitializationDocTest.java](/akka-docs/src/test/java/jdocs/actor/InitializationDocTest.java) { #preStartInit }
+: @@snip [InitializationDocTest.java](/docs/src/test/java/jdocs/actor/InitializationDocTest.java) { #preStartInit }
Please note, that the child actors are *still restarted*, but no new @apidoc[actor.ActorRef] is created. One can recursively apply
@@ -1243,10 +1243,10 @@ and use @apidoc[become()](actor.ActorContext) {scala="#become(behavior:org.apach
of the actor.
Scala
-: @@snip [InitializationDocSpec.scala](/akka-docs/src/test/scala/docs/actor/InitializationDocSpec.scala) { #messageInit }
+: @@snip [InitializationDocSpec.scala](/docs/src/test/scala/docs/actor/InitializationDocSpec.scala) { #messageInit }
Java
-: @@snip [InitializationDocTest.java](/akka-docs/src/test/java/jdocs/actor/InitializationDocTest.java) { #messageInit }
+: @@snip [InitializationDocTest.java](/docs/src/test/java/jdocs/actor/InitializationDocTest.java) { #messageInit }
If the actor may receive messages before it has been initialized, a useful tool can be the `Stash` to save messages
until the initialization finishes, and replaying them after the actor became initialized.
diff --git a/akka-docs/src/main/paradox/additional/books.md b/docs/src/main/paradox/additional/books.md
similarity index 100%
rename from akka-docs/src/main/paradox/additional/books.md
rename to docs/src/main/paradox/additional/books.md
diff --git a/akka-docs/src/main/paradox/additional/deploy.md b/docs/src/main/paradox/additional/deploy.md
similarity index 100%
rename from akka-docs/src/main/paradox/additional/deploy.md
rename to docs/src/main/paradox/additional/deploy.md
diff --git a/akka-docs/src/main/paradox/additional/deploying.md b/docs/src/main/paradox/additional/deploying.md
similarity index 100%
rename from akka-docs/src/main/paradox/additional/deploying.md
rename to docs/src/main/paradox/additional/deploying.md
diff --git a/akka-docs/src/main/paradox/additional/faq.md b/docs/src/main/paradox/additional/faq.md
similarity index 100%
rename from akka-docs/src/main/paradox/additional/faq.md
rename to docs/src/main/paradox/additional/faq.md
diff --git a/akka-docs/src/main/paradox/additional/ide.md b/docs/src/main/paradox/additional/ide.md
similarity index 100%
rename from akka-docs/src/main/paradox/additional/ide.md
rename to docs/src/main/paradox/additional/ide.md
diff --git a/akka-docs/src/main/paradox/additional/operations.md b/docs/src/main/paradox/additional/operations.md
similarity index 100%
rename from akka-docs/src/main/paradox/additional/operations.md
rename to docs/src/main/paradox/additional/operations.md
diff --git a/akka-docs/src/main/paradox/additional/osgi.md b/docs/src/main/paradox/additional/osgi.md
similarity index 100%
rename from akka-docs/src/main/paradox/additional/osgi.md
rename to docs/src/main/paradox/additional/osgi.md
diff --git a/akka-docs/src/main/paradox/additional/packaging.md b/docs/src/main/paradox/additional/packaging.md
similarity index 100%
rename from akka-docs/src/main/paradox/additional/packaging.md
rename to docs/src/main/paradox/additional/packaging.md
diff --git a/akka-docs/src/main/paradox/additional/rolling-updates.md b/docs/src/main/paradox/additional/rolling-updates.md
similarity index 100%
rename from akka-docs/src/main/paradox/additional/rolling-updates.md
rename to docs/src/main/paradox/additional/rolling-updates.md
diff --git a/akka-docs/src/main/paradox/assets/js/scalafiddle.js b/docs/src/main/paradox/assets/js/scalafiddle.js
similarity index 100%
rename from akka-docs/src/main/paradox/assets/js/scalafiddle.js
rename to docs/src/main/paradox/assets/js/scalafiddle.js
diff --git a/akka-docs/src/main/paradox/assets/js/warnOldDocs.js b/docs/src/main/paradox/assets/js/warnOldDocs.js
similarity index 100%
rename from akka-docs/src/main/paradox/assets/js/warnOldDocs.js
rename to docs/src/main/paradox/assets/js/warnOldDocs.js
diff --git a/akka-docs/src/main/paradox/camel.md b/docs/src/main/paradox/camel.md
similarity index 100%
rename from akka-docs/src/main/paradox/camel.md
rename to docs/src/main/paradox/camel.md
diff --git a/akka-docs/src/main/paradox/cluster-client.md b/docs/src/main/paradox/cluster-client.md
similarity index 100%
rename from akka-docs/src/main/paradox/cluster-client.md
rename to docs/src/main/paradox/cluster-client.md
diff --git a/akka-docs/src/main/paradox/cluster-dc.md b/docs/src/main/paradox/cluster-dc.md
similarity index 83%
rename from akka-docs/src/main/paradox/cluster-dc.md
rename to docs/src/main/paradox/cluster-dc.md
index 0883d5eb43..d6c1b54051 100644
--- a/akka-docs/src/main/paradox/cluster-dc.md
+++ b/docs/src/main/paradox/cluster-dc.md
@@ -10,10 +10,10 @@ For the full documentation of this feature and for new projects see @ref:[Multi-
You can retrieve information about what data center a member belongs to:
Scala
-: @@snip [ClusterDocSpec.scala](/akka-docs/src/test/scala/docs/cluster/ClusterDocSpec.scala) { #dcAccess }
+: @@snip [ClusterDocSpec.scala](/docs/src/test/scala/docs/cluster/ClusterDocSpec.scala) { #dcAccess }
Java
-: @@snip [ClusterDocTest.java](/akka-docs/src/test/java/jdocs/cluster/ClusterDocTest.java) { #dcAccess }
+: @@snip [ClusterDocTest.java](/docs/src/test/java/jdocs/cluster/ClusterDocTest.java) { #dcAccess }
For the full documentation of this feature and for new projects see @ref:[Multi-DC Cluster](typed/cluster-dc.md#membership).
@@ -40,6 +40,6 @@ Scala
: @@snip [ClusterShardingSpec.scala](/akka-cluster-sharding/src/multi-jvm/scala/org/apache/pekko/cluster/sharding/ClusterShardingSpec.scala) { #proxy-dc }
Java
-: @@snip [ClusterShardingTest.java](/akka-docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #proxy-dc }
+: @@snip [ClusterShardingTest.java](/docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #proxy-dc }
For the full documentation of this feature and for new projects see @ref:[Multi-DC Cluster](typed/cluster-dc.md#cluster-sharding).
diff --git a/akka-docs/src/main/paradox/cluster-metrics.md b/docs/src/main/paradox/cluster-metrics.md
similarity index 89%
rename from akka-docs/src/main/paradox/cluster-metrics.md
rename to docs/src/main/paradox/cluster-metrics.md
index d476f636fc..0a23e90f9b 100644
--- a/akka-docs/src/main/paradox/cluster-metrics.md
+++ b/docs/src/main/paradox/cluster-metrics.md
@@ -135,18 +135,18 @@ Let's take a look at this router in action. What can be more demanding than calc
The backend worker that performs the factorial calculation:
Scala
-: @@snip [FactorialBackend.scala](/akka-docs/src/test/scala/docs/cluster/FactorialBackend.scala) { #backend }
+: @@snip [FactorialBackend.scala](/docs/src/test/scala/docs/cluster/FactorialBackend.scala) { #backend }
Java
-: @@snip [FactorialBackend.java](/akka-docs/src/test/java/jdocs/cluster/FactorialBackend.java) { #backend }
+: @@snip [FactorialBackend.java](/docs/src/test/java/jdocs/cluster/FactorialBackend.java) { #backend }
The frontend that receives user jobs and delegates to the backends via the router:
Scala
-: @@snip [FactorialFrontend.scala](/akka-docs/src/test/scala/docs/cluster/FactorialFrontend.scala) { #frontend }
+: @@snip [FactorialFrontend.scala](/docs/src/test/scala/docs/cluster/FactorialFrontend.scala) { #frontend }
Java
-: @@snip [FactorialFrontend.java](/akka-docs/src/test/java/jdocs/cluster/FactorialFrontend.java) { #frontend }
+: @@snip [FactorialFrontend.java](/docs/src/test/java/jdocs/cluster/FactorialFrontend.java) { #frontend }
As you can see, the router is defined in the same way as other routers, and in this case it is configured as follows:
@@ -177,20 +177,20 @@ other things work in the same way as other routers.
The same type of router could also have been defined in code:
Scala
-: @@snip [FactorialFrontend.scala](/akka-docs/src/test/scala/docs/cluster/FactorialFrontend.scala) { #router-lookup-in-code #router-deploy-in-code }
+: @@snip [FactorialFrontend.scala](/docs/src/test/scala/docs/cluster/FactorialFrontend.scala) { #router-lookup-in-code #router-deploy-in-code }
Java
-: @@snip [FactorialFrontend.java](/akka-docs/src/test/java/jdocs/cluster/FactorialFrontend.java) { #router-lookup-in-code #router-deploy-in-code }
+: @@snip [FactorialFrontend.java](/docs/src/test/java/jdocs/cluster/FactorialFrontend.java) { #router-lookup-in-code #router-deploy-in-code }
## Subscribe to Metrics Events
It is possible to subscribe to the metrics events directly to implement other functionality.
Scala
-: @@snip [MetricsListener.scala](/akka-docs/src/test/scala/docs/cluster/MetricsListener.scala) { #metrics-listener }
+: @@snip [MetricsListener.scala](/docs/src/test/scala/docs/cluster/MetricsListener.scala) { #metrics-listener }
Java
-: @@snip [MetricsListener.java](/akka-docs/src/test/java/jdocs/cluster/MetricsListener.java) { #metrics-listener }
+: @@snip [MetricsListener.java](/docs/src/test/java/jdocs/cluster/MetricsListener.java) { #metrics-listener }
## Custom Metrics Collector
diff --git a/akka-docs/src/main/paradox/cluster-routing.md b/docs/src/main/paradox/cluster-routing.md
similarity index 91%
rename from akka-docs/src/main/paradox/cluster-routing.md
rename to docs/src/main/paradox/cluster-routing.md
index 250d57bc70..381ddc7ab7 100644
--- a/akka-docs/src/main/paradox/cluster-routing.md
+++ b/docs/src/main/paradox/cluster-routing.md
@@ -81,7 +81,7 @@ Scala
: @@snip [StatsService.scala](/akka-cluster-metrics/src/multi-jvm/scala/org/apache/pekko/cluster/metrics/sample/StatsService.scala) { #router-lookup-in-code }
Java
-: @@snip [StatsService.java](/akka-docs/src/test/java/jdocs/cluster/StatsService.java) { #router-lookup-in-code }
+: @@snip [StatsService.java](/docs/src/test/java/jdocs/cluster/StatsService.java) { #router-lookup-in-code }
See @ref:[reference configuration](general/configuration-reference.md#config-akka-cluster) for further descriptions of the settings.
@@ -102,7 +102,7 @@ Scala
: @@snip [StatsMessages.scala](/akka-cluster-metrics/src/multi-jvm/scala/org/apache/pekko/cluster/metrics/sample/StatsMessages.scala) { #messages }
Java
-: @@snip [StatsMessages.java](/akka-docs/src/test/java/jdocs/cluster/StatsMessages.java) { #messages }
+: @@snip [StatsMessages.java](/docs/src/test/java/jdocs/cluster/StatsMessages.java) { #messages }
The worker that counts number of characters in each word:
@@ -110,7 +110,7 @@ Scala
: @@snip [StatsWorker.scala](/akka-cluster-metrics/src/multi-jvm/scala/org/apache/pekko/cluster/metrics/sample/StatsWorker.scala) { #worker }
Java
-: @@snip [StatsWorker.java](/akka-docs/src/test/java/jdocs/cluster/StatsWorker.java) { #worker }
+: @@snip [StatsWorker.java](/docs/src/test/java/jdocs/cluster/StatsWorker.java) { #worker }
The service that receives text from users and splits it up into words, delegates to workers and aggregates:
@@ -122,8 +122,8 @@ The service that receives text from users and splits it up into words, delegates
@@@ div { .group-java }
-@@snip [StatsService.java](/akka-docs/src/test/java/jdocs/cluster/StatsService.java) { #service }
-@@snip [StatsAggregator.java](/akka-docs/src/test/java/jdocs/cluster/StatsAggregator.java) { #aggregator }
+@@snip [StatsService.java](/docs/src/test/java/jdocs/cluster/StatsService.java) { #service }
+@@snip [StatsAggregator.java](/docs/src/test/java/jdocs/cluster/StatsAggregator.java) { #aggregator }
@@@
@@ -182,7 +182,7 @@ Scala
: @@snip [StatsService.scala](/akka-cluster-metrics/src/multi-jvm/scala/org/apache/pekko/cluster/metrics/sample/StatsService.scala) { #router-deploy-in-code }
Java
-: @@snip [StatsService.java](/akka-docs/src/test/java/jdocs/cluster/StatsService.java) { #router-deploy-in-code }
+: @@snip [StatsService.java](/docs/src/test/java/jdocs/cluster/StatsService.java) { #router-deploy-in-code }
See @ref:[reference configuration](general/configuration-reference.md#config-akka-cluster) for further descriptions of the settings.
@@ -208,7 +208,7 @@ Scala
@@@
Java
-: @@snip [StatsSampleOneMasterMain.java](/akka-docs/src/test/java/jdocs/cluster/StatsSampleOneMasterMain.java) { #create-singleton-manager }
+: @@snip [StatsSampleOneMasterMain.java](/docs/src/test/java/jdocs/cluster/StatsSampleOneMasterMain.java) { #create-singleton-manager }
We also need an actor on each node that keeps track of where current single master exists and
delegates jobs to the `StatsService`. That is provided by the `ClusterSingletonProxy`:
@@ -225,7 +225,7 @@ Scala
@@@
Java
-: @@snip [StatsSampleOneMasterMain.java](/akka-docs/src/test/java/jdocs/cluster/StatsSampleOneMasterMain.java) { #singleton-proxy }
+: @@snip [StatsSampleOneMasterMain.java](/docs/src/test/java/jdocs/cluster/StatsSampleOneMasterMain.java) { #singleton-proxy }
The `ClusterSingletonProxy` receives text from users and delegates to the current `StatsService`, the single
master. It listens to cluster events to lookup the `StatsService` on the oldest node.
diff --git a/akka-docs/src/main/paradox/cluster-sharding.md b/docs/src/main/paradox/cluster-sharding.md
similarity index 93%
rename from akka-docs/src/main/paradox/cluster-sharding.md
rename to docs/src/main/paradox/cluster-sharding.md
index 6a8b7ea9be..7a7e51e2af 100644
--- a/akka-docs/src/main/paradox/cluster-sharding.md
+++ b/docs/src/main/paradox/cluster-sharding.md
@@ -30,7 +30,7 @@ Scala
: @@snip [ClusterShardingSpec.scala](/akka-cluster-sharding/src/multi-jvm/scala/org/apache/pekko/cluster/sharding/ClusterShardingSpec.scala) { #counter-actor }
Java
-: @@snip [ClusterShardingTest.java](/akka-docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #counter-actor }
+: @@snip [ClusterShardingTest.java](/docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #counter-actor }
The above actor uses Event Sourcing and the support provided in @scala[`PersistentActor`] @java[`AbstractPersistentActor`] to store its state.
It does not have to be a persistent actor, but in case of failure or migration of entities between nodes it must be able to recover
@@ -50,7 +50,7 @@ Scala
: @@snip [ClusterShardingSpec.scala](/akka-cluster-sharding/src/multi-jvm/scala/org/apache/pekko/cluster/sharding/ClusterShardingSpec.scala) { #counter-start }
Java
-: @@snip [ClusterShardingTest.java](/akka-docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #counter-start }
+: @@snip [ClusterShardingTest.java](/docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #counter-start }
The @scala[`extractEntityId` and `extractShardId` are two] @java[`messageExtractor` defines] application specific @scala[functions] @java[methods] to extract the entity
identifier and the shard identifier from incoming messages.
@@ -59,7 +59,7 @@ Scala
: @@snip [ClusterShardingSpec.scala](/akka-cluster-sharding/src/multi-jvm/scala/org/apache/pekko/cluster/sharding/ClusterShardingSpec.scala) { #counter-extractor }
Java
-: @@snip [ClusterShardingTest.java](/akka-docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #counter-extractor }
+: @@snip [ClusterShardingTest.java](/docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #counter-extractor }
This example illustrates two different ways to define the entity identifier in the messages:
@@ -97,7 +97,7 @@ Scala
: @@snip [ClusterShardingSpec.scala](/akka-cluster-sharding/src/multi-jvm/scala/org/apache/pekko/cluster/sharding/ClusterShardingSpec.scala) { #counter-usage }
Java
-: @@snip [ClusterShardingTest.java](/akka-docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #counter-usage }
+: @@snip [ClusterShardingTest.java](/docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #counter-usage }
## How it works
@@ -175,7 +175,7 @@ Scala
: @@snip [ClusterShardingSpec.scala](/akka-cluster-sharding/src/multi-jvm/scala/org/apache/pekko/cluster/sharding/ClusterShardingSpec.scala) { #extractShardId-StartEntity }
Java
-: @@snip [ClusterShardingTest.java](/akka-docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #extractShardId-StartEntity }
+: @@snip [ClusterShardingTest.java](/docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #extractShardId-StartEntity }
## Supervision
@@ -187,7 +187,7 @@ Scala
: @@snip [ClusterShardingSpec.scala](/akka-cluster-sharding/src/multi-jvm/scala/org/apache/pekko/cluster/sharding/ClusterShardingSpec.scala) { #supervisor }
Java
-: @@snip [ClusterShardingTest.java](/akka-docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #supervisor }
+: @@snip [ClusterShardingTest.java](/docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #supervisor }
You start such a supervisor in the same way as if it was the entity actor.
@@ -195,7 +195,7 @@ Scala
: @@snip [ClusterShardingSpec.scala](/akka-cluster-sharding/src/multi-jvm/scala/org/apache/pekko/cluster/sharding/ClusterShardingSpec.scala) { #counter-supervisor-start }
Java
-: @@snip [ClusterShardingTest.java](/akka-docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #counter-supervisor-start }
+: @@snip [ClusterShardingTest.java](/docs/src/test/java/jdocs/sharding/ClusterShardingTest.java) { #counter-supervisor-start }
Note that stopped entities will be started again when a new message is targeted to the entity.
diff --git a/akka-docs/src/main/paradox/cluster-singleton.md b/docs/src/main/paradox/cluster-singleton.md
similarity index 89%
rename from akka-docs/src/main/paradox/cluster-singleton.md
rename to docs/src/main/paradox/cluster-singleton.md
index 15b98de93d..edfa068b77 100644
--- a/akka-docs/src/main/paradox/cluster-singleton.md
+++ b/docs/src/main/paradox/cluster-singleton.md
@@ -113,19 +113,19 @@ To accomplish this add a parent supervisor actor which will be used to create th
Below is an example implementation (credit to [this StackOverflow answer](https://stackoverflow.com/questions/36701898/how-to-supervise-cluster-singleton-in-akka/36716708#36716708))
Scala
-: @@snip [ClusterSingletonSupervision.scala](/akka-docs/src/test/scala/docs/cluster/singleton/ClusterSingletonSupervision.scala) { #singleton-supervisor-actor }
+: @@snip [ClusterSingletonSupervision.scala](/docs/src/test/scala/docs/cluster/singleton/ClusterSingletonSupervision.scala) { #singleton-supervisor-actor }
Java
-: @@snip [SupervisorActor.java](/akka-docs/src/test/java/jdocs/cluster/singleton/SupervisorActor.java) { #singleton-supervisor-actor }
+: @@snip [SupervisorActor.java](/docs/src/test/java/jdocs/cluster/singleton/SupervisorActor.java) { #singleton-supervisor-actor }
And used here
Scala
-: @@snip [ClusterSingletonSupervision.scala](/akka-docs/src/test/scala/docs/cluster/singleton/ClusterSingletonSupervision.scala) { #singleton-supervisor-actor-usage }
+: @@snip [ClusterSingletonSupervision.scala](/docs/src/test/scala/docs/cluster/singleton/ClusterSingletonSupervision.scala) { #singleton-supervisor-actor-usage }
Java
-: @@snip [ClusterSingletonSupervision.java](/akka-docs/src/test/java/jdocs/cluster/singleton/ClusterSingletonSupervision.java) { #singleton-supervisor-actor-usage-imports }
-@@snip [ClusterSingletonSupervision.java](/akka-docs/src/test/java/jdocs/cluster/singleton/ClusterSingletonSupervision.java) { #singleton-supervisor-actor-usage }
+: @@snip [ClusterSingletonSupervision.java](/docs/src/test/java/jdocs/cluster/singleton/ClusterSingletonSupervision.java) { #singleton-supervisor-actor-usage-imports }
+@@snip [ClusterSingletonSupervision.java](/docs/src/test/java/jdocs/cluster/singleton/ClusterSingletonSupervision.java) { #singleton-supervisor-actor-usage }
## Lease
diff --git a/akka-docs/src/main/paradox/cluster-usage.md b/docs/src/main/paradox/cluster-usage.md
similarity index 87%
rename from akka-docs/src/main/paradox/cluster-usage.md
rename to docs/src/main/paradox/cluster-usage.md
index 1221503335..e534f7cefc 100644
--- a/akka-docs/src/main/paradox/cluster-usage.md
+++ b/docs/src/main/paradox/cluster-usage.md
@@ -46,10 +46,10 @@ It joins the cluster and an actor subscribes to cluster membership events and lo
An actor that uses the cluster extension may look like this:
Scala
-: @@snip [SimpleClusterListener.scala](/akka-docs/src/test/scala/docs/cluster/SimpleClusterListener.scala) { type=scala }
+: @@snip [SimpleClusterListener.scala](/docs/src/test/scala/docs/cluster/SimpleClusterListener.scala) { type=scala }
Java
-: @@snip [SimpleClusterListener.java](/akka-docs/src/test/java/jdocs/cluster/SimpleClusterListener.java) { type=java }
+: @@snip [SimpleClusterListener.java](/docs/src/test/java/jdocs/cluster/SimpleClusterListener.java) { type=java }
And the minimum configuration required is to set a host/port for remoting and the `akka.actor.provider = "cluster"`.
@@ -80,10 +80,10 @@ You may also join programmatically, which is attractive when dynamically discove
at startup by using some external tool or API.
Scala
-: @@snip [ClusterDocSpec.scala](/akka-docs/src/test/scala/docs/cluster/ClusterDocSpec.scala) { #join-seed-nodes }
+: @@snip [ClusterDocSpec.scala](/docs/src/test/scala/docs/cluster/ClusterDocSpec.scala) { #join-seed-nodes }
Java
-: @@snip [ClusterDocTest.java](/akka-docs/src/test/java/jdocs/cluster/ClusterDocTest.java) { #join-seed-nodes-imports #join-seed-nodes }
+: @@snip [ClusterDocTest.java](/docs/src/test/java/jdocs/cluster/ClusterDocTest.java) { #join-seed-nodes-imports #join-seed-nodes }
For more information see @ref[tuning joins](typed/cluster.md#tuning-joins)
@@ -91,10 +91,10 @@ It's also possible to specifically join a single node as illustrated in below ex
preferred since it has redundancy and retry mechanisms built-in.
Scala
-: @@snip [SimpleClusterListener2.scala](/akka-docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala) { #join }
+: @@snip [SimpleClusterListener2.scala](/docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala) { #join }
Java
-: @@snip [SimpleClusterListener2.java](/akka-docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java) { #join }
+: @@snip [SimpleClusterListener2.java](/docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java) { #join }
## Leaving
@@ -111,10 +111,10 @@ You can subscribe to change notifications of the cluster membership by using
@scala[@scaladoc[Cluster(system).subscribe](pekko.cluster.Cluster#subscribe(subscriber:org.apache.pekko.actor.ActorRef,to:Class[_]*):Unit)]@java[@javadoc[Cluster.get(system).subscribe](pekko.cluster.Cluster#subscribe(org.apache.pekko.actor.ActorRef,org.apache.pekko.cluster.ClusterEvent.SubscriptionInitialStateMode,java.lang.Class...))].
Scala
-: @@snip [SimpleClusterListener2.scala](/akka-docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala) { #subscribe }
+: @@snip [SimpleClusterListener2.scala](/docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala) { #subscribe }
Java
-: @@snip [SimpleClusterListener2.java](/akka-docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java) { #subscribe }
+: @@snip [SimpleClusterListener2.java](/docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java) { #subscribe }
A snapshot of the full state, @apidoc[CurrentClusterState](ClusterEvent.CurrentClusterState), is sent to the subscriber
as the first message, followed by events for incremental updates.
@@ -127,19 +127,19 @@ This is expected behavior. When the node has been accepted in the cluster you wi
receive `MemberUp` for that node, and other nodes.
Scala
-: @@snip [SimpleClusterListener2.scala](/akka-docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala) { #join #subscribe }
+: @@snip [SimpleClusterListener2.scala](/docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala) { #join #subscribe }
Java
-: @@snip [SimpleClusterListener2.java](/akka-docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java) { #join #subscribe }
+: @@snip [SimpleClusterListener2.java](/docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java) { #join #subscribe }
To avoid receiving an empty `CurrentClusterState` at the beginning, you can use it like shown in the following example,
to defer subscription until the `MemberUp` event for the own node is received:
Scala
-: @@snip [SimpleClusterListener2.scala](/akka-docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala) { #join #register-on-memberup }
+: @@snip [SimpleClusterListener2.scala](/docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala) { #join #register-on-memberup }
Java
-: @@snip [SimpleClusterListener2.java](/akka-docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java) { #join #register-on-memberup }
+: @@snip [SimpleClusterListener2.java](/docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java) { #join #register-on-memberup }
If you find it inconvenient to handle the `CurrentClusterState` you can use
@@ -150,10 +150,10 @@ listening to the events when they occurred in the past. Note that those initial
to the current state and it is not the full history of all changes that actually has occurred in the cluster.
Scala
-: @@snip [SimpleClusterListener.scala](/akka-docs/src/test/scala/docs/cluster/SimpleClusterListener.scala) { #subscribe }
+: @@snip [SimpleClusterListener.scala](/docs/src/test/scala/docs/cluster/SimpleClusterListener.scala) { #subscribe }
Java
-: @@snip [SimpleClusterListener.java](/akka-docs/src/test/java/jdocs/cluster/SimpleClusterListener.java) { #subscribe }
+: @@snip [SimpleClusterListener.java](/docs/src/test/java/jdocs/cluster/SimpleClusterListener.java) { #subscribe }
### Worker Dial-in Example
@@ -169,18 +169,18 @@ added or removed to the cluster dynamically.
Messages:
Scala
-: @@snip [TransformationMessages.scala](/akka-docs/src/test/scala/docs/cluster/TransformationMessages.scala) { #messages }
+: @@snip [TransformationMessages.scala](/docs/src/test/scala/docs/cluster/TransformationMessages.scala) { #messages }
Java
-: @@snip [TransformationMessages.java](/akka-docs/src/test/java/jdocs/cluster/TransformationMessages.java) { #messages }
+: @@snip [TransformationMessages.java](/docs/src/test/java/jdocs/cluster/TransformationMessages.java) { #messages }
The backend worker that performs the transformation job:
Scala
-: @@snip [TransformationBackend.scala](/akka-docs/src/test/scala/docs/cluster/TransformationBackend.scala) { #backend }
+: @@snip [TransformationBackend.scala](/docs/src/test/scala/docs/cluster/TransformationBackend.scala) { #backend }
Java
-: @@snip [TransformationBackend.java](/akka-docs/src/test/java/jdocs/cluster/TransformationBackend.java) { #backend }
+: @@snip [TransformationBackend.java](/docs/src/test/java/jdocs/cluster/TransformationBackend.java) { #backend }
Note that the `TransformationBackend` actor subscribes to cluster events to detect new,
potential, frontend nodes, and send them a registration message so that they know
@@ -189,10 +189,10 @@ that they can use the backend worker.
The frontend that receives user jobs and delegates to one of the registered backend workers:
Scala
-: @@snip [TransformationFrontend.scala](/akka-docs/src/test/scala/docs/cluster/TransformationFrontend.scala) { #frontend }
+: @@snip [TransformationFrontend.scala](/docs/src/test/scala/docs/cluster/TransformationFrontend.scala) { #frontend }
Java
-: @@snip [TransformationFrontend.java](/akka-docs/src/test/java/jdocs/cluster/TransformationFrontend.java) { #frontend }
+: @@snip [TransformationFrontend.java](/docs/src/test/java/jdocs/cluster/TransformationFrontend.java) { #frontend }
Note that the `TransformationFrontend` actor watch the registered backend
to be able to remove it from its list of available backend workers.
@@ -237,10 +237,10 @@ be invoked when the current member status is changed to 'Up'. This can additiona
`akka.cluster.min-nr-of-members` optional configuration to defer an action until the cluster has reached a certain size.
Scala
-: @@snip [FactorialFrontend.scala](/akka-docs/src/test/scala/docs/cluster/FactorialFrontend.scala) { #registerOnUp }
+: @@snip [FactorialFrontend.scala](/docs/src/test/scala/docs/cluster/FactorialFrontend.scala) { #registerOnUp }
Java
-: @@snip [FactorialFrontendMain.java](/akka-docs/src/test/java/jdocs/cluster/FactorialFrontendMain.java) { #registerOnUp }
+: @@snip [FactorialFrontendMain.java](/docs/src/test/java/jdocs/cluster/FactorialFrontendMain.java) { #registerOnUp }
## How To Cleanup when Member is Removed
diff --git a/akka-docs/src/main/paradox/common/binary-compatibility-rules.md b/docs/src/main/paradox/common/binary-compatibility-rules.md
similarity index 100%
rename from akka-docs/src/main/paradox/common/binary-compatibility-rules.md
rename to docs/src/main/paradox/common/binary-compatibility-rules.md
diff --git a/akka-docs/src/main/paradox/common/circuitbreaker.md b/docs/src/main/paradox/common/circuitbreaker.md
similarity index 91%
rename from akka-docs/src/main/paradox/common/circuitbreaker.md
rename to docs/src/main/paradox/common/circuitbreaker.md
index 508fd633d4..b295fc8ba9 100644
--- a/akka-docs/src/main/paradox/common/circuitbreaker.md
+++ b/docs/src/main/paradox/common/circuitbreaker.md
@@ -73,10 +73,10 @@ Here's how a @apidoc[CircuitBreaker] would be configured for:
Scala
-: @@snip [CircuitBreakerDocSpec.scala](/akka-docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala) { #imports1 #circuit-breaker-initialization }
+: @@snip [CircuitBreakerDocSpec.scala](/docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala) { #imports1 #circuit-breaker-initialization }
Java
-: @@snip [DangerousJavaActor.java](/akka-docs/src/test/java/jdocs/circuitbreaker/DangerousJavaActor.java) { #imports1 #circuit-breaker-initialization }
+: @@snip [DangerousJavaActor.java](/docs/src/test/java/jdocs/circuitbreaker/DangerousJavaActor.java) { #imports1 #circuit-breaker-initialization }
### Future & Synchronous based API
@@ -85,10 +85,10 @@ Once a circuit breaker actor has been initialized, interacting with that actor i
The Synchronous API would also wrap your call with the circuit breaker logic, however, it uses the @scala[@scaladoc[withSyncCircuitBreaker](pekko.pattern.CircuitBreaker#withSyncCircuitBreaker[T](body:=%3ET):T)]@java[@javadoc[callWithSyncCircuitBreaker](pekko.pattern.CircuitBreaker#callWithSyncCircuitBreaker(java.util.concurrent.Callable))] and receives a method that is not wrapped in a @scala[@scaladoc[Future](scala.concurrent.Future)]@java[@javadoc[CompletionState](java.util.concurrent.CompletionStage)].
Scala
-: @@snip [CircuitBreakerDocSpec.scala](/akka-docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala) { #circuit-breaker-usage }
+: @@snip [CircuitBreakerDocSpec.scala](/docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala) { #circuit-breaker-usage }
Java
-: @@snip [DangerousJavaActor.java](/akka-docs/src/test/java/jdocs/circuitbreaker/DangerousJavaActor.java) { #circuit-breaker-usage }
+: @@snip [DangerousJavaActor.java](/docs/src/test/java/jdocs/circuitbreaker/DangerousJavaActor.java) { #circuit-breaker-usage }
@@@ note
@@ -115,10 +115,10 @@ Type of `defineFailureFn`: @scala[@scaladoc[Try[T]](scala.util.Try) => @scaladoc
@java[The response of a protected call is modelled using @javadoc[Optional[T]](java.util.Optional) for a successful return value and @javadoc[Optional](java.util.Optional)[@javadoc[Throwable](java.lang.Throwable)] for exceptions.] This function should return `true` if the call should increase failure count, else false.
Scala
-: @@snip [CircuitBreakerDocSpec.scala](/akka-docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala) { #even-no-as-failure }
+: @@snip [CircuitBreakerDocSpec.scala](/docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala) { #even-no-as-failure }
Java
-: @@snip [EvenNoFailureJavaExample.java](/akka-docs/src/test/java/jdocs/circuitbreaker/EvenNoFailureJavaExample.java) { #even-no-as-failure }
+: @@snip [EvenNoFailureJavaExample.java](/docs/src/test/java/jdocs/circuitbreaker/EvenNoFailureJavaExample.java) { #even-no-as-failure }
### Low level API
@@ -138,7 +138,7 @@ The below example doesn't make a remote call when the state is *HalfOpen*. Using
@@@
Scala
-: @@snip [CircuitBreakerDocSpec.scala](/akka-docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala) { #circuit-breaker-tell-pattern }
+: @@snip [CircuitBreakerDocSpec.scala](/docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala) { #circuit-breaker-tell-pattern }
Java
-: @@snip [TellPatternJavaActor.java](/akka-docs/src/test/java/jdocs/circuitbreaker/TellPatternJavaActor.java) { #circuit-breaker-tell-pattern }
+: @@snip [TellPatternJavaActor.java](/docs/src/test/java/jdocs/circuitbreaker/TellPatternJavaActor.java) { #circuit-breaker-tell-pattern }
diff --git a/akka-docs/src/main/paradox/common/io-layer.md b/docs/src/main/paradox/common/io-layer.md
similarity index 100%
rename from akka-docs/src/main/paradox/common/io-layer.md
rename to docs/src/main/paradox/common/io-layer.md
diff --git a/akka-docs/src/main/paradox/common/may-change.md b/docs/src/main/paradox/common/may-change.md
similarity index 100%
rename from akka-docs/src/main/paradox/common/may-change.md
rename to docs/src/main/paradox/common/may-change.md
diff --git a/akka-docs/src/main/paradox/common/other-modules.md b/docs/src/main/paradox/common/other-modules.md
similarity index 100%
rename from akka-docs/src/main/paradox/common/other-modules.md
rename to docs/src/main/paradox/common/other-modules.md
diff --git a/akka-docs/src/main/paradox/coordinated-shutdown.md b/docs/src/main/paradox/coordinated-shutdown.md
similarity index 81%
rename from akka-docs/src/main/paradox/coordinated-shutdown.md
rename to docs/src/main/paradox/coordinated-shutdown.md
index 28b366275b..d16a76d7f5 100644
--- a/akka-docs/src/main/paradox/coordinated-shutdown.md
+++ b/docs/src/main/paradox/coordinated-shutdown.md
@@ -30,10 +30,10 @@ The phases are ordered with [topological](https://en.wikipedia.org/wiki/Topologi
Tasks can be added to a phase like in this example which allows a certain actor to react before termination starts:
Scala
-: @@snip [snip](/akka-docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala) { #coordinated-shutdown-addTask }
+: @@snip [snip](/docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala) { #coordinated-shutdown-addTask }
Java
-: @@snip [snip](/akka-docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java) { #coordinated-shutdown-addTask }
+: @@snip [snip](/docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java) { #coordinated-shutdown-addTask }
The returned @scala[`Future[Done]`] @java[`CompletionStage`] should be completed when the task is completed. The task name parameter
is only used for debugging/logging.
@@ -48,20 +48,20 @@ to abort the rest of the shutdown process if a task fails or is not completed wi
If cancellation of previously added tasks is required:
Scala
-: @@snip [snip](/akka-docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala) { #coordinated-shutdown-cancellable }
+: @@snip [snip](/docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala) { #coordinated-shutdown-cancellable }
Java
-: @@snip [snip](/akka-docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java) { #coordinated-shutdown-cancellable }
+: @@snip [snip](/docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java) { #coordinated-shutdown-cancellable }
In the above example, it may be more convenient to simply stop the actor when it's done shutting down, rather than send back a done message,
and for the shutdown task to not complete until the actor is terminated. A convenience method is provided that adds a task that sends
a message to the actor and then watches its termination (there is currently no corresponding functionality for the new actors API @github[see #29056](#29056)):
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #coordinated-shutdown-addActorTerminationTask }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #coordinated-shutdown-addActorTerminationTask }
Java
-: @@snip [ActorDocTest.java](/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java) { #coordinated-shutdown-addActorTerminationTask }
+: @@snip [ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { #coordinated-shutdown-addActorTerminationTask }
Tasks should typically be registered as early as possible after system startup. When running
the coordinated shutdown tasks that have been registered will be performed but tasks that are
@@ -71,10 +71,10 @@ To start the coordinated shutdown process you can either invoke `terminate()` on
extension and pass it a class implementing @apidoc[CoordinatedShutdown.Reason] for informational purposes:
Scala
-: @@snip [snip](/akka-docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala) { #coordinated-shutdown-run }
+: @@snip [snip](/docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala) { #coordinated-shutdown-run }
Java
-: @@snip [snip](/akka-docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java) { #coordinated-shutdown-run }
+: @@snip [snip](/docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java) { #coordinated-shutdown-run }
It's safe to call the @scala[`run`] @java[`runAll`] method multiple times. It will only run once.
@@ -106,10 +106,10 @@ If you have application specific JVM shutdown hooks it's recommended that you re
those shutting down Akka Remoting (Artery).
Scala
-: @@snip [snip](/akka-docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala) { #coordinated-shutdown-jvm-hook }
+: @@snip [snip](/docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala) { #coordinated-shutdown-jvm-hook }
Java
-: @@snip [snip](/akka-docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java) { #coordinated-shutdown-jvm-hook }
+: @@snip [snip](/docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java) { #coordinated-shutdown-jvm-hook }
For some tests it might be undesired to terminate the `ActorSystem` via `CoordinatedShutdown`.
You can disable that by adding the following to the configuration of the `ActorSystem` that is
diff --git a/akka-docs/src/main/paradox/coordination.md b/docs/src/main/paradox/coordination.md
similarity index 84%
rename from akka-docs/src/main/paradox/coordination.md
rename to docs/src/main/paradox/coordination.md
index 30c0e6d2bb..456fd81b84 100644
--- a/akka-docs/src/main/paradox/coordination.md
+++ b/docs/src/main/paradox/coordination.md
@@ -38,10 +38,10 @@ Any lease implementation should provide the following guarantees:
To acquire a lease:
Scala
-: @@snip [LeaseDocSpec.scala](/akka-docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) { #lease-usage }
+: @@snip [LeaseDocSpec.scala](/docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) { #lease-usage }
Java
-: @@snip [LeaseDocTest.java](/akka-docs/src/test/java/jdocs/coordination/LeaseDocTest.java) { #lease-usage }
+: @@snip [LeaseDocTest.java](/docs/src/test/java/jdocs/coordination/LeaseDocTest.java) { #lease-usage }
Acquiring a lease returns a @scala[Future]@java[CompletionStage] as lease implementations typically are implemented
via a third party system such as the Kubernetes API server or Zookeeper.
@@ -56,10 +56,10 @@ It is important to pick a lease name that will be unique for your use case. If a
in a Cluster the cluster host port can be used:
Scala
-: @@snip [LeaseDocSpec.scala](/akka-docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) { #cluster-owner }
+: @@snip [LeaseDocSpec.scala](/docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) { #cluster-owner }
Java
-: @@snip [LeaseDocTest.scala](/akka-docs/src/test/java/jdocs/coordination/LeaseDocTest.java) { #cluster-owner }
+: @@snip [LeaseDocTest.scala](/docs/src/test/java/jdocs/coordination/LeaseDocTest.java) { #cluster-owner }
For use cases where multiple different leases on the same node then something unique must be added to the name. For example
a lease can be used with Cluster Sharding and in this case the shard Id is included in the lease name for each shard.
@@ -88,10 +88,10 @@ Implementations should extend
the @scala[`org.apache.pekko.coordination.lease.scaladsl.Lease`]@java[`org.apache.pekko.coordination.lease.javadsl.Lease`]
Scala
-: @@snip [LeaseDocSpec.scala](/akka-docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) { #lease-example }
+: @@snip [LeaseDocSpec.scala](/docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) { #lease-example }
Java
-: @@snip [LeaseDocTest.java](/akka-docs/src/test/java/jdocs/coordination/LeaseDocTest.java) { #lease-example }
+: @@snip [LeaseDocTest.java](/docs/src/test/java/jdocs/coordination/LeaseDocTest.java) { #lease-example }
The methods should provide the following guarantees:
@@ -112,7 +112,7 @@ The lease implementation should have support for the following properties where
This configuration location is passed into `getLease`.
Scala
-: @@snip [LeaseDocSpec.scala](/akka-docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) { #lease-config }
+: @@snip [LeaseDocSpec.scala](/docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) { #lease-config }
Java
-: @@snip [LeaseDocSpec.scala](/akka-docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) { #lease-config }
+: @@snip [LeaseDocSpec.scala](/docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) { #lease-config }
diff --git a/akka-docs/src/main/paradox/discovery/index.md b/docs/src/main/paradox/discovery/index.md
similarity index 96%
rename from akka-docs/src/main/paradox/discovery/index.md
rename to docs/src/main/paradox/discovery/index.md
index b6b509f6d0..24ec1445d3 100644
--- a/akka-docs/src/main/paradox/discovery/index.md
+++ b/docs/src/main/paradox/discovery/index.md
@@ -95,15 +95,15 @@ The mapping between Akka service discovery terminology and SRV terminology:
Configure `akka-dns` to be used as the discovery implementation in your `application.conf`:
-@@snip[application.conf](/akka-docs/src/test/scala/docs/discovery/DnsDiscoveryDocSpec.scala){ #configure-dns }
+@@snip[application.conf](/docs/src/test/scala/docs/discovery/DnsDiscoveryDocSpec.scala){ #configure-dns }
From there on, you can use the generic API that hides the fact which discovery method is being used by calling:
Scala
-: @@snip[snip](/akka-docs/src/test/scala/docs/discovery/DnsDiscoveryDocSpec.scala){ #lookup-dns }
+: @@snip[snip](/docs/src/test/scala/docs/discovery/DnsDiscoveryDocSpec.scala){ #lookup-dns }
Java
-: @@snip[snip](/akka-docs/src/test/java/jdocs/discovery/DnsDiscoveryDocTest.java){ #lookup-dns }
+: @@snip[snip](/docs/src/test/java/jdocs/discovery/DnsDiscoveryDocTest.java){ #lookup-dns }
### DNS records used
diff --git a/akka-docs/src/main/paradox/dispatchers.md b/docs/src/main/paradox/dispatchers.md
similarity index 72%
rename from akka-docs/src/main/paradox/dispatchers.md
rename to docs/src/main/paradox/dispatchers.md
index 18bdb00b4f..0b6cc7f51f 100644
--- a/akka-docs/src/main/paradox/dispatchers.md
+++ b/docs/src/main/paradox/dispatchers.md
@@ -22,10 +22,10 @@ Dispatchers are part of core Akka, which means that they are part of the akka-ac
Dispatchers implement the @scala[@scaladoc[ExecutionContext](scala.concurrent.ExecutionContext)]@java[@javadoc[Executor](java.util.concurrent.Executor)] interface and can thus be used to run @scala[@scaladoc[Future](scala.concurrent.Future)]@java[@javadoc[CompletableFuture](java.util.concurrent.CompletableFuture)] invocations etc.
Scala
-: @@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #lookup }
+: @@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #lookup }
Java
-: @@snip [DispatcherDocTest.java](/akka-docs/src/test/java/jdocs/dispatcher/DispatcherDocTest.java) { #lookup }
+: @@snip [DispatcherDocTest.java](/docs/src/test/java/jdocs/dispatcher/DispatcherDocTest.java) { #lookup }
## Setting the dispatcher for an Actor
@@ -33,7 +33,7 @@ So in case you want to give your @apidoc[actor.Actor] a different dispatcher tha
is to configure the dispatcher:
-@@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #my-dispatcher-config }
+@@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #my-dispatcher-config }
@@@ note
@@ -47,7 +47,7 @@ You can read more about parallelism in the JDK's [ForkJoinPool documentation](ht
Another example that uses the "thread-pool-executor":
-@@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #fixed-pool-size-dispatcher-config }
+@@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #fixed-pool-size-dispatcher-config }
@@@ note
@@ -61,23 +61,23 @@ For more options, see @ref[Dispatchers](typed/dispatchers.md) and the `default-d
Then you create the actor as usual and define the dispatcher in the deployment configuration.
Scala
-: @@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #defining-dispatcher-in-config }
+: @@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #defining-dispatcher-in-config }
Java
-: @@snip [DispatcherDocTest.java](/akka-docs/src/test/java/jdocs/dispatcher/DispatcherDocTest.java) { #defining-dispatcher-in-config }
+: @@snip [DispatcherDocTest.java](/docs/src/test/java/jdocs/dispatcher/DispatcherDocTest.java) { #defining-dispatcher-in-config }
-@@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #dispatcher-deployment-config }
+@@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #dispatcher-deployment-config }
An alternative to the deployment configuration is to define the dispatcher in code.
If you define the `dispatcher` in the deployment configuration then this value will be used instead
of programmatically provided parameter.
Scala
-: @@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #defining-dispatcher-in-code }
+: @@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #defining-dispatcher-in-code }
Java
-: @@snip [DispatcherDocTest.java](/akka-docs/src/test/java/jdocs/dispatcher/DispatcherDocTest.java) { #defining-dispatcher-in-code }
+: @@snip [DispatcherDocTest.java](/docs/src/test/java/jdocs/dispatcher/DispatcherDocTest.java) { #defining-dispatcher-in-code }
@@@ note
diff --git a/akka-docs/src/main/paradox/distributed-data.md b/docs/src/main/paradox/distributed-data.md
similarity index 76%
rename from akka-docs/src/main/paradox/distributed-data.md
rename to docs/src/main/paradox/distributed-data.md
index bfe5fb40e4..4ca36d7a23 100644
--- a/akka-docs/src/main/paradox/distributed-data.md
+++ b/docs/src/main/paradox/distributed-data.md
@@ -43,10 +43,10 @@ adds or removes elements from a @apidoc[ORSet](cluster.ddata.ORSet) (observed-re
changes of this.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #data-bot }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #data-bot }
Java
-: @@snip [DataBot.java](/akka-docs/src/test/java/jdocs/ddata/DataBot.java) { #data-bot }
+: @@snip [DataBot.java](/docs/src/test/java/jdocs/ddata/DataBot.java) { #data-bot }
### Update
@@ -68,10 +68,10 @@ for example not access the sender (@scala[@scaladoc[sender()](pekko.actor.Actor#
as the `Replicator`, because the `modify` function is typically not serializable.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #update }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #update }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #update }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #update }
As reply of the `Update` a @apidoc[Replicator.UpdateSuccess](cluster.ddata.Replicator.UpdateSuccess) is sent to the sender of the
`Update` if the value was successfully replicated according to the supplied
@@ -81,17 +81,17 @@ or was rolled back. It may still have been replicated to some nodes, and will ev
be replicated to all nodes with the gossip protocol.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #update-response1 }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #update-response1 }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #update-response1 }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #update-response1 }
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #update-response2 }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #update-response2 }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #update-response2 }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #update-response2 }
You will always see your own writes. For example if you send two @apidoc[cluster.ddata.Replicator.Update] messages
changing the value of the same `key`, the `modify` function of the second message will
@@ -107,10 +107,10 @@ way to pass contextual information (e.g. original sender) without having to use
or maintain local correlation data structures.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #update-request-context }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #update-request-context }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #update-request-context }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #update-request-context }
### Get
@@ -121,37 +121,37 @@ To retrieve the current value of a data you send @apidoc[Replicator.Get](cluster
`Replicator`. You supply a consistency level which has the following meaning:
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #get }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #get }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #get }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #get }
As reply of the `Get` a @apidoc[Replicator.GetSuccess](cluster.ddata.Replicator.GetSuccess) is sent to the sender of the
`Get` if the value was successfully retrieved according to the supplied @ref:[read consistency level](typed/distributed-data.md#read-consistency) within the supplied timeout. Otherwise a @apidoc[Replicator.GetFailure](cluster.ddata.Replicator.GetFailure) is sent.
If the key does not exist the reply will be @apidoc[Replicator.NotFound](cluster.ddata.Replicator.NotFound).
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #get-response1 }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #get-response1 }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #get-response1 }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #get-response1 }
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #get-response2 }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #get-response2 }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #get-response2 }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #get-response2 }
In the @apidoc[cluster.ddata.Replicator.Get] message you can pass an optional request context in the same way as for the
@apidoc[cluster.ddata.Replicator.Update] message, described above. For example the original sender can be passed and replied
to after receiving and transforming @apidoc[cluster.ddata.Replicator.GetSuccess].
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #get-request-context }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #get-request-context }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #get-request-context }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #get-request-context }
### Subscribe
@@ -168,10 +168,10 @@ The subscriber is automatically removed if the subscriber is terminated. A subsc
also be deregistered with the @apidoc[Replicator.Unsubscribe](cluster.ddata.Replicator.Unsubscribe) message.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #subscribe }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #subscribe }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #subscribe }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #subscribe }
### Consistency
@@ -180,24 +180,24 @@ For the full documentation of this feature and for new projects see @ref:[Distri
Here is an example of using @apidoc[cluster.ddata.Replicator.WriteMajority] and @apidoc[cluster.ddata.Replicator.ReadMajority]:
Scala
-: @@snip [ShoppingCart.scala](/akka-docs/src/test/scala/docs/ddata/ShoppingCart.scala) { #read-write-majority }
+: @@snip [ShoppingCart.scala](/docs/src/test/scala/docs/ddata/ShoppingCart.scala) { #read-write-majority }
Java
-: @@snip [ShoppingCart.java](/akka-docs/src/test/java/jdocs/ddata/ShoppingCart.java) { #read-write-majority }
+: @@snip [ShoppingCart.java](/docs/src/test/java/jdocs/ddata/ShoppingCart.java) { #read-write-majority }
Scala
-: @@snip [ShoppingCart.scala](/akka-docs/src/test/scala/docs/ddata/ShoppingCart.scala) { #get-cart }
+: @@snip [ShoppingCart.scala](/docs/src/test/scala/docs/ddata/ShoppingCart.scala) { #get-cart }
Java
-: @@snip [ShoppingCart.java](/akka-docs/src/test/java/jdocs/ddata/ShoppingCart.java) { #get-cart }
+: @@snip [ShoppingCart.java](/docs/src/test/java/jdocs/ddata/ShoppingCart.java) { #get-cart }
Scala
-: @@snip [ShoppingCart.scala](/akka-docs/src/test/scala/docs/ddata/ShoppingCart.scala) { #add-item }
+: @@snip [ShoppingCart.scala](/docs/src/test/scala/docs/ddata/ShoppingCart.scala) { #add-item }
Java
-: @@snip [ShoppingCart.java](/akka-docs/src/test/java/jdocs/ddata/ShoppingCart.java) { #add-item }
+: @@snip [ShoppingCart.java](/docs/src/test/java/jdocs/ddata/ShoppingCart.java) { #add-item }
In some rare cases, when performing an @apidoc[cluster.ddata.Replicator.Update] it is needed to first try to fetch latest data from
other nodes. That can be done by first sending a @apidoc[cluster.ddata.Replicator.Get] with @apidoc[cluster.ddata.Replicator.ReadMajority] and then continue with
@@ -210,10 +210,10 @@ performed (hence the name observed-removed set).
The following example illustrates how to do that:
Scala
-: @@snip [ShoppingCart.scala](/akka-docs/src/test/scala/docs/ddata/ShoppingCart.scala) { #remove-item }
+: @@snip [ShoppingCart.scala](/docs/src/test/scala/docs/ddata/ShoppingCart.scala) { #remove-item }
Java
-: @@snip [ShoppingCart.java](/akka-docs/src/test/java/jdocs/ddata/ShoppingCart.java) { #remove-item }
+: @@snip [ShoppingCart.java](/docs/src/test/java/jdocs/ddata/ShoppingCart.java) { #remove-item }
@@@ warning
@@ -231,10 +231,10 @@ happens to be n4, n5, n6, n7, i.e. the value on n1, n2, n3 is not seen in the re
For the full documentation of this feature and for new projects see @ref:[Distributed Data - Delete](typed/distributed-data.md#delete).
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #delete }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #delete }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #delete }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #delete }
@@@ warning
diff --git a/akka-docs/src/main/paradox/distributed-pub-sub.md b/docs/src/main/paradox/distributed-pub-sub.md
similarity index 100%
rename from akka-docs/src/main/paradox/distributed-pub-sub.md
rename to docs/src/main/paradox/distributed-pub-sub.md
diff --git a/akka-docs/src/main/paradox/durable-state/persistence-query.md b/docs/src/main/paradox/durable-state/persistence-query.md
similarity index 100%
rename from akka-docs/src/main/paradox/durable-state/persistence-query.md
rename to docs/src/main/paradox/durable-state/persistence-query.md
diff --git a/akka-docs/src/main/paradox/event-bus.md b/docs/src/main/paradox/event-bus.md
similarity index 73%
rename from akka-docs/src/main/paradox/event-bus.md
rename to docs/src/main/paradox/event-bus.md
index e5fe2f2b37..40200391a4 100644
--- a/akka-docs/src/main/paradox/event-bus.md
+++ b/docs/src/main/paradox/event-bus.md
@@ -8,7 +8,7 @@ Scala
: @@snip [EventBus.scala](/akka-actor/src/main/scala/org/apache/pekko/event/EventBus.scala) { #event-bus-api }
Java
-: @@snip [EventBusDocTest.java](/akka-docs/src/test/java/jdocs/event/EventBusDocTest.java) { #event-bus-api }
+: @@snip [EventBusDocTest.java](/docs/src/test/java/jdocs/event/EventBusDocTest.java) { #event-bus-api }
@@@ note
@@ -48,18 +48,18 @@ compare subscribers and how exactly to classify them.
The necessary methods to be implemented are illustrated with the following example:
Scala
-: @@snip [EventBusDocSpec.scala](/akka-docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #lookup-bus }
+: @@snip [EventBusDocSpec.scala](/docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #lookup-bus }
Java
-: @@snip [EventBusDocTest.java](/akka-docs/src/test/java/jdocs/event/EventBusDocTest.java) { #lookup-bus }
+: @@snip [EventBusDocTest.java](/docs/src/test/java/jdocs/event/EventBusDocTest.java) { #lookup-bus }
A test for this implementation may look like this:
Scala
-: @@snip [EventBusDocSpec.scala](/akka-docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #lookup-bus-test }
+: @@snip [EventBusDocSpec.scala](/docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #lookup-bus-test }
Java
-: @@snip [EventBusDocTest.java](/akka-docs/src/test/java/jdocs/event/EventBusDocTest.java) { #lookup-bus-test }
+: @@snip [EventBusDocTest.java](/docs/src/test/java/jdocs/event/EventBusDocTest.java) { #lookup-bus-test }
This classifier is efficient in case no subscribers exist for a particular event.
@@ -76,18 +76,18 @@ classifier hierarchy.
The necessary methods to be implemented are illustrated with the following example:
Scala
-: @@snip [EventBusDocSpec.scala](/akka-docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #subchannel-bus }
+: @@snip [EventBusDocSpec.scala](/docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #subchannel-bus }
Java
-: @@snip [EventBusDocTest.java](/akka-docs/src/test/java/jdocs/event/EventBusDocTest.java) { #subchannel-bus }
+: @@snip [EventBusDocTest.java](/docs/src/test/java/jdocs/event/EventBusDocTest.java) { #subchannel-bus }
A test for this implementation may look like this:
Scala
-: @@snip [EventBusDocSpec.scala](/akka-docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #subchannel-bus-test }
+: @@snip [EventBusDocSpec.scala](/docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #subchannel-bus-test }
Java
-: @@snip [EventBusDocTest.java](/akka-docs/src/test/java/jdocs/event/EventBusDocTest.java) { #subchannel-bus-test }
+: @@snip [EventBusDocTest.java](/docs/src/test/java/jdocs/event/EventBusDocTest.java) { #subchannel-bus-test }
This classifier is also efficient in case no subscribers are found for an
event, but it uses conventional locking to synchronize an internal classifier
@@ -106,18 +106,18 @@ stations by geographical reachability (for old-school radio-wave transmission).
The necessary methods to be implemented are illustrated with the following example:
Scala
-: @@snip [EventBusDocSpec.scala](/akka-docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #scanning-bus }
+: @@snip [EventBusDocSpec.scala](/docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #scanning-bus }
Java
-: @@snip [EventBusDocTest.java](/akka-docs/src/test/java/jdocs/event/EventBusDocTest.java) { #scanning-bus }
+: @@snip [EventBusDocTest.java](/docs/src/test/java/jdocs/event/EventBusDocTest.java) { #scanning-bus }
A test for this implementation may look like this:
Scala
-: @@snip [EventBusDocSpec.scala](/akka-docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #scanning-bus-test }
+: @@snip [EventBusDocSpec.scala](/docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #scanning-bus-test }
Java
-: @@snip [EventBusDocTest.java](/akka-docs/src/test/java/jdocs/event/EventBusDocTest.java) { #scanning-bus-test }
+: @@snip [EventBusDocTest.java](/docs/src/test/java/jdocs/event/EventBusDocTest.java) { #scanning-bus-test }
This classifier takes always a time which is proportional to the number of
subscriptions, independent of how many actually match.
@@ -136,18 +136,18 @@ takes care of unsubscribing terminated actors automatically.
The necessary methods to be implemented are illustrated with the following example:
Scala
-: @@snip [EventBusDocSpec.scala](/akka-docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #actor-bus }
+: @@snip [EventBusDocSpec.scala](/docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #actor-bus }
Java
-: @@snip [EventBusDocTest.java](/akka-docs/src/test/java/jdocs/event/EventBusDocTest.java) { #actor-bus }
+: @@snip [EventBusDocTest.java](/docs/src/test/java/jdocs/event/EventBusDocTest.java) { #actor-bus }
A test for this implementation may look like this:
Scala
-: @@snip [EventBusDocSpec.scala](/akka-docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #actor-bus-test }
+: @@snip [EventBusDocSpec.scala](/docs/src/test/scala/docs/event/EventBusDocSpec.scala) { #actor-bus-test }
Java
-: @@snip [EventBusDocTest.java](/akka-docs/src/test/java/jdocs/event/EventBusDocTest.java) { #actor-bus-test }
+: @@snip [EventBusDocTest.java](/docs/src/test/java/jdocs/event/EventBusDocTest.java) { #actor-bus-test }
This classifier is still is generic in the event type, and it is efficient for
all use cases.
@@ -163,19 +163,19 @@ how a simple subscription works. Given a simple actor:
@@@ div { .group-scala }
-@@snip [LoggingDocSpec.scala](/akka-docs/src/test/scala/docs/event/LoggingDocSpec.scala) { #deadletters }
+@@snip [LoggingDocSpec.scala](/docs/src/test/scala/docs/event/LoggingDocSpec.scala) { #deadletters }
@@@
@@@ div { .group-java }
-@@snip [LoggingDocTest.java](/akka-docs/src/test/java/jdocs/event/LoggingDocTest.java) { #imports-deadletter }
+@@snip [LoggingDocTest.java](/docs/src/test/java/jdocs/event/LoggingDocTest.java) { #imports-deadletter }
-@@snip [LoggingDocTest.java](/akka-docs/src/test/java/jdocs/event/LoggingDocTest.java) { #deadletter-actor }
+@@snip [LoggingDocTest.java](/docs/src/test/java/jdocs/event/LoggingDocTest.java) { #deadletter-actor }
it can be subscribed like this:
-@@snip [LoggingDocTest.java](/akka-docs/src/test/java/jdocs/event/LoggingDocTest.java) { #deadletters }
+@@snip [LoggingDocTest.java](/docs/src/test/java/jdocs/event/LoggingDocTest.java) { #deadletters }
@@@
@@ -185,10 +185,10 @@ is implemented in the event stream, it is possible to subscribe to a group of ev
subscribing to their common superclass as demonstrated in the following example:
Scala
-: @@snip [LoggingDocSpec.scala](/akka-docs/src/test/scala/docs/event/LoggingDocSpec.scala) { #superclass-subscription-eventstream }
+: @@snip [LoggingDocSpec.scala](/docs/src/test/scala/docs/event/LoggingDocSpec.scala) { #superclass-subscription-eventstream }
Java
-: @@snip [LoggingDocTest.java](/akka-docs/src/test/java/jdocs/event/LoggingDocTest.java) { #superclass-subscription-eventstream }
+: @@snip [LoggingDocTest.java](/docs/src/test/java/jdocs/event/LoggingDocTest.java) { #superclass-subscription-eventstream }
Similarly to @ref:[Actor Classification](#actor-classification), @apidoc[event.EventStream] will automatically remove subscribers when they terminate.
@@ -250,18 +250,18 @@ However, in case you find yourself in need of debugging these kinds of low level
it's still possible to subscribe to them explicitly:
Scala
-: @@snip [LoggingDocSpec.scala](/akka-docs/src/test/scala/docs/event/LoggingDocSpec.scala) { #suppressed-deadletters }
+: @@snip [LoggingDocSpec.scala](/docs/src/test/scala/docs/event/LoggingDocSpec.scala) { #suppressed-deadletters }
Java
-: @@snip [LoggingDocTest.java](/akka-docs/src/test/java/jdocs/event/LoggingDocTest.java) { #suppressed-deadletters }
+: @@snip [LoggingDocTest.java](/docs/src/test/java/jdocs/event/LoggingDocTest.java) { #suppressed-deadletters }
or all dead letters (including the suppressed ones):
Scala
-: @@snip [LoggingDocSpec.scala](/akka-docs/src/test/scala/docs/event/LoggingDocSpec.scala) { #all-deadletters }
+: @@snip [LoggingDocSpec.scala](/docs/src/test/scala/docs/event/LoggingDocSpec.scala) { #all-deadletters }
Java
-: @@snip [LoggingDocTest.java](/akka-docs/src/test/java/jdocs/event/LoggingDocTest.java) { #all-deadletters }
+: @@snip [LoggingDocTest.java](/docs/src/test/java/jdocs/event/LoggingDocTest.java) { #all-deadletters }
### Other Uses
diff --git a/akka-docs/src/main/paradox/extending-akka.md b/docs/src/main/paradox/extending-akka.md
similarity index 62%
rename from akka-docs/src/main/paradox/extending-akka.md
rename to docs/src/main/paradox/extending-akka.md
index 93df3b21d4..52b5605c79 100644
--- a/akka-docs/src/main/paradox/extending-akka.md
+++ b/docs/src/main/paradox/extending-akka.md
@@ -24,40 +24,40 @@ So let's create a sample extension that lets us count the number of times someth
First, we define what our @apidoc[Extension](actor.Extension) should do:
Scala
-: @@snip [ExtensionDocSpec.scala](/akka-docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #extension }
+: @@snip [ExtensionDocSpec.scala](/docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #extension }
Java
-: @@snip [ExtensionDocTest.java](/akka-docs/src/test/java/jdocs/extension/ExtensionDocTest.java) { #imports #extension }
+: @@snip [ExtensionDocTest.java](/docs/src/test/java/jdocs/extension/ExtensionDocTest.java) { #imports #extension }
Then we need to create an @apidoc[ExtensionId](actor.ExtensionId) for our extension so we can grab a hold of it.
Scala
-: @@snip [ExtensionDocSpec.scala](/akka-docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #extensionid }
+: @@snip [ExtensionDocSpec.scala](/docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #extensionid }
Java
-: @@snip [ExtensionDocTest.java](/akka-docs/src/test/java/jdocs/extension/ExtensionDocTest.java) { #imports #extensionid }
+: @@snip [ExtensionDocTest.java](/docs/src/test/java/jdocs/extension/ExtensionDocTest.java) { #imports #extensionid }
Wicked! Now all we need to do is to actually use it:
Scala
-: @@snip [ExtensionDocSpec.scala](/akka-docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #extension-usage }
+: @@snip [ExtensionDocSpec.scala](/docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #extension-usage }
Java
-: @@snip [ExtensionDocTest.java](/akka-docs/src/test/java/jdocs/extension/ExtensionDocTest.java) { #extension-usage }
+: @@snip [ExtensionDocTest.java](/docs/src/test/java/jdocs/extension/ExtensionDocTest.java) { #extension-usage }
Or from inside of an Akka Actor:
Scala
-: @@snip [ExtensionDocSpec.scala](/akka-docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #extension-usage-actor }
+: @@snip [ExtensionDocSpec.scala](/docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #extension-usage-actor }
Java
-: @@snip [ExtensionDocTest.java](/akka-docs/src/test/java/jdocs/extension/ExtensionDocTest.java) { #extension-usage-actor }
+: @@snip [ExtensionDocTest.java](/docs/src/test/java/jdocs/extension/ExtensionDocTest.java) { #extension-usage-actor }
@@@ div { .group-scala }
You can also hide extension behind traits:
-@@snip [ExtensionDocSpec.scala](/akka-docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #extension-usage-actor-trait }
+@@snip [ExtensionDocSpec.scala](/docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #extension-usage-actor-trait }
@@@
@@ -70,7 +70,7 @@ To be able to load extensions from your Akka configuration you must add FQCNs of
in the `akka.extensions` section of the config you provide to your @apidoc[ActorSystem](actor.ActorSystem).
Scala
-: @@snip [ExtensionDocSpec.scala](/akka-docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #config }
+: @@snip [ExtensionDocSpec.scala](/docs/src/test/scala/docs/extension/ExtensionDocSpec.scala) { #config }
Java
: @@@vars
@@ -93,23 +93,23 @@ The @ref:[configuration](general/configuration.md) can be used for application s
Sample configuration:
-@@snip [SettingsExtensionDocSpec.scala](/akka-docs/src/test/scala/docs/extension/SettingsExtensionDocSpec.scala) { #config }
+@@snip [SettingsExtensionDocSpec.scala](/docs/src/test/scala/docs/extension/SettingsExtensionDocSpec.scala) { #config }
The @apidoc[Extension](actor.Extension):
Scala
-: @@snip [SettingsExtensionDocSpec.scala](/akka-docs/src/test/scala/docs/extension/SettingsExtensionDocSpec.scala) { #imports #extension #extensionid }
+: @@snip [SettingsExtensionDocSpec.scala](/docs/src/test/scala/docs/extension/SettingsExtensionDocSpec.scala) { #imports #extension #extensionid }
Java
-: @@snip [SettingsExtensionDocTest.java](/akka-docs/src/test/java/jdocs/extension/SettingsExtensionDocTest.java) { #imports #extension #extensionid }
+: @@snip [SettingsExtensionDocTest.java](/docs/src/test/java/jdocs/extension/SettingsExtensionDocTest.java) { #imports #extension #extensionid }
Use it:
Scala
-: @@snip [SettingsExtensionDocSpec.scala](/akka-docs/src/test/scala/docs/extension/SettingsExtensionDocSpec.scala) { #extension-usage-actor }
+: @@snip [SettingsExtensionDocSpec.scala](/docs/src/test/scala/docs/extension/SettingsExtensionDocSpec.scala) { #extension-usage-actor }
Java
-: @@snip [SettingsExtensionDocTest.java](/akka-docs/src/test/java/jdocs/extension/SettingsExtensionDocTest.java) { #extension-usage-actor }
+: @@snip [SettingsExtensionDocTest.java](/docs/src/test/java/jdocs/extension/SettingsExtensionDocTest.java) { #extension-usage-actor }
## Library extensions
diff --git a/akka-docs/src/main/paradox/fault-tolerance-sample.md b/docs/src/main/paradox/fault-tolerance-sample.md
similarity index 94%
rename from akka-docs/src/main/paradox/fault-tolerance-sample.md
rename to docs/src/main/paradox/fault-tolerance-sample.md
index c7a5562dbc..f40e7bd513 100644
--- a/akka-docs/src/main/paradox/fault-tolerance-sample.md
+++ b/docs/src/main/paradox/fault-tolerance-sample.md
@@ -36,7 +36,7 @@
# Full Source Code of the Fault Tolerance Sample
Scala
-: @@snip [FaultHandlingDocSample.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSample.scala) { #all }
+: @@snip [FaultHandlingDocSample.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSample.scala) { #all }
Java
-: @@snip [FaultHandlingDocSample.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingDocSample.java) { #all }
+: @@snip [FaultHandlingDocSample.java](/docs/src/test/java/jdocs/actor/FaultHandlingDocSample.java) { #all }
diff --git a/akka-docs/src/main/paradox/fault-tolerance.md b/docs/src/main/paradox/fault-tolerance.md
similarity index 78%
rename from akka-docs/src/main/paradox/fault-tolerance.md
rename to docs/src/main/paradox/fault-tolerance.md
index 42a99e3c91..1afcd0f6a0 100644
--- a/akka-docs/src/main/paradox/fault-tolerance.md
+++ b/docs/src/main/paradox/fault-tolerance.md
@@ -42,10 +42,10 @@ in more depth.
For the sake of demonstration let us consider the following strategy:
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #strategy }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #strategy }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #strategy }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #strategy }
We have chosen a few well-known exception types in order to demonstrate the
application of the fault handling directives described in @ref:[supervision](general/supervision.md).
@@ -100,7 +100,7 @@ in the same way as the default strategy defined above.
You can combine your own strategy with the default strategy:
-@@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #default-strategy-fallback }
+@@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #default-strategy-fallback }
@@@
@@ -143,73 +143,73 @@ The following section shows the effects of the different directives in practice,
where a test setup is needed. First off, we need a suitable supervisor:
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #supervisor }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #supervisor }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #supervisor }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #supervisor }
This supervisor will be used to create a child, with which we can experiment:
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #child }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #child }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #child }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #child }
The test is easier by using the utilities described in @scala[@ref:[Testing Actor Systems](testing.md)]@java[@ref:[TestKit](testing.md)],
where `TestProbe` provides an actor ref useful for receiving and inspecting replies.
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #testkit }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #testkit }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #testkit }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #testkit }
Let us create actors:
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #create }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #create }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #create }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #create }
The first test shall demonstrate the `Resume` directive, so we try it out by
setting some non-initial state in the actor and have it fail:
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #resume }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #resume }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #resume }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #resume }
As you can see the value 42 survives the fault handling directive. Now, if we
change the failure to a more serious `NullPointerException`, that will no
longer be the case:
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #restart }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #restart }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #restart }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #restart }
And finally in case of the fatal `IllegalArgumentException` the child will be
terminated by the supervisor:
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #stop }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #stop }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #stop }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #stop }
Up to now the supervisor was completely unaffected by the child’s failure,
because the directives set did handle it. In case of an `Exception`, this is not
true anymore and the supervisor escalates the failure.
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #escalate-kill }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #escalate-kill }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #escalate-kill }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #escalate-kill }
The supervisor itself is supervised by the top-level actor provided by the
`ActorSystem`, which has the default policy to restart in case of all
@@ -222,19 +222,19 @@ In case this is not desired (which depends on the use case), we need to use a
different supervisor which overrides this behavior.
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #supervisor2 }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #supervisor2 }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #supervisor2 }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #supervisor2 }
With this parent, the child survives the escalated restart, as demonstrated in
the last test:
Scala
-: @@snip [FaultHandlingDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #escalate-restart }
+: @@snip [FaultHandlingDocSpec.scala](/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala) { #escalate-restart }
Java
-: @@snip [FaultHandlingTest.java](/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #escalate-restart }
+: @@snip [FaultHandlingTest.java](/docs/src/test/java/jdocs/actor/FaultHandlingTest.java) { #escalate-restart }
## Delayed restarts for classic actors
@@ -270,11 +270,11 @@ If the 'on stop' strategy is used for sharded actors a final termination message
The termination message is configured with:
-@@snip [BackoffSupervisorDocSpec.scala](/akka-docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-sharded }
+@@snip [BackoffSupervisorDocSpec.scala](/docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-sharded }
And must be used for passivation:
-@@snip [BackoffSupervisorDocSpec.scala](/akka-docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-sharded-passivation }
+@@snip [BackoffSupervisorDocSpec.scala](/docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-sharded-passivation }
### Simple backoff
@@ -283,10 +283,10 @@ The following snippet shows how to create a backoff supervisor which will start
because of a failure, in increasing intervals of 3, 6, 12, 24 and finally 30 seconds:
Scala
-: @@snip [BackoffSupervisorDocSpec.scala](/akka-docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-stop }
+: @@snip [BackoffSupervisorDocSpec.scala](/docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-stop }
Java
-: @@snip [BackoffSupervisorDocTest.java](/akka-docs/src/test/java/jdocs/pattern/BackoffSupervisorDocTest.java) { #backoff-stop }
+: @@snip [BackoffSupervisorDocTest.java](/docs/src/test/java/jdocs/pattern/BackoffSupervisorDocTest.java) { #backoff-stop }
Using a `randomFactor` to add a little bit of additional variance to the backoff intervals
is highly recommended, in order to avoid multiple actors re-start at the exact same point in time,
@@ -302,10 +302,10 @@ The following snippet shows how to create a backoff supervisor which will start
because of some exception, in increasing intervals of 3, 6, 12, 24 and finally 30 seconds:
Scala
-: @@snip [BackoffSupervisorDocSpec.scala](/akka-docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-fail }
+: @@snip [BackoffSupervisorDocSpec.scala](/docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-fail }
Java
-: @@snip [BackoffSupervisorDocTest.java](/akka-docs/src/test/java/jdocs/pattern/BackoffSupervisorDocTest.java) { #backoff-fail }
+: @@snip [BackoffSupervisorDocTest.java](/docs/src/test/java/jdocs/pattern/BackoffSupervisorDocTest.java) { #backoff-fail }
### Customization
@@ -323,13 +323,13 @@ Only available on `BackoffOnStopOptions`:
Some examples:
-@@snip [BackoffSupervisorDocSpec.scala](/akka-docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-custom-stop }
+@@snip [BackoffSupervisorDocSpec.scala](/docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-custom-stop }
The above code sets up a back-off supervisor that requires the child actor to send a `org.apache.pekko.pattern.BackoffSupervisor.Reset` message
to its parent when a message is successfully processed, resetting the back-off. It also uses a default stopping strategy, any exception
will cause the child to stop.
-@@snip [BackoffSupervisorDocSpec.scala](/akka-docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-custom-fail }
+@@snip [BackoffSupervisorDocSpec.scala](/docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala) { #backoff-custom-fail }
The above code sets up a back-off supervisor that stops and starts the child after back-off if MyException is thrown, any other exception will be
escalated. The back-off is automatically reset if the child does not throw any errors within 10 seconds.
diff --git a/akka-docs/src/main/paradox/fsm.md b/docs/src/main/paradox/fsm.md
similarity index 82%
rename from akka-docs/src/main/paradox/fsm.md
rename to docs/src/main/paradox/fsm.md
index ce302430d1..2d0cd5dbdc 100644
--- a/akka-docs/src/main/paradox/fsm.md
+++ b/docs/src/main/paradox/fsm.md
@@ -39,28 +39,28 @@ send them on after the burst ended or a flush request is received.
First, consider all of the below to use these import statements:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #simple-imports }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #simple-imports }
Java
-: @@snip [Buncher.java](/akka-docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #simple-imports }
+: @@snip [Buncher.java](/docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #simple-imports }
The contract of our “Buncher” actor is that it accepts or produces the following messages:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #simple-events }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #simple-events }
Java
-: @@snip [Events.java](/akka-docs/src/test/java/jdocs/actor/fsm/Events.java) { #simple-events }
+: @@snip [Events.java](/docs/src/test/java/jdocs/actor/fsm/Events.java) { #simple-events }
`SetTarget` is needed for starting it up, setting the destination for the
`Batches` to be passed on; `Queue` will add to the internal queue while
`Flush` will mark the end of a burst.
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #simple-state }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #simple-state }
Java
-: @@snip [Buncher.java](/akka-docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #simple-state }
+: @@snip [Buncher.java](/docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #simple-state }
The actor can be in two states: no message queued (aka `Idle`) or some
message queued (aka `Active`). It will stay in the `Active` state as long as
@@ -71,10 +71,10 @@ the actual queue of messages.
Now let’s take a look at the skeleton for our FSM actor:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #simple-fsm }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #simple-fsm }
Java
-: @@snip [Buncher.java](/akka-docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #simple-fsm }
+: @@snip [Buncher.java](/docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #simple-fsm }
The basic strategy is to declare the actor, @scala[mixing in the `FSM` trait]@java[by inheriting the `AbstractFSM` class]
and specifying the possible states and data values as type parameters. Within
@@ -102,10 +102,10 @@ which is not handled by the `when()` block is passed to the
`whenUnhandled()` block:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #unhandled-elided }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #unhandled-elided }
Java
-: @@snip [Buncher.java](/akka-docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #unhandled-elided }
+: @@snip [Buncher.java](/docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #unhandled-elided }
The first case handled here is adding `Queue()` requests to the internal
queue and going to the `Active` state (this does the obvious thing of staying
@@ -120,10 +120,10 @@ multiple such blocks and all of them will be tried for matching behavior in
case a state transition occurs (i.e. only when the state actually changes).
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #transition-elided }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #transition-elided }
Java
-: @@snip [Buncher.java](/akka-docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #transition-elided }
+: @@snip [Buncher.java](/docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #transition-elided }
The transition callback is a @scala[partial function]@java[builder constructed by `matchState`, followed by zero or multiple `state`], which takes as input a pair of
states—the current and the next state. @scala[The FSM trait includes a convenience
@@ -145,10 +145,10 @@ To verify that this buncher actually works, it is quite easy to write a test
using the @scala[@ref:[Testing Actor Systems which is conveniently bundled with ScalaTest traits into `AkkaSpec`](testing.md)]@java[@ref:[TestKit](testing.md), here using JUnit as an example]:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #test-code }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #test-code }
Java
-: @@snip [BuncherTest.java](/akka-docs/src/test/java/jdocs/actor/fsm/BuncherTest.java) { #test-code }
+: @@snip [BuncherTest.java](/docs/src/test/java/jdocs/actor/fsm/BuncherTest.java) { #test-code }
## Reference
@@ -164,10 +164,10 @@ Actor since an Actor is created to drive the FSM.
]
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #simple-fsm }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #simple-fsm }
Java
-: @@snip [Buncher.java](/akka-docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #simple-fsm }
+: @@snip [Buncher.java](/docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #simple-fsm }
@@@ note
@@ -221,10 +221,10 @@ which is conveniently given using the @scala[partial function literal]@java[stat
demonstrated below:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #when-syntax }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #when-syntax }
Java
-: @@snip [Buncher.java](/akka-docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #when-syntax }
+: @@snip [Buncher.java](/docs/src/test/java/jdocs/actor/fsm/Buncher.java) { #when-syntax }
@@@ div { .group-scala }
@@ -246,10 +246,10 @@ states. If you want to leave the handling of a state “unhandled” (more below
it still needs to be declared like this:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #NullFunction }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #NullFunction }
Java
-: @@snip [FSMDocTest.java](/akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #NullFunction }
+: @@snip [FSMDocTest.java](/docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #NullFunction }
### Defining the Initial State
@@ -270,10 +270,10 @@ do something else in this case you can specify that with
`whenUnhandled(stateFunction)`:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #unhandled-syntax }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #unhandled-syntax }
Java
-: @@snip [FSMDocTest.java](/akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #unhandled-syntax }
+: @@snip [FSMDocTest.java](/docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #unhandled-syntax }
Within this handler the state of the FSM may be queried using the
`stateName` method.
@@ -313,10 +313,10 @@ does not modify the state transition.
All modifiers can be chained to achieve a nice and concise description:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #modifier-syntax }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #modifier-syntax }
Java
-: @@snip [FSMDocTest.java](/akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #modifier-syntax }
+: @@snip [FSMDocTest.java](/docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #modifier-syntax }
The parentheses are not actually needed in all cases, but they visually
distinguish between modifiers and their arguments and therefore make the code
@@ -355,10 +355,10 @@ resulting state is needed as it is not possible to modify the transition in
progress.
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #transition-syntax }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #transition-syntax }
Java
-: @@snip [FSMDocTest.java](/akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #transition-syntax }
+: @@snip [FSMDocTest.java](/docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #transition-syntax }
@@@ div { .group-scala }
@@ -375,10 +375,10 @@ It is also possible to pass a function object accepting two states to
a method:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #alt-transition-syntax }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #alt-transition-syntax }
Java
-: @@snip [FSMDocTest.java](/akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #alt-transition-syntax }
+: @@snip [FSMDocTest.java](/docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #alt-transition-syntax }
The handlers registered with this method are stacked, so you can intersperse
`onTransition` blocks with `when` blocks as suits your design. It
@@ -430,13 +430,13 @@ transformed using Scala’s full supplement of functional programming tools. In
order to retain type inference, there is a helper function which may be used in
case some common handling logic shall be applied to different clauses:
-@@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #transform-syntax }
+@@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #transform-syntax }
It goes without saying that the arguments to this method may also be stored, to
be used several times, e.g. when applying the same transformation to several
`when()` blocks:
-@@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #alt-transform-syntax }
+@@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #alt-transform-syntax }
@@@
@@ -499,20 +499,20 @@ may not be used within a `when` block).
@@@
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #stop-syntax }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #stop-syntax }
Java
-: @@snip [FSMDocTest.java](/akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #stop-syntax }
+: @@snip [FSMDocTest.java](/docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #stop-syntax }
You can use `onTermination(handler)` to specify custom code that is
executed when the FSM is stopped. The handler is a partial function which takes
a `StopEvent(reason, stateName, stateData)` as argument:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #termination-syntax }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #termination-syntax }
Java
-: @@snip [FSMDocTest.java](/akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #termination-syntax }
+: @@snip [FSMDocTest.java](/docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #termination-syntax }
As for the `whenUnhandled` case, this handler is not stacked, so each
invocation of `onTermination` replaces the previously installed handler.
@@ -545,10 +545,10 @@ The setting `akka.actor.debug.fsm` in @ref:[configuration](general/configuration
event trace by `LoggingFSM` instances:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #logging-fsm }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #logging-fsm }
Java
-: @@snip [FSMDocTest.java](/akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #logging-fsm }
+: @@snip [FSMDocTest.java](/docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #logging-fsm }
This FSM will log at DEBUG level:
@@ -567,10 +567,10 @@ log which may be used during debugging (for tracing how the FSM entered a
certain failure state) or for other creative uses:
Scala
-: @@snip [FSMDocSpec.scala](/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #logging-fsm }
+: @@snip [FSMDocSpec.scala](/docs/src/test/scala/docs/actor/FSMDocSpec.scala) { #logging-fsm }
Java
-: @@snip [FSMDocTest.java](/akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #logging-fsm }
+: @@snip [FSMDocTest.java](/docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java) { #logging-fsm }
The `logDepth` defaults to zero, which turns off the event log.
diff --git a/akka-docs/src/main/paradox/futures.md b/docs/src/main/paradox/futures.md
similarity index 73%
rename from akka-docs/src/main/paradox/futures.md
rename to docs/src/main/paradox/futures.md
index c2f9cbf1d5..27ef62b161 100644
--- a/akka-docs/src/main/paradox/futures.md
+++ b/docs/src/main/paradox/futures.md
@@ -18,17 +18,17 @@ Akka offers tiny helpers for use with @scala[@scaladoc[Future](scala.concurrent.
@scala[`org.apache.pekko.pattern.after`]@java[@javadoc[org.apache.pekko.pattern.Patterns.after](pekko.pattern.Patterns#after)] makes it easy to complete a @scala[@scaladoc[Future](pekko.concurrent.Future)]@java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)] with a value or exception after a timeout.
Scala
-: @@snip [FutureDocSpec.scala](/akka-docs/src/test/scala/docs/future/FutureDocSpec.scala) { #after }
+: @@snip [FutureDocSpec.scala](/docs/src/test/scala/docs/future/FutureDocSpec.scala) { #after }
Java
-: @@snip [FutureDocTest.java](/akka-docs/src/test/java/jdocs/future/FutureDocTest.java) { #imports #after }
+: @@snip [FutureDocTest.java](/docs/src/test/java/jdocs/future/FutureDocTest.java) { #imports #after }
## Retry
@scala[`org.apache.pekko.pattern.retry`]@java[@javadoc[org.apache.pekko.pattern.Patterns.retry](pekko.pattern.Patterns#retry)] will retry a @scala[@scaladoc[Future](scala.concurrent.Future)]@java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)] some number of times with a delay between each attempt.
Scala
-: @@snip [FutureDocSpec.scala](/akka-docs/src/test/scala/docs/future/FutureDocSpec.scala) { #retry }
+: @@snip [FutureDocSpec.scala](/docs/src/test/scala/docs/future/FutureDocSpec.scala) { #retry }
Java
-: @@snip [FutureDocTest.java](/akka-docs/src/test/java/jdocs/future/FutureDocTest.java) { #imports #retry }
+: @@snip [FutureDocTest.java](/docs/src/test/java/jdocs/future/FutureDocTest.java) { #imports #retry }
diff --git a/akka-docs/src/main/paradox/general/ActorPath.png b/docs/src/main/paradox/general/ActorPath.png
similarity index 100%
rename from akka-docs/src/main/paradox/general/ActorPath.png
rename to docs/src/main/paradox/general/ActorPath.png
diff --git a/akka-docs/src/main/paradox/general/RemoteDeployment.png b/docs/src/main/paradox/general/RemoteDeployment.png
similarity index 100%
rename from akka-docs/src/main/paradox/general/RemoteDeployment.png
rename to docs/src/main/paradox/general/RemoteDeployment.png
diff --git a/akka-docs/src/main/paradox/general/actor-systems.md b/docs/src/main/paradox/general/actor-systems.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/actor-systems.md
rename to docs/src/main/paradox/general/actor-systems.md
diff --git a/akka-docs/src/main/paradox/general/actors.md b/docs/src/main/paradox/general/actors.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/actors.md
rename to docs/src/main/paradox/general/actors.md
diff --git a/akka-docs/src/main/paradox/general/addressing.md b/docs/src/main/paradox/general/addressing.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/addressing.md
rename to docs/src/main/paradox/general/addressing.md
diff --git a/akka-docs/src/main/paradox/general/configuration-reference.md b/docs/src/main/paradox/general/configuration-reference.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/configuration-reference.md
rename to docs/src/main/paradox/general/configuration-reference.md
diff --git a/akka-docs/src/main/paradox/general/configuration.md b/docs/src/main/paradox/general/configuration.md
similarity index 94%
rename from akka-docs/src/main/paradox/general/configuration.md
rename to docs/src/main/paradox/general/configuration.md
index 4763008f43..136a9998af 100644
--- a/akka-docs/src/main/paradox/general/configuration.md
+++ b/docs/src/main/paradox/general/configuration.md
@@ -176,10 +176,10 @@ e.g. in the reference configuration. The settings as merged with the reference
and parsed by the actor system can be displayed like this:
Scala
-: @@snip [ConfigDocSpec.scala](/akka-docs/src/test/scala/docs/config/ConfigDocSpec.scala) { #dump-config }
+: @@snip [ConfigDocSpec.scala](/docs/src/test/scala/docs/config/ConfigDocSpec.scala) { #dump-config }
Java
-: @@snip [ConfigDocTest.java](/akka-docs/src/test/java/jdocs/config/ConfigDocTest.java) { #dump-config }
+: @@snip [ConfigDocTest.java](/docs/src/test/java/jdocs/config/ConfigDocTest.java) { #dump-config }
## A Word About ClassLoaders
@@ -225,10 +225,10 @@ my.other.setting = "hello"
```
Scala
-: @@snip [ConfigDocSpec.scala](/akka-docs/src/test/scala/docs/config/ConfigDocSpec.scala) { #separate-apps }
+: @@snip [ConfigDocSpec.scala](/docs/src/test/scala/docs/config/ConfigDocSpec.scala) { #separate-apps }
Java
-: @@snip [ConfigDocTest.java](/akka-docs/src/test/java/jdocs/config/ConfigDocTest.java) { #separate-apps }
+: @@snip [ConfigDocTest.java](/docs/src/test/java/jdocs/config/ConfigDocTest.java) { #separate-apps }
These two samples demonstrate different variations of the “lift-a-subtree”
trick: in the first case, the configuration accessible from within the actor
@@ -266,10 +266,10 @@ the @apidoc[ActorSystem](typed.ActorSystem).
Scala
-: @@snip [ConfigDocSpec.scala](/akka-docs/src/test/scala/docs/config/ConfigDocSpec.scala) { #imports #custom-config }
+: @@snip [ConfigDocSpec.scala](/docs/src/test/scala/docs/config/ConfigDocSpec.scala) { #imports #custom-config }
Java
-: @@snip [ConfigDocTest.java](/akka-docs/src/test/java/jdocs/config/ConfigDocTest.java) { #imports #custom-config }
+: @@snip [ConfigDocTest.java](/docs/src/test/java/jdocs/config/ConfigDocTest.java) { #imports #custom-config }
## Reading configuration from a custom location
@@ -314,10 +314,10 @@ You can also combine your custom config with the usual config,
that might look like:
Scala
-: @@snip [ConfigDocSpec.scala](/akka-docs/src/test/scala/docs/config/ConfigDocSpec.scala) { #custom-config-2 }
+: @@snip [ConfigDocSpec.scala](/docs/src/test/scala/docs/config/ConfigDocSpec.scala) { #custom-config-2 }
Java
-: @@snip [ConfigDocTest.java](/akka-docs/src/test/java/jdocs/config/ConfigDocTest.java) { #custom-config-2 }
+: @@snip [ConfigDocTest.java](/docs/src/test/java/jdocs/config/ConfigDocTest.java) { #custom-config-2 }
When working with [Config](https://lightbend.github.io/config/latest/api/com/typesafe/config/Config.html) objects, keep in mind that there are
diff --git a/akka-docs/src/main/paradox/general/guardians.png b/docs/src/main/paradox/general/guardians.png
similarity index 100%
rename from akka-docs/src/main/paradox/general/guardians.png
rename to docs/src/main/paradox/general/guardians.png
diff --git a/akka-docs/src/main/paradox/general/index.md b/docs/src/main/paradox/general/index.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/index.md
rename to docs/src/main/paradox/general/index.md
diff --git a/akka-docs/src/main/paradox/general/jmm.md b/docs/src/main/paradox/general/jmm.md
similarity index 93%
rename from akka-docs/src/main/paradox/general/jmm.md
rename to docs/src/main/paradox/general/jmm.md
index ae61fe5a5b..ff7334660f 100644
--- a/akka-docs/src/main/paradox/general/jmm.md
+++ b/docs/src/main/paradox/general/jmm.md
@@ -71,10 +71,10 @@ Since Akka runs on the JVM there are still some rules to be followed.
Most importantly, you must not close over internal Actor state and exposing it to other threads:
Scala
-: @@snip [SharedMutableStateDocSpec.scala](/akka-docs/src/test/scala/docs/actor/typed/SharedMutableStateDocSpec.scala) { #mutable-state }
+: @@snip [SharedMutableStateDocSpec.scala](/docs/src/test/scala/docs/actor/typed/SharedMutableStateDocSpec.scala) { #mutable-state }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/actor/typed/SharedMutableStateDocTest.java) { #mutable-state }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/actor/typed/SharedMutableStateDocTest.java) { #mutable-state }
* Messages **should** be immutable, this is to avoid the shared mutable state trap.
diff --git a/akka-docs/src/main/paradox/general/message-delivery-reliability.md b/docs/src/main/paradox/general/message-delivery-reliability.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/message-delivery-reliability.md
rename to docs/src/main/paradox/general/message-delivery-reliability.md
diff --git a/akka-docs/src/main/paradox/general/remoting.md b/docs/src/main/paradox/general/remoting.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/remoting.md
rename to docs/src/main/paradox/general/remoting.md
diff --git a/akka-docs/src/main/paradox/general/stream/stream-configuration.md b/docs/src/main/paradox/general/stream/stream-configuration.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/stream/stream-configuration.md
rename to docs/src/main/paradox/general/stream/stream-configuration.md
diff --git a/akka-docs/src/main/paradox/general/stream/stream-design.md b/docs/src/main/paradox/general/stream/stream-design.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/stream/stream-design.md
rename to docs/src/main/paradox/general/stream/stream-design.md
diff --git a/akka-docs/src/main/paradox/general/supervision.md b/docs/src/main/paradox/general/supervision.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/supervision.md
rename to docs/src/main/paradox/general/supervision.md
diff --git a/akka-docs/src/main/paradox/general/terminology.md b/docs/src/main/paradox/general/terminology.md
similarity index 100%
rename from akka-docs/src/main/paradox/general/terminology.md
rename to docs/src/main/paradox/general/terminology.md
diff --git a/akka-docs/src/main/paradox/images/actor-paths-overview.png b/docs/src/main/paradox/images/actor-paths-overview.png
similarity index 100%
rename from akka-docs/src/main/paradox/images/actor-paths-overview.png
rename to docs/src/main/paradox/images/actor-paths-overview.png
diff --git a/akka-docs/src/main/paradox/images/actor_lifecycle.png b/docs/src/main/paradox/images/actor_lifecycle.png
similarity index 100%
rename from akka-docs/src/main/paradox/images/actor_lifecycle.png
rename to docs/src/main/paradox/images/actor_lifecycle.png
diff --git a/akka-docs/src/main/paradox/images/actor_lifecycle.svg b/docs/src/main/paradox/images/actor_lifecycle.svg
similarity index 99%
rename from akka-docs/src/main/paradox/images/actor_lifecycle.svg
rename to docs/src/main/paradox/images/actor_lifecycle.svg
index ef4f6871f3..df5b3406c3 100644
--- a/akka-docs/src/main/paradox/images/actor_lifecycle.svg
+++ b/docs/src/main/paradox/images/actor_lifecycle.svg
@@ -15,7 +15,7 @@
version="1.1"
inkscape:version="0.48.2 r9819"
sodipodi:docname="actor_lifecycle.svg"
- inkscape:export-filename="D:\workspace\akka\akka-docs\rst\images\actor_lifecycle.png"
+ inkscape:export-filename="D:\workspace\akka\docs\rst\images\actor_lifecycle.png"
inkscape:export-xdpi="136.88808"
inkscape:export-ydpi="136.88808">
onDownstreamFinish()
### Rename fields
@@ -282,7 +282,7 @@ add the overhead of having to maintain the schema. When using serializers like t
This is how such a rename would look in protobuf:
-@@snip [PersistenceSchemaEvolutionDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #protobuf-rename-proto }
+@@snip [PersistenceSchemaEvolutionDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #protobuf-rename-proto }
It is important to learn about the strengths and limitations of your serializers, in order to be able to move
swiftly and refactor your models fearlessly as you go on with the project.
@@ -311,10 +311,10 @@ which is using this kind of versioning approach.
The following snippet showcases how one could apply renames if working with plain JSON (using @scala[`spray.json.JsObject`]@java[a `JsObject` as an example JSON representation]):
Scala
-: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #rename-plain-json }
+: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #rename-plain-json }
Java
-: @@snip [PersistenceSchemaEvolutionDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #rename-plain-json }
+: @@snip [PersistenceSchemaEvolutionDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #rename-plain-json }
As you can see, manually handling renames induces some boilerplate onto the EventAdapter, however much of it
you will find is common infrastructure code that can be either provided by an external library (for promotion management)
@@ -380,19 +380,19 @@ Other events (**E**) can just be passed through.
The serializer detects that the string manifest points to a removed event type and skips attempting to deserialize it:
Scala
-: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #string-serializer-skip-deleved-event-by-manifest }
+: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #string-serializer-skip-deleved-event-by-manifest }
Java
-: @@snip [PersistenceSchemaEvolutionDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #string-serializer-skip-deleved-event-by-manifest }
+: @@snip [PersistenceSchemaEvolutionDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #string-serializer-skip-deleved-event-by-manifest }
The EventAdapter we implemented is aware of `EventDeserializationSkipped` events (our "Tombstones"),
and emits and empty `EventSeq` whenever such object is encountered:
Scala
-: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #string-serializer-skip-deleved-event-by-manifest-adapter }
+: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #string-serializer-skip-deleved-event-by-manifest-adapter }
Java
-: @@snip [PersistenceSchemaEvolutionDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #string-serializer-skip-deleved-event-by-manifest-adapter }
+: @@snip [PersistenceSchemaEvolutionDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #string-serializer-skip-deleved-event-by-manifest-adapter }
### Detach domain model from data model
@@ -422,20 +422,20 @@ include additional data for the event (e.g. tags), for ease of later querying.
We will use the following domain and data models to showcase how the separation can be implemented by the adapter:
Scala
-: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #detach-models }
+: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #detach-models }
Java
-: @@snip [PersistenceSchemaEvolutionDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #detach-models }
+: @@snip [PersistenceSchemaEvolutionDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #detach-models }
The @apidoc[journal.EventAdapter] takes care of converting from one model to the other one (in both directions),
allowing the models to be completely detached from each other, such that they can be optimised independently
as long as the mapping logic is able to convert between them:
Scala
-: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #detach-models-adapter }
+: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #detach-models-adapter }
Java
-: @@snip [PersistenceSchemaEvolutionDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #detach-models-adapter }
+: @@snip [PersistenceSchemaEvolutionDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #detach-models-adapter }
The same technique could also be used directly in the Serializer if the end result of marshalling is bytes.
Then the serializer can simply convert the bytes do the domain object by using the generated protobuf builders.
@@ -458,10 +458,10 @@ The journal plugin notices that the incoming event type is JSON (for example by
event) and stores the incoming object directly.
Scala
-: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #detach-models-adapter-json }
+: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #detach-models-adapter-json }
Java
-: @@snip [PersistenceSchemaEvolutionDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #detach-models-adapter-json }
+: @@snip [PersistenceSchemaEvolutionDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #detach-models-adapter-json }
@@@ note
@@ -517,10 +517,10 @@ and the address change is handled similarly:
Scala
-: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #split-events-during-recovery }
+: @@snip [PersistenceSchemaEvolutionDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala) { #split-events-during-recovery }
Java
-: @@snip [PersistenceSchemaEvolutionDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #split-events-during-recovery }
+: @@snip [PersistenceSchemaEvolutionDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java) { #split-events-during-recovery }
By returning an `EventSeq` from the event adapter, the recovered event can be converted to multiple events before
being delivered to the persistent actor.
diff --git a/akka-docs/src/main/paradox/persistence.md b/docs/src/main/paradox/persistence.md
similarity index 86%
rename from akka-docs/src/main/paradox/persistence.md
rename to docs/src/main/paradox/persistence.md
index a1bc553610..f0c4933289 100644
--- a/akka-docs/src/main/paradox/persistence.md
+++ b/docs/src/main/paradox/persistence.md
@@ -59,10 +59,10 @@ Akka persistence supports Event Sourcing with the @scala[@scaladoc[PersistentAct
is defined by implementing @scala[@scaladoc[receiveRecover](pekko.persistence.PersistentActor#receiveRecover:Eventsourced.this.Receive)]@java[@javadoc[createReceiveRecover](pekko.persistence.AbstractPersistentActorLike#createReceiveRecover())] and @scala[@scaladoc[receiveCommand](pekko.persistence.PersistentActor#receiveCommand:Eventsourced.this.Receive)]@java[@javadoc[createReceive](pekko.persistence.AbstractPersistentActorLike#createReceive())]. This is demonstrated in the following example.
Scala
-: @@snip [PersistentActorExample.scala](/akka-docs/src/test/scala/docs/persistence/PersistentActorExample.scala) { #persistent-actor-example }
+: @@snip [PersistentActorExample.scala](/docs/src/test/scala/docs/persistence/PersistentActorExample.scala) { #persistent-actor-example }
Java
-: @@snip [PersistentActorExample.java](/akka-docs/src/test/java/jdocs/persistence/PersistentActorExample.java) { #persistent-actor-example }
+: @@snip [PersistentActorExample.java](/docs/src/test/java/jdocs/persistence/PersistentActorExample.java) { #persistent-actor-example }
The example defines two data types, `Cmd` and `Evt` to represent commands and events, respectively. The
`state` of the `ExamplePersistentActor` is a list of persisted event data contained in `ExampleState`.
@@ -109,10 +109,10 @@ A persistent actor must have an identifier that doesn't change across different
The identifier must be defined with the `persistenceId` method.
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #persistence-id-override }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #persistence-id-override }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #persistence-id-override }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #persistence-id-override }
@@@ note
@@ -156,10 +156,10 @@ This can be useful if snapshot serialization format has changed in an incompatib
It should typically not be used when events have been deleted.
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #recovery-no-snap }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #recovery-no-snap }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #recovery-no-snap }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #recovery-no-snap }
Another possible recovery customization, which can be useful for debugging, is setting an
upper bound on the replay, causing the actor to be replayed only up to a certain point "in the past" (instead of being replayed to its most up to date state). Note that after that it is a bad idea to persist new
@@ -167,28 +167,28 @@ events because a later recovery will probably be confused by the new events that
events that were previously skipped.
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #recovery-custom }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #recovery-custom }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #recovery-custom }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #recovery-custom }
Recovery can be disabled by returning `Recovery.none()` in the `recovery` method of a `PersistentActor`:
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #recovery-disabled }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #recovery-disabled }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #recovery-disabled }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #recovery-disabled }
#### Recovery status
A persistent actor can query its own recovery status via the methods
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #recovery-status }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #recovery-status }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #recovery-status }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #recovery-status }
Sometimes there is a need for performing additional initialization when the
recovery has completed before processing any other message sent to the persistent actor.
@@ -196,10 +196,10 @@ The persistent actor will receive a special @apidoc[persistence.RecoveryComplete
and before any other received messages.
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #recovery-completed }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #recovery-completed }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #recovery-completed }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #recovery-completed }
The actor will always receive a `RecoveryCompleted` message, even if there are no events
in the journal and the snapshot store is empty, or if it's a new persistent actor with a previously
@@ -281,10 +281,10 @@ In the below example, the event callbacks may be called "at any time", even afte
The ordering between events is still guaranteed ("evt-b-1" will be sent after "evt-a-2", which will be sent after "evt-a-1" etc.).
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #persist-async }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #persist-async }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #persist-async }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #persist-async }
@@@ note
@@ -313,10 +313,10 @@ Using those methods is very similar to the persist family of methods, yet they d
It will be kept in memory and used when invoking the handler.
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #defer }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #defer }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #defer }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #defer }
Notice that the `sender()` is **safe** to access in the handler callback, and will be pointing to the original sender
of the command for which this `defer` or `deferAsync` handler was called.
@@ -324,18 +324,18 @@ of the command for which this `defer` or `deferAsync` handler was called.
The calling side will get the responses in this (guaranteed) order:
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #defer-caller }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #defer-caller }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #defer-caller }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #defer-caller }
You can also call `defer` or `deferAsync` with `persist`.
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #defer-with-persist }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #defer-with-persist }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #defer-with-persist }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #defer-with-persist }
@@@ warning
@@ -355,18 +355,18 @@ those situations, as well as their implication on the stashing behavior (that `p
example two persist calls are issued, and each of them issues another persist inside its callback:
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #nested-persist-persist }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #nested-persist-persist }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #nested-persist-persist }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #nested-persist-persist }
When sending two commands to this @scala[`PersistentActor`]@java[`AbstractPersistentActor`], the persist handlers will be executed in the following order:
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #nested-persist-persist-caller }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #nested-persist-persist-caller }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #nested-persist-persist-caller }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #nested-persist-persist-caller }
First the "outer layer" of persist calls is issued and their callbacks are applied. After these have successfully completed,
the inner callbacks will be invoked (once the events they are persisting have been confirmed to be persisted by the journal).
@@ -377,18 +377,18 @@ is extended until all nested `persist` callbacks have been handled.
It is also possible to nest `persistAsync` calls, using the same pattern:
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #nested-persistAsync-persistAsync }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #nested-persistAsync-persistAsync }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #nested-persistAsync-persistAsync }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #nested-persistAsync-persistAsync }
In this case no stashing is happening, yet events are still persisted and callbacks are executed in the expected order:
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #nested-persistAsync-persistAsync-caller }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #nested-persistAsync-persistAsync-caller }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #nested-persistAsync-persistAsync-caller }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #nested-persistAsync-persistAsync-caller }
While it is possible to nest mixed `persist` and `persistAsync` with keeping their respective semantics
it is not a recommended practice, as it may lead to overly complex nesting.
@@ -415,10 +415,10 @@ actor and after a back-off timeout start it again. The @apidoc[pattern.BackoffSu
is provided to support such restarts.
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #backoff }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #backoff }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #backoff }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #backoff }
See @ref:[Backoff Supervision strategies](fault-tolerance.md#supervision-strategies) for more details about actor supervision.
@@ -535,24 +535,24 @@ The example below highlights how messages arrive in the Actor's mailbox and how
mechanism when `persist()` is used. Notice the early stop behavior that occurs when `PoisonPill` is used:
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #safe-shutdown }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #safe-shutdown }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #safe-shutdown }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #safe-shutdown }
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #safe-shutdown-example-bad }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #safe-shutdown-example-bad }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #safe-shutdown-example-bad }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #safe-shutdown-example-bad }
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #safe-shutdown-example-good }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #safe-shutdown-example-good }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #safe-shutdown-example-good }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #safe-shutdown-example-good }
### Replay Filter
@@ -566,10 +566,10 @@ Persistent actors can save snapshots of internal state by calling the @apidoc[s
succeeds, the persistent actor receives a @apidoc[persistence.SaveSnapshotSuccess] message, otherwise a @apidoc[persistence.SaveSnapshotFailure] message
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #save-snapshot }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #save-snapshot }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #save-snapshot }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #save-snapshot }
where `metadata` is of type @apidoc[persistence.SnapshotMetadata] and contains:
@@ -581,10 +581,10 @@ During recovery, the persistent actor is offered the latest saved snapshot via a
which it can initialize internal state.
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #snapshot-offer }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #snapshot-offer }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #snapshot-offer }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #snapshot-offer }
The replayed messages that follow the `SnapshotOffer` message, if any, are younger than the offered snapshot.
They finally recover the persistent actor to its current (i.e. latest) state.
@@ -593,10 +593,10 @@ In general, a persistent actor is only offered a snapshot if that persistent act
and at least one of these snapshots matches the @apidoc[persistence.SnapshotSelectionCriteria] that can be specified for recovery.
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #snapshot-criteria }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #snapshot-criteria }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #snapshot-criteria }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #snapshot-criteria }
If not specified, they default to @scala[@scaladoc[SnapshotSelectionCriteria.Latest](pekko.persistence.SnapshotSelectionCriteria$#Latest:org.apache.pekko.persistence.SnapshotSelectionCriteria)]@java[@javadoc[SnapshotSelectionCriteria.latest()](pekko.persistence.SnapshotSelectionCriteria#latest())] which selects the latest (= youngest) snapshot.
To disable snapshot-based recovery, applications should use @scala[@scaladoc[SnapshotSelectionCriteria.None](pekko.persistence.SnapshotSelectionCriteria$#None:org.apache.pekko.persistence.SnapshotSelectionCriteria)]@java[@javadoc[SnapshotSelectionCriteria.none()](pekko.persistence.SnapshotSelectionCriteria#none())]. A recovery where no
@@ -712,10 +712,10 @@ of the message, the destination actor will send the same``deliveryId`` wrapped i
The sender will then use it to call `confirmDelivery` method to complete the delivery routine.
Scala
-: @@snip [PersistenceDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #at-least-once-example }
+: @@snip [PersistenceDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala) { #at-least-once-example }
Java
-: @@snip [LambdaPersistenceDocTest.java](/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #at-least-once-example }
+: @@snip [LambdaPersistenceDocTest.java](/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java) { #at-least-once-example }
The `deliveryId` generated by the persistence module is a strictly monotonically increasing sequence number
without gaps. The same sequence is used for all destinations of the actor, i.e. when sending to multiple
@@ -789,14 +789,14 @@ json instead of serializing the object to its binary representation.
Implementing an EventAdapter is rather straightforward:
Scala
-: @@snip [PersistenceEventAdapterDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceEventAdapterDocSpec.scala) { #identity-event-adapter }
+: @@snip [PersistenceEventAdapterDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceEventAdapterDocSpec.scala) { #identity-event-adapter }
Java
-: @@snip [PersistenceEventAdapterDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceEventAdapterDocTest.java) { #identity-event-adapter }
+: @@snip [PersistenceEventAdapterDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceEventAdapterDocTest.java) { #identity-event-adapter }
Then in order for it to be used on events coming to and from the journal you must bind it using the below configuration syntax:
-@@snip [PersistenceEventAdapterDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceEventAdapterDocSpec.scala) { #event-adapters-config }
+@@snip [PersistenceEventAdapterDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceEventAdapterDocSpec.scala) { #event-adapters-config }
It is possible to bind multiple adapters to one class *for recovery*, in which case the `fromJournal` methods of all
bound adapters will be applied to a given matching event (in order of definition in the configuration). Since each adapter may
@@ -820,7 +820,7 @@ Serialization of snapshots and payloads of `Persistent` messages is configurable
it must add
-@@snip [PersistenceSerializerDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceSerializerDocSpec.scala) { #custom-serializer-config }
+@@snip [PersistenceSerializerDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceSerializerDocSpec.scala) { #custom-serializer-config }
to the application configuration. If not specified, an exception will be throw when trying to persist events or snapshots.
@@ -834,11 +834,11 @@ is recommended. See @ref[Persistence Plugins](persistence-plugins.md) for some j
When running tests with LevelDB default settings in `sbt`, make sure to set `fork := true` in your sbt project. Otherwise, you'll see an @javadoc[UnsatisfiedLinkError](java.lang.UnsatisfiedLinkError). Alternatively, you can switch to a LevelDB Java port by setting
-@@snip [PersistencePluginDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistencePluginDocSpec.scala) { #native-config }
+@@snip [PersistencePluginDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistencePluginDocSpec.scala) { #native-config }
or
-@@snip [PersistencePluginDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistencePluginDocSpec.scala) { #shared-store-native-config }
+@@snip [PersistencePluginDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistencePluginDocSpec.scala) { #shared-store-native-config }
in your Akka configuration. Also note that for the LevelDB Java port, you will need the following dependencies:
@@ -872,29 +872,29 @@ reference documentation of the chosen plugin.
By default, a persistent actor will use the "default" journal and snapshot store plugins
configured in the following sections of the `reference.conf` configuration resource:
-@@snip [PersistenceMultiDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala) { #default-config }
+@@snip [PersistenceMultiDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala) { #default-config }
Note that in this case the actor overrides only the @apidoc[persistenceId](persistence.PersistenceIdentity) {scala="#persistenceId:String" java="#persistenceId()"} method:
Scala
-: @@snip [PersistenceMultiDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala) { #default-plugins }
+: @@snip [PersistenceMultiDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala) { #default-plugins }
Java
-: @@snip [PersistenceMultiDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceMultiDocTest.java) { #default-plugins }
+: @@snip [PersistenceMultiDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceMultiDocTest.java) { #default-plugins }
When the persistent actor overrides the @apidoc[journalPluginId](persistence.PersistenceIdentity) {scala="#journalPluginId:String" java="#journalPluginId()"} and @apidoc[snapshotPluginId](persistence.PersistenceIdentity) {scala="#snapshotPluginId:String" java="#snapshotPluginId()"} methods,
the actor will be serviced by these specific persistence plugins instead of the defaults:
Scala
-: @@snip [PersistenceMultiDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala) { #override-plugins }
+: @@snip [PersistenceMultiDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala) { #override-plugins }
Java
-: @@snip [PersistenceMultiDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceMultiDocTest.java) { #override-plugins }
+: @@snip [PersistenceMultiDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceMultiDocTest.java) { #override-plugins }
Note that `journalPluginId` and `snapshotPluginId` must refer to properly configured `reference.conf`
plugin entries with a standard `class` property as well as settings which are specific for those plugins, i.e.:
-@@snip [PersistenceMultiDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala) { #override-config }
+@@snip [PersistenceMultiDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala) { #override-config }
## Give persistence plugin configurations at runtime
@@ -905,10 +905,10 @@ the actor will use the declared @javadoc[Config](com.typesafe.config.Config) obj
It allows a dynamic configuration of the journal and the snapshot store at runtime:
Scala
-: @@snip [PersistenceMultiDocSpec.scala](/akka-docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala) { #runtime-config }
+: @@snip [PersistenceMultiDocSpec.scala](/docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala) { #runtime-config }
Java
-: @@snip [PersistenceMultiDocTest.java](/akka-docs/src/test/java/jdocs/persistence/PersistenceMultiDocTest.java) { #runtime-config }
+: @@snip [PersistenceMultiDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceMultiDocTest.java) { #runtime-config }
## See also
diff --git a/akka-docs/src/main/paradox/project/downstream-upgrade-strategy.md b/docs/src/main/paradox/project/downstream-upgrade-strategy.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/downstream-upgrade-strategy.md
rename to docs/src/main/paradox/project/downstream-upgrade-strategy.md
diff --git a/akka-docs/src/main/paradox/project/examples.md b/docs/src/main/paradox/project/examples.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/examples.md
rename to docs/src/main/paradox/project/examples.md
diff --git a/akka-docs/src/main/paradox/project/immutable.md b/docs/src/main/paradox/project/immutable.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/immutable.md
rename to docs/src/main/paradox/project/immutable.md
diff --git a/akka-docs/src/main/paradox/project/index.md b/docs/src/main/paradox/project/index.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/index.md
rename to docs/src/main/paradox/project/index.md
diff --git a/docs/src/main/paradox/project/issue-tracking.md b/docs/src/main/paradox/project/issue-tracking.md
new file mode 100644
index 0000000000..d7ecb11ad2
--- /dev/null
+++ b/docs/src/main/paradox/project/issue-tracking.md
@@ -0,0 +1,32 @@
+# Issue Tracking
+
+Apache Pekko is using GitHub Issues as its issue tracking system.
+
+## Browsing
+
+### Tickets
+
+Before filing a ticket, please check the existing [Apache Pekko tickets](https://github.com/apache/incubator-pekko/issues) for earlier reports of the same
+problem. You are very welcome to comment on existing tickets, especially if you
+have reproducible test cases that you can share.
+
+## Creating tickets
+
+*Please include the versions of Scala and Apache Pekko and relevant configuration files.*
+
+You can create a [new ticket](https://github.com/apache/incubator-pekko/issues/new) if you
+have registered a GitHub user account.
+
+Thanks a lot for reporting bugs and suggesting features!
+
+## Submitting Pull Requests
+
+@@@ note
+
+*A pull request is worth a thousand +1's.* -- Old Klangian Proverb
+
+@@@
+
+Pull Requests fixing issues or adding functionality are very welcome.
+Please read [CONTRIBUTING.md](https://github.com/apache/incubator-pekko/blob/main/CONTRIBUTING.md) for
+more information about contributing to Apache Pekko.
diff --git a/akka-docs/src/main/paradox/project/licenses.md b/docs/src/main/paradox/project/licenses.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/licenses.md
rename to docs/src/main/paradox/project/licenses.md
diff --git a/akka-docs/src/main/paradox/project/links.md b/docs/src/main/paradox/project/links.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/links.md
rename to docs/src/main/paradox/project/links.md
diff --git a/akka-docs/src/main/paradox/project/migration-guide-2.4.x-2.5.x.md b/docs/src/main/paradox/project/migration-guide-2.4.x-2.5.x.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/migration-guide-2.4.x-2.5.x.md
rename to docs/src/main/paradox/project/migration-guide-2.4.x-2.5.x.md
diff --git a/akka-docs/src/main/paradox/project/migration-guide-2.5.x-2.6.x.md b/docs/src/main/paradox/project/migration-guide-2.5.x-2.6.x.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/migration-guide-2.5.x-2.6.x.md
rename to docs/src/main/paradox/project/migration-guide-2.5.x-2.6.x.md
diff --git a/akka-docs/src/main/paradox/project/migration-guide-old.md b/docs/src/main/paradox/project/migration-guide-old.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/migration-guide-old.md
rename to docs/src/main/paradox/project/migration-guide-old.md
diff --git a/akka-docs/src/main/paradox/project/migration-guides.md b/docs/src/main/paradox/project/migration-guides.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/migration-guides.md
rename to docs/src/main/paradox/project/migration-guides.md
diff --git a/akka-docs/src/main/paradox/project/rolling-update.md b/docs/src/main/paradox/project/rolling-update.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/rolling-update.md
rename to docs/src/main/paradox/project/rolling-update.md
diff --git a/akka-docs/src/main/paradox/project/scala3.md b/docs/src/main/paradox/project/scala3.md
similarity index 100%
rename from akka-docs/src/main/paradox/project/scala3.md
rename to docs/src/main/paradox/project/scala3.md
diff --git a/akka-docs/src/main/paradox/remoting-artery.md b/docs/src/main/paradox/remoting-artery.md
similarity index 98%
rename from akka-docs/src/main/paradox/remoting-artery.md
rename to docs/src/main/paradox/remoting-artery.md
index bd0628a90f..a12d442fe9 100644
--- a/akka-docs/src/main/paradox/remoting-artery.md
+++ b/docs/src/main/paradox/remoting-artery.md
@@ -588,7 +588,7 @@ Scala
: @@snip [Serializer.scala](/akka-actor/src/main/scala/org/apache/pekko/serialization/Serializer.scala) { #ByteBufferSerializer }
Java
-: @@snip [ByteBufferSerializerDocTest.java](/akka-docs/src/test/java/jdocs/actor/ByteBufferSerializerDocTest.java) { #ByteBufferSerializer-interface }
+: @@snip [ByteBufferSerializerDocTest.java](/docs/src/test/java/jdocs/actor/ByteBufferSerializerDocTest.java) { #ByteBufferSerializer-interface }
Implementing a serializer for Artery is therefore as simple as implementing this interface, and binding the serializer
as usual (which is explained in @ref:[Serialization](serialization.md)).
@@ -600,10 +600,10 @@ The array based methods will be used when `ByteBuffer` is not used, e.g. in Akka
Note that the array based methods can be implemented by delegation like this:
Scala
-: @@snip [ByteBufferSerializerDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ByteBufferSerializerDocSpec.scala) { #bytebufserializer-with-manifest }
+: @@snip [ByteBufferSerializerDocSpec.scala](/docs/src/test/scala/docs/actor/ByteBufferSerializerDocSpec.scala) { #bytebufserializer-with-manifest }
Java
-: @@snip [ByteBufferSerializerDocTest.java](/akka-docs/src/test/java/jdocs/actor/ByteBufferSerializerDocTest.java) { #bytebufserializer-with-manifest }
+: @@snip [ByteBufferSerializerDocTest.java](/docs/src/test/java/jdocs/actor/ByteBufferSerializerDocTest.java) { #bytebufserializer-with-manifest }
## Routers with Remote Destinations
@@ -611,7 +611,7 @@ It is absolutely feasible to combine remoting with @ref:[Routing](routing.md).
A pool of remote deployed routees can be configured as:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-remote-round-robin-pool-artery }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-remote-round-robin-pool-artery }
This configuration setting will clone the actor defined in the `Props` of the `remotePool` 10
times and deploy it evenly distributed across the two given target nodes.
@@ -621,7 +621,7 @@ be @ref:[serialized](serialization.md).
A group of remote actors can be configured as:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-remote-round-robin-group-artery }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-remote-round-robin-group-artery }
This configuration setting will send messages to the defined remote actor paths.
It requires that you create the destination actors on the remote nodes with matching paths.
@@ -838,7 +838,7 @@ There are lots of configuration properties that are related to remoting in Akka.
Setting properties like the listening IP and port number programmatically is
best done by using something like the following:
-@@snip [RemoteDeploymentDocTest.java](/akka-docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #programmatic-artery }
+@@snip [RemoteDeploymentDocTest.java](/docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #programmatic-artery }
@@@
diff --git a/akka-docs/src/main/paradox/remoting.md b/docs/src/main/paradox/remoting.md
similarity index 94%
rename from akka-docs/src/main/paradox/remoting.md
rename to docs/src/main/paradox/remoting.md
index fca481296a..a956e7bcdf 100644
--- a/akka-docs/src/main/paradox/remoting.md
+++ b/docs/src/main/paradox/remoting.md
@@ -205,10 +205,10 @@ which in this sample corresponds to `sampleActorSystem@127.0.0.1:2553`.
Once you have configured the properties above you would do the following in code:
Scala
-: @@snip [RemoteDeploymentDocSpec.scala](/akka-docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala) { #sample-actor }
+: @@snip [RemoteDeploymentDocSpec.scala](/docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala) { #sample-actor }
Java
-: @@snip [RemoteDeploymentDocTest.java](/akka-docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #sample-actor }
+: @@snip [RemoteDeploymentDocTest.java](/docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #sample-actor }
The actor class `SampleActor` has to be available to the runtimes using it, i.e. the classloader of the
actor systems has to have a JAR containing the class.
@@ -253,26 +253,26 @@ precedence.
With these imports:
Scala
-: @@snip [RemoteDeploymentDocSpec.scala](/akka-docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala) { #import }
+: @@snip [RemoteDeploymentDocSpec.scala](/docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala) { #import }
Java
-: @@snip [RemoteDeploymentDocTest.java](/akka-docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #import }
+: @@snip [RemoteDeploymentDocTest.java](/docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #import }
and a remote address like this:
Scala
-: @@snip [RemoteDeploymentDocSpec.scala](/akka-docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala) { #make-address }
+: @@snip [RemoteDeploymentDocSpec.scala](/docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala) { #make-address }
Java
-: @@snip [RemoteDeploymentDocTest.java](/akka-docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #make-address }
+: @@snip [RemoteDeploymentDocTest.java](/docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #make-address }
you can advise the system to create a child on that remote node like so:
Scala
-: @@snip [RemoteDeploymentDocSpec.scala](/akka-docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala) { #deploy }
+: @@snip [RemoteDeploymentDocSpec.scala](/docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala) { #deploy }
Java
-: @@snip [RemoteDeploymentDocTest.java](/akka-docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #deploy }
+: @@snip [RemoteDeploymentDocTest.java](/docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #deploy }
### Remote deployment allow list
@@ -350,7 +350,7 @@ It is absolutely feasible to combine remoting with @ref:[Routing](routing.md).
A pool of remote deployed routees can be configured as:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-remote-round-robin-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-remote-round-robin-pool }
This configuration setting will clone the actor defined in the `Props` of the `remotePool` 10
times and deploy it evenly distributed across the two given target nodes.
@@ -360,7 +360,7 @@ be @ref:[serialized](serialization.md).
A group of remote actors can be configured as:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-remote-round-robin-group }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-remote-round-robin-group }
This configuration setting will send messages to the defined remote actor paths.
It requires that you create the destination actors on the remote nodes with matching paths.
@@ -595,7 +595,7 @@ There are lots of configuration properties that are related to remoting in Akka.
Setting properties like the listening IP and port number programmatically is
best done by using something like the following:
-@@snip [RemoteDeploymentDocTest.java](/akka-docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #programmatic }
+@@snip [RemoteDeploymentDocTest.java](/docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java) { #programmatic }
@@@
diff --git a/akka-docs/src/main/paradox/routing.md b/docs/src/main/paradox/routing.md
similarity index 66%
rename from akka-docs/src/main/paradox/routing.md
rename to docs/src/main/paradox/routing.md
index 2f22d05f8c..7f41221036 100644
--- a/akka-docs/src/main/paradox/routing.md
+++ b/docs/src/main/paradox/routing.md
@@ -32,10 +32,10 @@ also possible to @ref:[create your own](#custom-router).
The following example illustrates how to use a `Router` and manage the routees from within an actor.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #router-in-actor }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #router-in-actor }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #router-in-actor }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #router-in-actor }
We create a `Router` and specify that it should use @apidoc[routing.RoundRobinRoutingLogic] when routing the
messages to the routees.
@@ -103,22 +103,22 @@ few exceptions. These are documented in the @ref:[Specially Handled Messages](#r
The following code and configuration snippets show how to create a @ref:[round-robin](#round-robin-router) router that forwards messages to five `Worker` routees. The
routees will be created as the router's children.
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-round-robin-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-round-robin-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-pool-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-pool-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-pool-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-pool-1 }
Here is the same example, but with the router configuration provided programmatically instead of
from configuration.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-pool-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-pool-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-pool-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-pool-2 }
#### Remote Deployed Routees
@@ -129,10 +129,10 @@ fashion. In order to deploy routees remotely, wrap the router configuration in a
deployment requires the `akka-remote` module to be included in the classpath.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #remoteRoutees }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #remoteRoutees }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #remoteRoutees }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #remoteRoutees }
#### Senders
@@ -140,20 +140,20 @@ By default, when a routee sends a message, it will @ref:[implicitly set itself a
](actors.md#actors-tell-sender).
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #reply-without-sender }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #reply-without-sender }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #reply-with-self }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #reply-with-self }
However, it is often useful for routees to set the *router* as a sender. For example, you might want
to set the router as the sender if you want to hide the details of the routees behind the router.
The following code snippet shows how to set the parent router as sender.
Scala
-: @@snip [ActorDocSpec.scala](/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #reply-with-sender }
+: @@snip [ActorDocSpec.scala](/docs/src/test/scala/docs/actor/ActorDocSpec.scala) { #reply-with-sender }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #reply-with-parent }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #reply-with-parent }
#### Supervision
@@ -185,7 +185,7 @@ Scala
: @@snip [RoutingSpec.scala](/akka-actor-tests/src/test/scala/org/apache/pekko/routing/RoutingSpec.scala) { #supervision }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #supervision }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #supervision }
@@@ note
@@ -206,42 +206,42 @@ to these paths, wildcards can be and will result in the same semantics as explic
The example below shows how to create a router by providing it with the path strings of three
routee actors.
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-round-robin-group }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-round-robin-group }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-group-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-group-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-group-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-group-1 }
Here is the same example, but with the router configuration provided programmatically instead of
from configuration.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #round-robin-group-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #round-robin-group-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #round-robin-group-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #round-robin-group-2 }
The routee actors are created externally from the router:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #create-workers }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #create-workers }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #create-workers }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #create-workers }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #create-worker-actors }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #create-worker-actors }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #create-worker-actors }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #create-worker-actors }
The paths may contain protocol and address information for actors running on remote hosts.
Remoting requires the `akka-remote` module to be included in the classpath.
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-remote-round-robin-group }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-remote-round-robin-group }
## Router usage
@@ -252,10 +252,10 @@ Note that deployment paths in the configuration starts with `/parent/` followed
of the router actor.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #create-parent }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #create-parent }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #create-parent }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #create-parent }
### RoundRobinPool and RoundRobinGroup
@@ -264,39 +264,39 @@ Routes in a [round-robin](https://en.wikipedia.org/wiki/Round-robin) fashion to
RoundRobinPool defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-round-robin-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-round-robin-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-pool-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-pool-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-pool-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-pool-1 }
RoundRobinPool defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-pool-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-pool-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-pool-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-pool-2 }
RoundRobinGroup defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-round-robin-group }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-round-robin-group }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-group-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #round-robin-group-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-group-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #round-robin-group-1 }
RoundRobinGroup defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #round-robin-group-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #round-robin-group-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #round-robin-group-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #round-robin-group-2 }
### RandomPool and RandomGroup
@@ -304,39 +304,39 @@ This router type selects one of its routees randomly for each message.
RandomPool defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-random-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-random-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #random-pool-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #random-pool-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #random-pool-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #random-pool-1 }
RandomPool defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #random-pool-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #random-pool-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #random-pool-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #random-pool-2 }
RandomGroup defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-random-group }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-random-group }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #random-group-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #random-group-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #random-group-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #random-group-1 }
RandomGroup defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #random-group-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #random-group-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #random-group-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #random-group-2 }
### BalancingPool
@@ -368,27 +368,27 @@ as described in @ref:[Specially Handled Messages](#router-special-messages).
BalancingPool defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-balancing-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-balancing-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #balancing-pool-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #balancing-pool-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #balancing-pool-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #balancing-pool-1 }
BalancingPool defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #balancing-pool-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #balancing-pool-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #balancing-pool-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #balancing-pool-2 }
Addition configuration for the balancing dispatcher, which is used by the pool,
can be configured in the `pool-dispatcher` section of the router deployment
configuration.
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-balancing-pool2 }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-balancing-pool2 }
The @apidoc[BalancingPool] automatically uses a special `BalancingDispatcher` for its
routees - disregarding any dispatcher that is set on the routee Props object.
@@ -401,14 +401,14 @@ can be configured as explained in @ref:[Dispatchers](dispatchers.md). In situati
routees are expected to perform blocking operations it may be useful to replace it
with a `thread-pool-executor` hinting the number of allocated threads explicitly:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-balancing-pool3 }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-balancing-pool3 }
It is also possible to change the `mailbox` used by the balancing dispatcher for
scenarios where the default unbounded mailbox is not well suited. An example of such
a scenario could arise whether there exists the need to manage priority for each message.
You can then implement a priority mailbox and configure your dispatcher:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-balancing-pool4 }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-balancing-pool4 }
@@@ note
@@ -434,21 +434,21 @@ since their mailbox size is unknown
SmallestMailboxPool defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-smallest-mailbox-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-smallest-mailbox-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #smallest-mailbox-pool-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #smallest-mailbox-pool-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #smallest-mailbox-pool-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #smallest-mailbox-pool-1 }
SmallestMailboxPool defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #smallest-mailbox-pool-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #smallest-mailbox-pool-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #smallest-mailbox-pool-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #smallest-mailbox-pool-2 }
There is no Group variant of the SmallestMailboxPool because the size of the mailbox
and the internal dispatching state of the actor is not practically available from the paths
@@ -460,41 +460,41 @@ A broadcast router forwards the message it receives to *all* its routees.
BroadcastPool defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-broadcast-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-broadcast-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcast-pool-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcast-pool-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcast-pool-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcast-pool-1 }
BroadcastPool defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcast-pool-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcast-pool-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcast-pool-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcast-pool-2 }
BroadcastGroup defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-broadcast-group }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-broadcast-group }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcast-group-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcast-group-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcast-group-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcast-group-1 }
BroadcastGroup defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #broadcast-group-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #broadcast-group-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #broadcast-group-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #broadcast-group-2 }
@@@ note
@@ -515,41 +515,41 @@ It is expecting at least one reply within a configured duration, otherwise it wi
ScatterGatherFirstCompletedPool defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-scatter-gather-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-scatter-gather-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #scatter-gather-pool-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #scatter-gather-pool-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #scatter-gather-pool-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #scatter-gather-pool-1 }
ScatterGatherFirstCompletedPool defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #scatter-gather-pool-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #scatter-gather-pool-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #scatter-gather-pool-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #scatter-gather-pool-2 }
ScatterGatherFirstCompletedGroup defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-scatter-gather-group }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-scatter-gather-group }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #scatter-gather-group-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #scatter-gather-group-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #scatter-gather-group-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #scatter-gather-group-1 }
ScatterGatherFirstCompletedGroup defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #scatter-gather-group-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #scatter-gather-group-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #scatter-gather-group-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #scatter-gather-group-2 }
### TailChoppingPool and TailChoppingGroup
@@ -565,39 +565,39 @@ This optimisation was described nicely in a blog post by Peter Bailis:
TailChoppingPool defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-tail-chopping-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-tail-chopping-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #tail-chopping-pool-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #tail-chopping-pool-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #tail-chopping-pool-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #tail-chopping-pool-1 }
TailChoppingPool defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #tail-chopping-pool-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #tail-chopping-pool-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #tail-chopping-pool-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #tail-chopping-pool-2 }
TailChoppingGroup defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-tail-chopping-group }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-tail-chopping-group }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #tail-chopping-group-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #tail-chopping-group-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #tail-chopping-group-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #tail-chopping-group-1 }
TailChoppingGroup defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #tail-chopping-group-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #tail-chopping-group-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #tail-chopping-group-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #tail-chopping-group-2 }
### ConsistentHashingPool and ConsistentHashingGroup
@@ -624,17 +624,17 @@ the same time for one router. The @scala[`hashMapping`]@java[`withHashMapper`] i
Code example:
Scala
-: @@snip [ConsistentHashingRouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/ConsistentHashingRouterDocSpec.scala) { #cache-actor }
+: @@snip [ConsistentHashingRouterDocSpec.scala](/docs/src/test/scala/docs/routing/ConsistentHashingRouterDocSpec.scala) { #cache-actor }
Java
-: @@snip [ConsistentHashingRouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/ConsistentHashingRouterDocTest.java) { #cache-actor }
+: @@snip [ConsistentHashingRouterDocTest.java](/docs/src/test/java/jdocs/routing/ConsistentHashingRouterDocTest.java) { #cache-actor }
Scala
-: @@snip [ConsistentHashingRouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/ConsistentHashingRouterDocSpec.scala) { #consistent-hashing-router }
+: @@snip [ConsistentHashingRouterDocSpec.scala](/docs/src/test/scala/docs/routing/ConsistentHashingRouterDocSpec.scala) { #consistent-hashing-router }
Java
-: @@snip [ConsistentHashingRouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/ConsistentHashingRouterDocTest.java) { #consistent-hashing-router }
+: @@snip [ConsistentHashingRouterDocTest.java](/docs/src/test/java/jdocs/routing/ConsistentHashingRouterDocTest.java) { #consistent-hashing-router }
In the above example you see that the `Get` message implements `ConsistentHashable` itself,
while the `Entry` message is wrapped in a `ConsistentHashableEnvelope`. The `Evict`
@@ -642,39 +642,39 @@ message is handled by the `hashMapping` partial function.
ConsistentHashingPool defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-consistent-hashing-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-consistent-hashing-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #consistent-hashing-pool-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #consistent-hashing-pool-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #consistent-hashing-pool-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #consistent-hashing-pool-1 }
ConsistentHashingPool defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #consistent-hashing-pool-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #consistent-hashing-pool-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #consistent-hashing-pool-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #consistent-hashing-pool-2 }
ConsistentHashingGroup defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-consistent-hashing-group }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-consistent-hashing-group }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #consistent-hashing-group-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #consistent-hashing-group-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #consistent-hashing-group-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #consistent-hashing-group-1 }
ConsistentHashingGroup defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #consistent-hashing-group-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #paths #consistent-hashing-group-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #consistent-hashing-group-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #paths #consistent-hashing-group-2 }
`virtual-nodes-factor` is the number of virtual nodes per routee that is used in the
consistent hash node ring to make the distribution more uniform.
@@ -699,10 +699,10 @@ The example below shows how you would use a `Broadcast` message to send a very i
to every routee of a router.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcastDavyJonesWarning }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcastDavyJonesWarning }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcastDavyJonesWarning }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcastDavyJonesWarning }
In this example the router receives the `Broadcast` message, extracts its payload
(`"Watch out for Davy Jones' locker"`), and then sends the payload on to all of the router's
@@ -723,10 +723,10 @@ receives a `PoisonPill` message, that actor will be stopped. See the @ref:[Poiso
documentation for details.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #poisonPill }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #poisonPill }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #poisonPill }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #poisonPill }
For a router, which normally passes on messages to routees, it is important to realise that
`PoisonPill` messages are processed by the router only. `PoisonPill` messages sent to a router
@@ -745,10 +745,10 @@ routee will receive the `PoisonPill` message. Note that this will stop all route
routees aren't children of the router, i.e. even routees programmatically provided to the router.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcastPoisonPill }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcastPoisonPill }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcastPoisonPill }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcastPoisonPill }
With the code shown above, each routee will receive a `PoisonPill` message. Each routee will
continue to process its messages as normal, eventually processing the `PoisonPill`. This will
@@ -769,10 +769,10 @@ supervision directive that is applied to the router. Routees that are not the ro
those that were created externally to the router, will not be affected.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #kill }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #kill }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #kill }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #kill }
As with the @apidoc[actor.PoisonPill] message, there is a distinction between killing a router, which
indirectly kills its children (who happen to be routees), and killing routees directly (some of whom
@@ -780,10 +780,10 @@ may not be children.) To kill routees directly the router should be sent a `Kill
in a @apidoc[routing.Broadcast] message.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcastKill }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #broadcastKill }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcastKill }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #broadcastKill }
### Management Messages
@@ -815,13 +815,13 @@ pressure is lower than certain threshold. Both thresholds are configurable.
Pool with default resizer defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-resize-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-resize-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #resize-pool-1 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #resize-pool-1 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #resize-pool-1 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #resize-pool-1 }
Several more configuration options are available and described in `akka.actor.deployment.default.resizer`
section of the reference @ref:[configuration](general/configuration.md).
@@ -829,10 +829,10 @@ section of the reference @ref:[configuration](general/configuration.md).
Pool with resizer defined in code:
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #resize-pool-2 }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #resize-pool-2 }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #resize-pool-2 }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #resize-pool-2 }
*It is also worth pointing out that if you define the ``router`` in the configuration file then this value
will be used instead of any programmatically sent parameters.*
@@ -865,13 +865,13 @@ The memory usage is O(n) where n is the number of sizes you allow, i.e. upperBou
Pool with `OptimalSizeExploringResizer` defined in configuration:
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-optimal-size-exploring-resize-pool }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-optimal-size-exploring-resize-pool }
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #optimal-size-exploring-resize-pool }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #optimal-size-exploring-resize-pool }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #optimal-size-exploring-resize-pool }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #optimal-size-exploring-resize-pool }
Several more configuration options are available and described in `akka.actor.deployment.default.optimal-size-exploring-resizer`
section of the reference @ref:[configuration](general/configuration.md).
@@ -925,10 +925,10 @@ The router created in this example is replicating each message to a few destinat
Start with the routing logic:
Scala
-: @@snip [CustomRouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #routing-logic }
+: @@snip [CustomRouterDocSpec.scala](/docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #routing-logic }
Java
-: @@snip [CustomRouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/CustomRouterDocTest.java) { #routing-logic }
+: @@snip [CustomRouterDocTest.java](/docs/src/test/java/jdocs/routing/CustomRouterDocTest.java) { #routing-logic }
`select` will be called for each message and in this example pick a few destinations by round-robin,
by reusing the existing @apidoc[routing.RoundRobinRoutingLogic] and wrap the result in a @apidoc[routing.SeveralRoutees]
@@ -939,10 +939,10 @@ The implementation of the routing logic must be thread safe, since it might be u
A unit test of the routing logic:
Scala
-: @@snip [CustomRouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #unit-test-logic }
+: @@snip [CustomRouterDocSpec.scala](/docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #unit-test-logic }
Java
-: @@snip [CustomRouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/CustomRouterDocTest.java) { #unit-test-logic }
+: @@snip [CustomRouterDocTest.java](/docs/src/test/java/jdocs/routing/CustomRouterDocTest.java) { #unit-test-logic }
You could stop here and use the `RedundancyRoutingLogic` with a `org.apache.pekko.routing.Router`
as described in @ref:[A Simple Router](#simple-router).
@@ -953,27 +953,27 @@ Create a class that extends @apidoc[routing.Pool], @apidoc[routing.Group] or @ap
for the routing logic and holds the configuration for the router. Here we make it a `Group`.
Scala
-: @@snip [CustomRouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #group }
+: @@snip [CustomRouterDocSpec.scala](/docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #group }
Java
-: @@snip [RedundancyGroup.java](/akka-docs/src/test/java/jdocs/routing/RedundancyGroup.java) { #group }
+: @@snip [RedundancyGroup.java](/docs/src/test/java/jdocs/routing/RedundancyGroup.java) { #group }
This can be used exactly as the router actors provided by Akka.
Scala
-: @@snip [CustomRouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #usage-1 }
+: @@snip [CustomRouterDocSpec.scala](/docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #usage-1 }
Java
-: @@snip [CustomRouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/CustomRouterDocTest.java) { #usage-1 }
+: @@snip [CustomRouterDocTest.java](/docs/src/test/java/jdocs/routing/CustomRouterDocTest.java) { #usage-1 }
Note that we added a constructor in `RedundancyGroup` that takes a @javadoc[Config](com.typesafe.config.Config) parameter.
That makes it possible to define it in configuration.
Scala
-: @@snip [CustomRouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #config }
+: @@snip [CustomRouterDocSpec.scala](/docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #config }
Java
-: @@snip [CustomRouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #jconfig }
+: @@snip [CustomRouterDocSpec.scala](/docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #jconfig }
Note the fully qualified class name in the `router` property. The router class must extend
`org.apache.pekko.routing.RouterConfig` (`Pool`, `Group` or `CustomRouterConfig`) and have
@@ -981,10 +981,10 @@ constructor with one `com.typesafe.config.Config` parameter.
The deployment section of the configuration is passed to the constructor.
Scala
-: @@snip [CustomRouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #usage-2 }
+: @@snip [CustomRouterDocSpec.scala](/docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala) { #usage-2 }
Java
-: @@snip [CustomRouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/CustomRouterDocTest.java) { #usage-2 }
+: @@snip [CustomRouterDocTest.java](/docs/src/test/java/jdocs/routing/CustomRouterDocTest.java) { #usage-2 }
## Configuring Dispatchers
@@ -994,7 +994,7 @@ The dispatcher for created children of the pool will be taken from
To make it easy to define the dispatcher of the routees of the pool you can
define the dispatcher inline in the deployment section of the config.
-@@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-pool-dispatcher }
+@@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #config-pool-dispatcher }
That is the only thing you need to do enable a dedicated dispatcher for a
pool.
@@ -1016,10 +1016,10 @@ property in their constructor or factory method, custom routers have to
implement the method in a suitable way.
Scala
-: @@snip [RouterDocSpec.scala](/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #dispatchers }
+: @@snip [RouterDocSpec.scala](/docs/src/test/scala/docs/routing/RouterDocSpec.scala) { #dispatchers }
Java
-: @@snip [RouterDocTest.java](/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java) { #dispatchers }
+: @@snip [RouterDocTest.java](/docs/src/test/java/jdocs/routing/RouterDocTest.java) { #dispatchers }
@@@ note
diff --git a/akka-docs/src/main/paradox/scheduler.md b/docs/src/main/paradox/scheduler.md
similarity index 89%
rename from akka-docs/src/main/paradox/scheduler.md
rename to docs/src/main/paradox/scheduler.md
index a6d73e865e..5f26c9e50b 100644
--- a/akka-docs/src/main/paradox/scheduler.md
+++ b/docs/src/main/paradox/scheduler.md
@@ -62,34 +62,34 @@ by the `akka.scheduler.tick-duration` configuration property.
## Some examples
Scala
-: @@snip [SchedulerDocSpec.scala](/akka-docs/src/test/scala/docs/actor/SchedulerDocSpec.scala) { #imports1 }
+: @@snip [SchedulerDocSpec.scala](/docs/src/test/scala/docs/actor/SchedulerDocSpec.scala) { #imports1 }
Java
-: @@snip [SchedulerDocTest.java](/akka-docs/src/test/java/jdocs/actor/SchedulerDocTest.java) { #imports1 }
+: @@snip [SchedulerDocTest.java](/docs/src/test/java/jdocs/actor/SchedulerDocTest.java) { #imports1 }
Schedule to send the "foo"-message to the testActor after 50ms:
Scala
-: @@snip [SchedulerDocSpec.scala](/akka-docs/src/test/scala/docs/actor/SchedulerDocSpec.scala) { #schedule-one-off-message }
+: @@snip [SchedulerDocSpec.scala](/docs/src/test/scala/docs/actor/SchedulerDocSpec.scala) { #schedule-one-off-message }
Java
-: @@snip [SchedulerDocTest.java](/akka-docs/src/test/java/jdocs/actor/SchedulerDocTest.java) { #schedule-one-off-message }
+: @@snip [SchedulerDocTest.java](/docs/src/test/java/jdocs/actor/SchedulerDocTest.java) { #schedule-one-off-message }
Schedule a @scala[function]@java[@javadoc[Runnable](java.lang.Runnable)], that sends the current time to the testActor, to be executed after 50ms:
Scala
-: @@snip [SchedulerDocSpec.scala](/akka-docs/src/test/scala/docs/actor/SchedulerDocSpec.scala) { #schedule-one-off-thunk }
+: @@snip [SchedulerDocSpec.scala](/docs/src/test/scala/docs/actor/SchedulerDocSpec.scala) { #schedule-one-off-thunk }
Java
-: @@snip [SchedulerDocTest.java](/akka-docs/src/test/java/jdocs/actor/SchedulerDocTest.java) { #schedule-one-off-thunk }
+: @@snip [SchedulerDocTest.java](/docs/src/test/java/jdocs/actor/SchedulerDocTest.java) { #schedule-one-off-thunk }
Schedule to send the "Tick"-message to the `tickActor` after 0ms repeating every 50ms:
Scala
-: @@snip [SchedulerDocSpec.scala](/akka-docs/src/test/scala/docs/actor/SchedulerDocSpec.scala) { #schedule-recurring }
+: @@snip [SchedulerDocSpec.scala](/docs/src/test/scala/docs/actor/SchedulerDocSpec.scala) { #schedule-recurring }
Java
-: @@snip [SchedulerDocTest.java](/akka-docs/src/test/java/jdocs/actor/SchedulerDocTest.java) { #schedule-recurring }
+: @@snip [SchedulerDocTest.java](/docs/src/test/java/jdocs/actor/SchedulerDocTest.java) { #schedule-recurring }
@@@ warning
diff --git a/akka-docs/src/main/paradox/security/2017-02-10-java-serialization.md b/docs/src/main/paradox/security/2017-02-10-java-serialization.md
similarity index 100%
rename from akka-docs/src/main/paradox/security/2017-02-10-java-serialization.md
rename to docs/src/main/paradox/security/2017-02-10-java-serialization.md
diff --git a/akka-docs/src/main/paradox/security/2017-08-09-camel.md b/docs/src/main/paradox/security/2017-08-09-camel.md
similarity index 100%
rename from akka-docs/src/main/paradox/security/2017-08-09-camel.md
rename to docs/src/main/paradox/security/2017-08-09-camel.md
diff --git a/akka-docs/src/main/paradox/security/2018-08-29-aes-rng.md b/docs/src/main/paradox/security/2018-08-29-aes-rng.md
similarity index 100%
rename from akka-docs/src/main/paradox/security/2018-08-29-aes-rng.md
rename to docs/src/main/paradox/security/2018-08-29-aes-rng.md
diff --git a/akka-docs/src/main/paradox/security/index.md b/docs/src/main/paradox/security/index.md
similarity index 100%
rename from akka-docs/src/main/paradox/security/index.md
rename to docs/src/main/paradox/security/index.md
diff --git a/akka-docs/src/main/paradox/serialization-classic.md b/docs/src/main/paradox/serialization-classic.md
similarity index 70%
rename from akka-docs/src/main/paradox/serialization-classic.md
rename to docs/src/main/paradox/serialization-classic.md
index 35e0a5e63b..14ec1181ee 100644
--- a/akka-docs/src/main/paradox/serialization-classic.md
+++ b/docs/src/main/paradox/serialization-classic.md
@@ -27,17 +27,17 @@ address which shall be the recipient of the serialized information. Use
`Serialization.serializedActorPath(actorRef)` like this:
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #imports }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #imports }
Java
-: @@snip [SerializationDocTest.java](/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #imports }
+: @@snip [SerializationDocTest.java](/docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #imports }
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #actorref-serializer }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #actorref-serializer }
Java
-: @@snip [SerializationDocTest.java](/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #actorref-serializer }
+: @@snip [SerializationDocTest.java](/docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #actorref-serializer }
This assumes that serialization happens in the context of sending a message
through the remote transport. There are other uses of serialization, though,
@@ -50,10 +50,10 @@ different network host: for that it would need to include the system’s remote
transport address.
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #external-address-default }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #external-address-default }
Java
-: @@snip [SerializationDocTest.java](/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #external-address-default }
+: @@snip [SerializationDocTest.java](/docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #external-address-default }
@@@ note
@@ -74,8 +74,8 @@ There is also a default remote address which is the one used by cluster support
(and typical systems have just this one); you can get it like this:
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #external-address-default }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #external-address-default }
Java
-: @@snip [SerializationDocTest.java](/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #external-address-default }
+: @@snip [SerializationDocTest.java](/docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #external-address-default }
diff --git a/akka-docs/src/main/paradox/serialization-jackson.md b/docs/src/main/paradox/serialization-jackson.md
similarity index 100%
rename from akka-docs/src/main/paradox/serialization-jackson.md
rename to docs/src/main/paradox/serialization-jackson.md
diff --git a/akka-docs/src/main/paradox/serialization.md b/docs/src/main/paradox/serialization.md
similarity index 86%
rename from akka-docs/src/main/paradox/serialization.md
rename to docs/src/main/paradox/serialization.md
index d4b76450d9..e12bc4ea02 100644
--- a/akka-docs/src/main/paradox/serialization.md
+++ b/docs/src/main/paradox/serialization.md
@@ -39,12 +39,12 @@ For Akka to know which `Serializer` to use for what, you need to edit your confi
in the `akka.actor.serializers`-section, you bind names to implementations of the @apidoc[serialization.Serializer](Serializer)
you wish to use, like this:
-@@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #serialize-serializers-config }
+@@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #serialize-serializers-config }
After you've bound names to different implementations of `Serializer` you need to wire which classes
should be serialized using which `Serializer`, this is done in the `akka.actor.serialization-bindings`-section:
-@@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #serialization-bindings-config }
+@@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #serialization-bindings-config }
You only need to specify the name of @scala[a trait]@java[an interface] or abstract base class of the
messages. In case of ambiguity, i.e. the message implements several of the
@@ -73,17 +73,17 @@ If you want to programmatically serialize/deserialize using Akka Serialization,
here are some examples:
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #imports }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #imports }
Java
-: @@snip [SerializationDocTest.java](/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #imports }
+: @@snip [SerializationDocTest.java](/docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #imports }
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #programmatic }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #programmatic }
Java
-: @@snip [SerializationDocTest.java](/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #programmatic }
+: @@snip [SerializationDocTest.java](/docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #programmatic }
The manifest is a type hint so that the same serializer can be used for different classes.
@@ -97,10 +97,10 @@ they can be deserialized with different `serialization-bindings` configuration.
The @apidoc[SerializationExtension$] is a Classic @apidoc[actor.Extension], but it can be used with an @apidoc[actor.typed.ActorSystem](typed.ActorSystem) like this:
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #programmatic-typed }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #programmatic-typed }
Java
-: @@snip [SerializationDocTest.java](/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #programmatic-typed }
+: @@snip [SerializationDocTest.java](/docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #programmatic-typed }
## Customization
@@ -111,17 +111,17 @@ The first code snippet on this page contains a configuration file that reference
A custom `Serializer` has to inherit from @scala[@apidoc[serialization.Serializer](Serializer)]@java[@apidoc[serialization.JSerializer](JSerializer)] and can be defined like the following:
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #imports }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #imports }
Java
-: @@snip [SerializationDocTest.java](/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #imports }
+: @@snip [SerializationDocTest.java](/docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #imports }
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #my-own-serializer }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #my-own-serializer }
Java
-: @@snip [SerializationDocTest.java](/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #my-own-serializer }
+: @@snip [SerializationDocTest.java](/docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #my-own-serializer }
The `identifier` must be unique. The identifier is used when selecting which serializer to use for deserialization.
If you have accidentally configured several serializers with the same identifier that will be detected and prevent
@@ -134,7 +134,7 @@ If you prefer to define the identifier in cofiguration that is supported by the
implements the `def identifier` by reading it from configuration based on the serializer's class name:
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #serialization-identifiers-config }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #serialization-identifiers-config }
@@@
@@ -170,10 +170,10 @@ class name if you used `includeManifest=true`, otherwise it will be the empty st
This is how a `SerializerWithStringManifest` looks like:
Scala
-: @@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #my-own-serializer2 }
+: @@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #my-own-serializer2 }
Java
-: @@snip [SerializationDocTest.java](/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #my-own-serializer2 }
+: @@snip [SerializationDocTest.java](/docs/src/test/java/jdocs/serialization/SerializationDocTest.java) { #my-own-serializer2 }
You must also bind it to a name in your configuration and then list which classes
should be serialized by it.
@@ -282,7 +282,7 @@ It must still be possible to deserialize the events that were stored with the ol
Normally, messages sent between local actors (i.e. same JVM) do not undergo serialization. For testing, sometimes, it may be desirable to force serialization on all messages (both remote and local). If you want to do this in order to verify that your messages are serializable you can enable the following config option:
-@@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #serialize-messages-config }
+@@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #serialize-messages-config }
Certain messages can be excluded from verification by extending the marker @scala[trait]@java[interface]
@apidoc[actor.NoSerializationVerificationNeeded](NoSerializationVerificationNeeded) or define a class name prefix in configuration
@@ -290,7 +290,7 @@ Certain messages can be excluded from verification by extending the marker @scal
If you want to verify that your @apidoc[actor.Props] are serializable you can enable the following config option:
-@@snip [SerializationDocSpec.scala](/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #serialize-creators-config }
+@@snip [SerializationDocSpec.scala](/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala) { #serialize-creators-config }
@@@ warning
diff --git a/akka-docs/src/main/paradox/split-brain-resolver.md b/docs/src/main/paradox/split-brain-resolver.md
similarity index 100%
rename from akka-docs/src/main/paradox/split-brain-resolver.md
rename to docs/src/main/paradox/split-brain-resolver.md
diff --git a/akka-docs/src/main/paradox/stream/actor-interop.md b/docs/src/main/paradox/stream/actor-interop.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/actor-interop.md
rename to docs/src/main/paradox/stream/actor-interop.md
index 29dd9311c3..58cad01db9 100644
--- a/akka-docs/src/main/paradox/stream/actor-interop.md
+++ b/docs/src/main/paradox/stream/actor-interop.md
@@ -41,10 +41,10 @@ the `ask` and the mailbox of the actor will not be filled with more messages tha
`parallelism` of the `ask` operator (similarly to how the `mapAsync` operator works).
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #ask }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #ask }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #ask }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #ask }
Note that the messages received in the actor will be in the same order as
the stream elements, i.e. the `parallelism` does not change the ordering
@@ -59,10 +59,10 @@ reply will complete the @scala[`Future`]@java[`CompletionStage`] of the `ask` a
In case the target actor is stopped, the operator will fail with an `AskStageTargetActorTerminatedException`
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #ask-actor }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #ask-actor }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #ask-actor }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #ask-actor }
The stream can be completed with failure by sending `org.apache.pekko.actor.Status.Failure` as reply from the actor.
@@ -96,18 +96,18 @@ given `onCompleteMessage` will be sent to the destination actor. When the stream
failure a `org.apache.pekko.actor.Status.Failure` message will be sent to the destination actor.
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #actorRefWithBackpressure }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #actorRefWithBackpressure }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #actorRefWithBackpressure }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #actorRefWithBackpressure }
The receiving actor would then need to be implemented similar to the following:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #actorRefWithBackpressure-actor }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #actorRefWithBackpressure-actor }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #actorRefWithBackpressure-actor }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #actorRefWithBackpressure-actor }
Note that replying to the sender of the elements (the "stream") is required as lack of those ack signals would be interpreted
as back-pressure (as intended), and no new elements will be sent into the actor until it acknowledges some elements.
@@ -152,10 +152,10 @@ was dropped. Can also complete with `QueueOfferResult.Failure` - when stream fa
`QueueOfferResult.QueueClosed` when downstream is completed.
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #source-queue }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #source-queue }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #source-queue }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #source-queue }
When used from an actor you typically `pipe` the result of the @scala[`Future`]@java[`CompletionStage`] back to the actor to
continue processing.
@@ -187,10 +187,10 @@ You can watch it to get notified when that happens.
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #source-actorRef }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #source-actorRef }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #source-actorRef }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #source-actorRef }
### ActorSource.actorRef
diff --git a/akka-docs/src/main/paradox/stream/futures-interop.md b/docs/src/main/paradox/stream/futures-interop.md
similarity index 67%
rename from akka-docs/src/main/paradox/stream/futures-interop.md
rename to docs/src/main/paradox/stream/futures-interop.md
index d4ff4c52f5..5e80e69a75 100644
--- a/akka-docs/src/main/paradox/stream/futures-interop.md
+++ b/docs/src/main/paradox/stream/futures-interop.md
@@ -22,43 +22,43 @@ For example, sending emails to the authors of selected tweets using an external
email service:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #email-server-send }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #email-server-send }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #email-server-send }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #email-server-send }
We start with the tweet stream of authors:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #tweet-authors}
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #tweet-authors}
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #tweet-authors }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #tweet-authors }
Assume that we can look up their email address using:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #email-address-lookup }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #email-address-lookup }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #email-address-lookup }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #email-address-lookup }
Transforming the stream of authors to a stream of email addresses by using the `lookupEmail`
service can be done with `mapAsync`:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #email-addresses-mapAsync }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #email-addresses-mapAsync }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #email-addresses-mapAsync }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #email-addresses-mapAsync }
Finally, sending the emails:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #send-emails }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #send-emails }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #send-emails }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #send-emails }
`mapAsync` is applying the given function that is calling out to the external service to
each of the elements as they pass through this processing step. The function returns a @scala[`Future`]@java[`CompletionStage`]
@@ -81,10 +81,10 @@ Note that `mapAsync` preserves the order of the stream elements. In this example
is not important and then we can use the more efficient `mapAsyncUnordered`:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #external-service-mapAsyncUnordered }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #external-service-mapAsyncUnordered }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #external-service-mapAsyncUnordered }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #external-service-mapAsyncUnordered }
In the above example the services conveniently returned a @scala[`Future`]@java[`CompletionStage`] of the result.
If that is not the case you need to wrap the call in a @scala[`Future`]@java[`CompletionStage`]. If the service call
@@ -92,23 +92,23 @@ involves blocking you must also make sure that you run it on a dedicated executi
avoid starvation and disturbance of other tasks in the system.
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #blocking-mapAsync }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #blocking-mapAsync }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #blocking-mapAsync }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #blocking-mapAsync }
The configuration of the `"blocking-dispatcher"` may look something like:
-@@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #blocking-dispatcher-config }
+@@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #blocking-dispatcher-config }
An alternative for blocking calls is to perform them in a `map` operation, still using a
dedicated dispatcher for that operation.
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #blocking-map }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #blocking-map }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #blocking-map }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #blocking-map }
However, that is not exactly the same as `mapAsync`, since the `mapAsync` may run
several calls concurrently, but `map` performs them one at a time.
@@ -117,10 +117,10 @@ For a service that is exposed as an actor, or if an actor is used as a gateway i
external service, you can use `ask`:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #save-tweets }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #save-tweets }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #save-tweets }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #save-tweets }
Note that if the `ask` is not completed within the given timeout the stream is completed with failure.
If that is not desired outcome you can use `recover` on the `ask` @scala[`Future`]@java[`CompletionStage`].
@@ -149,10 +149,10 @@ successive calls as long as there is downstream demand of several elements.
Here is a fictive service that we can use to illustrate these aspects.
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #sometimes-slow-service }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #sometimes-slow-service }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #sometimes-slow-service }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #sometimes-slow-service }
Elements starting with a lower case character are simulated to take longer time
to process.
@@ -160,10 +160,10 @@ to process.
Here is how we can use it with `mapAsync`:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #sometimes-slow-mapAsync }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #sometimes-slow-mapAsync }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #sometimes-slow-mapAsync }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #sometimes-slow-mapAsync }
The output may look like this:
@@ -221,10 +221,10 @@ calls are limited by the buffer size (4) set with an attribute.
Here is how we can use the same service with `mapAsyncUnordered`:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #sometimes-slow-mapAsyncUnordered }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #sometimes-slow-mapAsyncUnordered }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #sometimes-slow-mapAsyncUnordered }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #sometimes-slow-mapAsyncUnordered }
The output may look like this:
diff --git a/akka-docs/src/main/paradox/stream/index.md b/docs/src/main/paradox/stream/index.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/index.md
rename to docs/src/main/paradox/stream/index.md
diff --git a/akka-docs/src/main/paradox/stream/operators/ActorFlow/ask.md b/docs/src/main/paradox/stream/operators/ActorFlow/ask.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/ActorFlow/ask.md
rename to docs/src/main/paradox/stream/operators/ActorFlow/ask.md
diff --git a/akka-docs/src/main/paradox/stream/operators/ActorFlow/askWithContext.md b/docs/src/main/paradox/stream/operators/ActorFlow/askWithContext.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/ActorFlow/askWithContext.md
rename to docs/src/main/paradox/stream/operators/ActorFlow/askWithContext.md
diff --git a/akka-docs/src/main/paradox/stream/operators/ActorFlow/askWithStatus.md b/docs/src/main/paradox/stream/operators/ActorFlow/askWithStatus.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/ActorFlow/askWithStatus.md
rename to docs/src/main/paradox/stream/operators/ActorFlow/askWithStatus.md
diff --git a/akka-docs/src/main/paradox/stream/operators/ActorFlow/askWithStatusAndContext.md b/docs/src/main/paradox/stream/operators/ActorFlow/askWithStatusAndContext.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/ActorFlow/askWithStatusAndContext.md
rename to docs/src/main/paradox/stream/operators/ActorFlow/askWithStatusAndContext.md
diff --git a/akka-docs/src/main/paradox/stream/operators/ActorSink/actorRef.md b/docs/src/main/paradox/stream/operators/ActorSink/actorRef.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/ActorSink/actorRef.md
rename to docs/src/main/paradox/stream/operators/ActorSink/actorRef.md
diff --git a/akka-docs/src/main/paradox/stream/operators/ActorSink/actorRefWithBackpressure.md b/docs/src/main/paradox/stream/operators/ActorSink/actorRefWithBackpressure.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/ActorSink/actorRefWithBackpressure.md
rename to docs/src/main/paradox/stream/operators/ActorSink/actorRefWithBackpressure.md
diff --git a/akka-docs/src/main/paradox/stream/operators/ActorSource/actorRef.md b/docs/src/main/paradox/stream/operators/ActorSource/actorRef.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/ActorSource/actorRef.md
rename to docs/src/main/paradox/stream/operators/ActorSource/actorRef.md
diff --git a/akka-docs/src/main/paradox/stream/operators/ActorSource/actorRefWithBackpressure.md b/docs/src/main/paradox/stream/operators/ActorSource/actorRefWithBackpressure.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/ActorSource/actorRefWithBackpressure.md
rename to docs/src/main/paradox/stream/operators/ActorSource/actorRefWithBackpressure.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Balance.md b/docs/src/main/paradox/stream/operators/Balance.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Balance.md
rename to docs/src/main/paradox/stream/operators/Balance.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Broadcast.md b/docs/src/main/paradox/stream/operators/Broadcast.md
similarity index 62%
rename from akka-docs/src/main/paradox/stream/operators/Broadcast.md
rename to docs/src/main/paradox/stream/operators/Broadcast.md
index ce5d49f9a7..d221fccf90 100644
--- a/akka-docs/src/main/paradox/stream/operators/Broadcast.md
+++ b/docs/src/main/paradox/stream/operators/Broadcast.md
@@ -17,18 +17,18 @@ Emit each incoming element each of `n` outputs.
Here is an example that is using `Broadcast` to aggregate different values from a `Source` of integers.
Scala
-: @@snip [BroadcastDocExample.scala](/akka-docs/src/test/scala/docs/stream/operators/BroadcastDocExample.scala) { #broadcast }
+: @@snip [BroadcastDocExample.scala](/docs/src/test/scala/docs/stream/operators/BroadcastDocExample.scala) { #broadcast }
Java
-: @@snip [BroadcastDocExample.java](/akka-docs/src/test/java/jdocs/stream/operators/BroadcastDocExample.java) { #import #broadcast }
+: @@snip [BroadcastDocExample.java](/docs/src/test/java/jdocs/stream/operators/BroadcastDocExample.java) { #import #broadcast }
Note that asynchronous boundary for the output streams must be added explicitly if it's desired to run them in parallel.
Scala
-: @@snip [BroadcastDocExample.scala](/akka-docs/src/test/scala/docs/stream/operators/BroadcastDocExample.scala) { #broadcast-async }
+: @@snip [BroadcastDocExample.scala](/docs/src/test/scala/docs/stream/operators/BroadcastDocExample.scala) { #broadcast-async }
Java
-: @@snip [BroadcastDocExample.java](/akka-docs/src/test/java/jdocs/stream/operators/BroadcastDocExample.java) { #broadcast-async }
+: @@snip [BroadcastDocExample.java](/docs/src/test/java/jdocs/stream/operators/BroadcastDocExample.java) { #broadcast-async }
diff --git a/akka-docs/src/main/paradox/stream/operators/Compression/deflate.md b/docs/src/main/paradox/stream/operators/Compression/deflate.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Compression/deflate.md
rename to docs/src/main/paradox/stream/operators/Compression/deflate.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Compression/gunzip.md b/docs/src/main/paradox/stream/operators/Compression/gunzip.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Compression/gunzip.md
rename to docs/src/main/paradox/stream/operators/Compression/gunzip.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Compression/gzip.md b/docs/src/main/paradox/stream/operators/Compression/gzip.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Compression/gzip.md
rename to docs/src/main/paradox/stream/operators/Compression/gzip.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Compression/inflate.md b/docs/src/main/paradox/stream/operators/Compression/inflate.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Compression/inflate.md
rename to docs/src/main/paradox/stream/operators/Compression/inflate.md
diff --git a/akka-docs/src/main/paradox/stream/operators/FileIO/fromFile.md b/docs/src/main/paradox/stream/operators/FileIO/fromFile.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/FileIO/fromFile.md
rename to docs/src/main/paradox/stream/operators/FileIO/fromFile.md
diff --git a/akka-docs/src/main/paradox/stream/operators/FileIO/fromPath.md b/docs/src/main/paradox/stream/operators/FileIO/fromPath.md
similarity index 75%
rename from akka-docs/src/main/paradox/stream/operators/FileIO/fromPath.md
rename to docs/src/main/paradox/stream/operators/FileIO/fromPath.md
index eefbff3ab9..230fe5e1fc 100644
--- a/akka-docs/src/main/paradox/stream/operators/FileIO/fromPath.md
+++ b/docs/src/main/paradox/stream/operators/FileIO/fromPath.md
@@ -17,8 +17,8 @@ a `IOResult` upon reaching the end of the file or if there is a failure.
## Example
Scala
-: @@snip [StreamFileDocSpec.scala](/akka-docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala) { #file-source }
+: @@snip [StreamFileDocSpec.scala](/docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala) { #file-source }
Java
-: @@snip [StreamFileDocTest.java](/akka-docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java) { #file-source }
+: @@snip [StreamFileDocTest.java](/docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java) { #file-source }
diff --git a/akka-docs/src/main/paradox/stream/operators/FileIO/toFile.md b/docs/src/main/paradox/stream/operators/FileIO/toFile.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/FileIO/toFile.md
rename to docs/src/main/paradox/stream/operators/FileIO/toFile.md
diff --git a/akka-docs/src/main/paradox/stream/operators/FileIO/toPath.md b/docs/src/main/paradox/stream/operators/FileIO/toPath.md
similarity index 79%
rename from akka-docs/src/main/paradox/stream/operators/FileIO/toPath.md
rename to docs/src/main/paradox/stream/operators/FileIO/toPath.md
index 092b5d6612..f175973e13 100644
--- a/akka-docs/src/main/paradox/stream/operators/FileIO/toPath.md
+++ b/docs/src/main/paradox/stream/operators/FileIO/toPath.md
@@ -17,7 +17,7 @@ Materializes a @scala[`Future`] @java[`CompletionStage`] of `IOResult` that will
## Example
Scala
-: @@snip [StreamFileDocSpec.scala](/akka-docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala) { #file-sink }
+: @@snip [StreamFileDocSpec.scala](/docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala) { #file-sink }
Java
-: @@snip [StreamFileDocTest.java](/akka-docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java) { #file-sink }
+: @@snip [StreamFileDocTest.java](/docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java) { #file-sink }
diff --git a/akka-docs/src/main/paradox/stream/operators/Flow/asFlowWithContext.md b/docs/src/main/paradox/stream/operators/Flow/asFlowWithContext.md
similarity index 89%
rename from akka-docs/src/main/paradox/stream/operators/Flow/asFlowWithContext.md
rename to docs/src/main/paradox/stream/operators/Flow/asFlowWithContext.md
index d0d55ab045..18c31b7faf 100644
--- a/akka-docs/src/main/paradox/stream/operators/Flow/asFlowWithContext.md
+++ b/docs/src/main/paradox/stream/operators/Flow/asFlowWithContext.md
@@ -26,7 +26,7 @@ See also:
Elements from this flow have a correlation number, but the flow structure should focus on the text message in the elements. The first converter in `asFlowWithContext` applies to the end of the "with context" flow to turn it into a regular flow again. The second converter function chooses the second value in the @scala[tuple]@java[pair] as the context. Another `map` operator makes the first value the stream elements in the `FlowWithContext`.
Scala
-: @@snip [snip](/akka-docs/src/test/scala/docs/stream/operators/WithContextSpec.scala) { #asFlowWithContext }
+: @@snip [snip](/docs/src/test/scala/docs/stream/operators/WithContextSpec.scala) { #asFlowWithContext }
Java
-: @@snip [snip](/akka-docs/src/test/java/jdocs/stream/operators/WithContextTest.java) { #imports #asFlowWithContext }
+: @@snip [snip](/docs/src/test/java/jdocs/stream/operators/WithContextTest.java) { #imports #asFlowWithContext }
diff --git a/akka-docs/src/main/paradox/stream/operators/Flow/completionStageFlow.md b/docs/src/main/paradox/stream/operators/Flow/completionStageFlow.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Flow/completionStageFlow.md
rename to docs/src/main/paradox/stream/operators/Flow/completionStageFlow.md
index 4e67dcfe19..2e273be828 100644
--- a/akka-docs/src/main/paradox/stream/operators/Flow/completionStageFlow.md
+++ b/docs/src/main/paradox/stream/operators/Flow/completionStageFlow.md
@@ -20,7 +20,7 @@ A deferred creation of the stream based on the initial element by combining `com
with `prefixAndTail` like so:
Scala
-: @@snip [FutureFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/FutureFlow.java) { #base-on-first-element }
+: @@snip [FutureFlow.java](/docs/src/test/java/jdocs/stream/operators/flow/FutureFlow.java) { #base-on-first-element }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Flow/flattenOptional.md b/docs/src/main/paradox/stream/operators/Flow/flattenOptional.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Flow/flattenOptional.md
rename to docs/src/main/paradox/stream/operators/Flow/flattenOptional.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Flow/fromSinkAndSource.md b/docs/src/main/paradox/stream/operators/Flow/fromSinkAndSource.md
similarity index 80%
rename from akka-docs/src/main/paradox/stream/operators/Flow/fromSinkAndSource.md
rename to docs/src/main/paradox/stream/operators/Flow/fromSinkAndSource.md
index f48f33dc41..b09d08b066 100644
--- a/akka-docs/src/main/paradox/stream/operators/Flow/fromSinkAndSource.md
+++ b/docs/src/main/paradox/stream/operators/Flow/fromSinkAndSource.md
@@ -27,20 +27,20 @@ One use case is constructing a TCP server where requests and responses do not ma
This example `cancel`s the incoming stream, not allowing the client to write more messages, switching the TCP connection to "half-closed", but keeps streaming periodic output to the client:
Scala
-: @@snip [FromSinkAndSource.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/FromSinkAndSource.scala) { #halfClosedTcpServer }
+: @@snip [FromSinkAndSource.scala](/docs/src/test/scala/docs/stream/operators/flow/FromSinkAndSource.scala) { #halfClosedTcpServer }
Java
-: @@snip [FromSinkAndSource.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/FromSinkAndSource.java) { #halfClosedTcpServer }
+: @@snip [FromSinkAndSource.java](/docs/src/test/java/jdocs/stream/operators/flow/FromSinkAndSource.java) { #halfClosedTcpServer }
With this server running you could use `telnet 127.0.0.1 9999` to see a stream of timestamps being printed, one every second.
The following sample is a little bit more advanced and uses the @apidoc[MergeHub$] to dynamically merge incoming messages to a single stream which is then fed into a @apidoc[BroadcastHub$] which emits elements over a dynamic set of downstreams allowing us to create a simplistic little TCP chat server in which a text entered from one client is emitted to all connected clients.
Scala
-: @@snip [FromSinkAndSource.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/FromSinkAndSource.scala) { #chat }
+: @@snip [FromSinkAndSource.scala](/docs/src/test/scala/docs/stream/operators/flow/FromSinkAndSource.scala) { #chat }
Java
-: @@snip [FromSinkAndSource.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/FromSinkAndSource.java) { #chat }
+: @@snip [FromSinkAndSource.java](/docs/src/test/java/jdocs/stream/operators/flow/FromSinkAndSource.java) { #chat }
The same patterns can also be applied to @extref:[Akka HTTP WebSockets](akka.http:/server-side/websocket-support.html#server-api) which also have an API accepting a `Flow` of messages.
@@ -50,10 +50,10 @@ If we would replace the `fromSinkAndSource` here with `fromSinkAndSourceCoupled`
`fromSinkAndSource` can also be useful when testing a component that takes a `Flow` allowing for complete separate control and assertion of incoming and outgoing elements using stream testkit test probes for sink and source:
Scala
-: @@snip [FromSinkAndSource.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/FromSinkAndSource.scala) { #testing }
+: @@snip [FromSinkAndSource.scala](/docs/src/test/scala/docs/stream/operators/flow/FromSinkAndSource.scala) { #testing }
Java
-: @@snip [FromSinkAndSource.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/FromSinkAndSource.java) { #testing }
+: @@snip [FromSinkAndSource.java](/docs/src/test/java/jdocs/stream/operators/flow/FromSinkAndSource.java) { #testing }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Flow/fromSinkAndSourceCoupled.md b/docs/src/main/paradox/stream/operators/Flow/fromSinkAndSourceCoupled.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Flow/fromSinkAndSourceCoupled.md
rename to docs/src/main/paradox/stream/operators/Flow/fromSinkAndSourceCoupled.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Flow/futureFlow.md b/docs/src/main/paradox/stream/operators/Flow/futureFlow.md
similarity index 92%
rename from akka-docs/src/main/paradox/stream/operators/Flow/futureFlow.md
rename to docs/src/main/paradox/stream/operators/Flow/futureFlow.md
index 788a19745b..0face5e27f 100644
--- a/akka-docs/src/main/paradox/stream/operators/Flow/futureFlow.md
+++ b/docs/src/main/paradox/stream/operators/Flow/futureFlow.md
@@ -20,7 +20,7 @@ A deferred creation of the stream based on the initial element can be achieved b
with `prefixAndTail` like so:
Scala
-: @@snip [FutureFlow.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/FutureFlow.scala) { #base-on-first-element }
+: @@snip [FutureFlow.scala](/docs/src/test/scala/docs/stream/operators/flow/FutureFlow.scala) { #base-on-first-element }
diff --git a/akka-docs/src/main/paradox/stream/operators/Flow/lazyCompletionStageFlow.md b/docs/src/main/paradox/stream/operators/Flow/lazyCompletionStageFlow.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Flow/lazyCompletionStageFlow.md
rename to docs/src/main/paradox/stream/operators/Flow/lazyCompletionStageFlow.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Flow/lazyFlow.md b/docs/src/main/paradox/stream/operators/Flow/lazyFlow.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Flow/lazyFlow.md
rename to docs/src/main/paradox/stream/operators/Flow/lazyFlow.md
index 369db70721..80d94d9725 100644
--- a/akka-docs/src/main/paradox/stream/operators/Flow/lazyFlow.md
+++ b/docs/src/main/paradox/stream/operators/Flow/lazyFlow.md
@@ -33,20 +33,20 @@ In this sample we produce a short sequence of numbers, mostly to side effect and
order things happen. Note how producing the first value in the `Source` happens before the creation of the flow:
Scala
-: @@snip [Lazy.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/Lazy.scala) { #simple-example }
+: @@snip [Lazy.scala](/docs/src/test/scala/docs/stream/operators/flow/Lazy.scala) { #simple-example }
Java
-: @@snip [Lazy.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/Lazy.java) { #simple-example }
+: @@snip [Lazy.java](/docs/src/test/java/jdocs/stream/operators/flow/Lazy.java) { #simple-example }
Since the factory is called once per stream materialization it can be used to safely construct a mutable object to
use with the actual deferred `Flow`. In this example we fold elements into an `ArrayList` created inside the lazy
flow factory:
Scala
-: @@snip [Lazy.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/Lazy.scala) { #mutable-example }
+: @@snip [Lazy.scala](/docs/src/test/scala/docs/stream/operators/flow/Lazy.scala) { #mutable-example }
Java
-: @@snip [Lazy.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/Lazy.java) { #mutable-example }
+: @@snip [Lazy.java](/docs/src/test/java/jdocs/stream/operators/flow/Lazy.java) { #mutable-example }
If we instead had used `fold` directly with an `ArrayList` we would have shared the same list across
all materialization and what is even worse, unsafely across threads.
diff --git a/akka-docs/src/main/paradox/stream/operators/Flow/lazyFutureFlow.md b/docs/src/main/paradox/stream/operators/Flow/lazyFutureFlow.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Flow/lazyFutureFlow.md
rename to docs/src/main/paradox/stream/operators/Flow/lazyFutureFlow.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Flow/lazyInitAsync.md b/docs/src/main/paradox/stream/operators/Flow/lazyInitAsync.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Flow/lazyInitAsync.md
rename to docs/src/main/paradox/stream/operators/Flow/lazyInitAsync.md
diff --git a/akka-docs/src/main/paradox/stream/operators/MergeSequence.md b/docs/src/main/paradox/stream/operators/MergeSequence.md
similarity index 81%
rename from akka-docs/src/main/paradox/stream/operators/MergeSequence.md
rename to docs/src/main/paradox/stream/operators/MergeSequence.md
index a7f649c224..da718129c8 100644
--- a/akka-docs/src/main/paradox/stream/operators/MergeSequence.md
+++ b/docs/src/main/paradox/stream/operators/MergeSequence.md
@@ -25,10 +25,10 @@ given processing flow, and another stream for elements for which no processing w
back together so that the messages can be acknowledged in order.
Scala
-: @@snip [MergeSequenceDocExample.scala](/akka-docs/src/test/scala/docs/stream/operators/MergeSequenceDocExample.scala) { #merge-sequence }
+: @@snip [MergeSequenceDocExample.scala](/docs/src/test/scala/docs/stream/operators/MergeSequenceDocExample.scala) { #merge-sequence }
Java
-: @@snip [MergeSequenceDocExample.java](/akka-docs/src/test/java/jdocs/stream/operators/MergeSequenceDocExample.java) { #import #merge-sequence }
+: @@snip [MergeSequenceDocExample.java](/docs/src/test/java/jdocs/stream/operators/MergeSequenceDocExample.java) { #import #merge-sequence }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Partition.md b/docs/src/main/paradox/stream/operators/Partition.md
similarity index 77%
rename from akka-docs/src/main/paradox/stream/operators/Partition.md
rename to docs/src/main/paradox/stream/operators/Partition.md
index 34683e2979..938f276ff8 100644
--- a/akka-docs/src/main/paradox/stream/operators/Partition.md
+++ b/docs/src/main/paradox/stream/operators/Partition.md
@@ -19,10 +19,10 @@ Here is an example of using `Partition` to split a `Source` of integers to one `
another `Sink` for the odd numbers.
Scala
-: @@snip [PartitionDocExample.scala](/akka-docs/src/test/scala/docs/stream/operators/PartitionDocExample.scala) { #partition }
+: @@snip [PartitionDocExample.scala](/docs/src/test/scala/docs/stream/operators/PartitionDocExample.scala) { #partition }
Java
-: @@snip [PartitionDocExample.java](/akka-docs/src/test/java/jdocs/stream/operators/PartitionDocExample.java) { #import #partition }
+: @@snip [PartitionDocExample.java](/docs/src/test/java/jdocs/stream/operators/PartitionDocExample.java) { #import #partition }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/PubSub/sink.md b/docs/src/main/paradox/stream/operators/PubSub/sink.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/PubSub/sink.md
rename to docs/src/main/paradox/stream/operators/PubSub/sink.md
diff --git a/akka-docs/src/main/paradox/stream/operators/PubSub/source.md b/docs/src/main/paradox/stream/operators/PubSub/source.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/PubSub/source.md
rename to docs/src/main/paradox/stream/operators/PubSub/source.md
diff --git a/akka-docs/src/main/paradox/stream/operators/RestartFlow/onFailuresWithBackoff.md b/docs/src/main/paradox/stream/operators/RestartFlow/onFailuresWithBackoff.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/RestartFlow/onFailuresWithBackoff.md
rename to docs/src/main/paradox/stream/operators/RestartFlow/onFailuresWithBackoff.md
diff --git a/akka-docs/src/main/paradox/stream/operators/RestartFlow/withBackoff.md b/docs/src/main/paradox/stream/operators/RestartFlow/withBackoff.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/RestartFlow/withBackoff.md
rename to docs/src/main/paradox/stream/operators/RestartFlow/withBackoff.md
diff --git a/akka-docs/src/main/paradox/stream/operators/RestartSink/withBackoff.md b/docs/src/main/paradox/stream/operators/RestartSink/withBackoff.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/RestartSink/withBackoff.md
rename to docs/src/main/paradox/stream/operators/RestartSink/withBackoff.md
diff --git a/akka-docs/src/main/paradox/stream/operators/RestartSource/onFailuresWithBackoff.md b/docs/src/main/paradox/stream/operators/RestartSource/onFailuresWithBackoff.md
similarity index 78%
rename from akka-docs/src/main/paradox/stream/operators/RestartSource/onFailuresWithBackoff.md
rename to docs/src/main/paradox/stream/operators/RestartSource/onFailuresWithBackoff.md
index 7d3aa5b713..22dacd5f80 100644
--- a/akka-docs/src/main/paradox/stream/operators/RestartSource/onFailuresWithBackoff.md
+++ b/docs/src/main/paradox/stream/operators/RestartSource/onFailuresWithBackoff.md
@@ -34,29 +34,29 @@ This shows that a Source is not restarted if it completes, only if it fails. Tic
three times as the `take(3)` means the inner source completes successfully after emitting the first 3 elements.
Scala
-: @@snip [Restart.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Restart.scala) { #restart-failure-inner-complete }
+: @@snip [Restart.scala](/docs/src/test/scala/docs/stream/operators/source/Restart.scala) { #restart-failure-inner-complete }
Java
-: @@snip [Restart.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Restart.java) { #restart-failure-inner-complete }
+: @@snip [Restart.java](/docs/src/test/java/jdocs/stream/operators/source/Restart.java) { #restart-failure-inner-complete }
If the inner source instead fails, it will be restarted with an increasing backoff. The source emits 1, 2, 3, and then throws an exception.
The first time the exception is thrown the source is restarted after 1s, then 2s etc, until the `maxBackoff` of 10s.
Scala
-: @@snip [Restart.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Restart.scala) { #restart-failure-inner-failure }
+: @@snip [Restart.scala](/docs/src/test/scala/docs/stream/operators/source/Restart.scala) { #restart-failure-inner-failure }
Java
-: @@snip [Restart.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Restart.java) { #restart-failure-inner-failure }
+: @@snip [Restart.java](/docs/src/test/java/jdocs/stream/operators/source/Restart.java) { #restart-failure-inner-failure }
Finally, to be able to stop the restarting, a kill switch can be used. The kill switch is inserted right after the restart
source. The inner source is the same as above so emits 3 elements and then fails. A killswitch is used to be able to stop the source
being restarted:
Scala
-: @@snip [Restart.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Restart.scala) { #restart-failure-inner-complete-kill-switch }
+: @@snip [Restart.scala](/docs/src/test/scala/docs/stream/operators/source/Restart.scala) { #restart-failure-inner-complete-kill-switch }
Java
-: @@snip [Restart.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Restart.java) { #restart-failure-inner-complete-kill-switch }
+: @@snip [Restart.java](/docs/src/test/java/jdocs/stream/operators/source/Restart.java) { #restart-failure-inner-complete-kill-switch }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/RestartSource/withBackoff.md b/docs/src/main/paradox/stream/operators/RestartSource/withBackoff.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/RestartSource/withBackoff.md
rename to docs/src/main/paradox/stream/operators/RestartSource/withBackoff.md
diff --git a/akka-docs/src/main/paradox/stream/operators/RetryFlow/withBackoff.md b/docs/src/main/paradox/stream/operators/RetryFlow/withBackoff.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/RetryFlow/withBackoff.md
rename to docs/src/main/paradox/stream/operators/RetryFlow/withBackoff.md
diff --git a/akka-docs/src/main/paradox/stream/operators/RetryFlow/withBackoffAndContext.md b/docs/src/main/paradox/stream/operators/RetryFlow/withBackoffAndContext.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/RetryFlow/withBackoffAndContext.md
rename to docs/src/main/paradox/stream/operators/RetryFlow/withBackoffAndContext.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/actorRef.md b/docs/src/main/paradox/stream/operators/Sink/actorRef.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/actorRef.md
rename to docs/src/main/paradox/stream/operators/Sink/actorRef.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/actorRefWithBackpressure.md b/docs/src/main/paradox/stream/operators/Sink/actorRefWithBackpressure.md
similarity index 75%
rename from akka-docs/src/main/paradox/stream/operators/Sink/actorRefWithBackpressure.md
rename to docs/src/main/paradox/stream/operators/Sink/actorRefWithBackpressure.md
index 32e6835a05..70fdd2704a 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/actorRefWithBackpressure.md
+++ b/docs/src/main/paradox/stream/operators/Sink/actorRefWithBackpressure.md
@@ -26,18 +26,18 @@ See also:
Actor to be interacted with:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #actorRefWithBackpressure-actor }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #actorRefWithBackpressure-actor }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #actorRefWithBackpressure-actor }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #actorRefWithBackpressure-actor }
Using the `actorRefWithBackpressure` operator with the above actor:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #actorRefWithBackpressure }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #actorRefWithBackpressure }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #actorRefWithBackpressure }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #actorRefWithBackpressure }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/asPublisher.md b/docs/src/main/paradox/stream/operators/Sink/asPublisher.md
similarity index 89%
rename from akka-docs/src/main/paradox/stream/operators/Sink/asPublisher.md
rename to docs/src/main/paradox/stream/operators/Sink/asPublisher.md
index d065d92173..57769a6155 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/asPublisher.md
+++ b/docs/src/main/paradox/stream/operators/Sink/asPublisher.md
@@ -26,10 +26,10 @@ In the example we are using a source and then creating a Publisher. After that,
but when it is false only the first subscriber will be able to subscribe and others will be rejected.
Scala
-: @@snip [AsPublisher.scala](/akka-docs/src/test/scala/docs/stream/operators/sink/AsPublisher.scala) { #asPublisher }
+: @@snip [AsPublisher.scala](/docs/src/test/scala/docs/stream/operators/sink/AsPublisher.scala) { #asPublisher }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #asPublisher }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #asPublisher }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/cancelled.md b/docs/src/main/paradox/stream/operators/Sink/cancelled.md
similarity index 70%
rename from akka-docs/src/main/paradox/stream/operators/Sink/cancelled.md
rename to docs/src/main/paradox/stream/operators/Sink/cancelled.md
index 57efff920f..38d7085aa6 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/cancelled.md
+++ b/docs/src/main/paradox/stream/operators/Sink/cancelled.md
@@ -18,10 +18,10 @@ Immediately cancel the stream
In this example, we have a source that generates numbers from 1 to 5 but as we have used cancelled we get `NotUsed` as materialized value and stream cancels.
Scala
-: @@snip [Cancelled.scala](/akka-docs/src/test/scala/docs/stream/operators/sink/Cancelled.scala) { #cancelled }
+: @@snip [Cancelled.scala](/docs/src/test/scala/docs/stream/operators/sink/Cancelled.scala) { #cancelled }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #cancelled }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #cancelled }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/collect.md b/docs/src/main/paradox/stream/operators/Sink/collect.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/collect.md
rename to docs/src/main/paradox/stream/operators/Sink/collect.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/collection.md b/docs/src/main/paradox/stream/operators/Sink/collection.md
similarity index 91%
rename from akka-docs/src/main/paradox/stream/operators/Sink/collection.md
rename to docs/src/main/paradox/stream/operators/Sink/collection.md
index 93e28f8788..b1627d148c 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/collection.md
+++ b/docs/src/main/paradox/stream/operators/Sink/collection.md
@@ -19,7 +19,7 @@ Collect values emitted from the stream into an arbitrary collection `That`. The
This example reads the numbers from a source and stores them in the List collection.
Scala
-: @@snip [Collection.scala](/akka-docs/src/test/scala/docs/stream/operators/sink/Collection.scala) { #collection }
+: @@snip [Collection.scala](/docs/src/test/scala/docs/stream/operators/sink/Collection.scala) { #collection }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/combine.md b/docs/src/main/paradox/stream/operators/Sink/combine.md
similarity index 78%
rename from akka-docs/src/main/paradox/stream/operators/Sink/combine.md
rename to docs/src/main/paradox/stream/operators/Sink/combine.md
index 416a10f09d..f0dfe829f0 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/combine.md
+++ b/docs/src/main/paradox/stream/operators/Sink/combine.md
@@ -17,10 +17,10 @@ Combine several sinks into one using a user specified strategy
This example shows how to combine multiple sinks with a Fan-out Junction.
Scala
-: @@snip [StreamPartialGraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) {#sink-combine }
+: @@snip [StreamPartialGraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) {#sink-combine }
Java
-: @@snip [StreamPartialGraphDSLDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #sink-combine }
+: @@snip [StreamPartialGraphDSLDocTest.java](/docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #sink-combine }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/completionStageSink.md b/docs/src/main/paradox/stream/operators/Sink/completionStageSink.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/completionStageSink.md
rename to docs/src/main/paradox/stream/operators/Sink/completionStageSink.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/fold.md b/docs/src/main/paradox/stream/operators/Sink/fold.md
similarity index 85%
rename from akka-docs/src/main/paradox/stream/operators/Sink/fold.md
rename to docs/src/main/paradox/stream/operators/Sink/fold.md
index a0425b95f8..f4040d8c80 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/fold.md
+++ b/docs/src/main/paradox/stream/operators/Sink/fold.md
@@ -23,10 +23,10 @@ between invocations.
This example reads the numbers from a source and do some calculation in the flow part and in the end uses Sink.fold and adds the incoming elements.
Scala
-: @@snip [Fold.scala](/akka-docs/src/test/scala/docs/stream/operators/sink/Fold.scala) { #fold }
+: @@snip [Fold.scala](/docs/src/test/scala/docs/stream/operators/sink/Fold.scala) { #fold }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #fold }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #fold }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/foreach.md b/docs/src/main/paradox/stream/operators/Sink/foreach.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/foreach.md
rename to docs/src/main/paradox/stream/operators/Sink/foreach.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/foreachAsync.md b/docs/src/main/paradox/stream/operators/Sink/foreachAsync.md
similarity index 82%
rename from akka-docs/src/main/paradox/stream/operators/Sink/foreachAsync.md
rename to docs/src/main/paradox/stream/operators/Sink/foreachAsync.md
index b7e82cd49a..8296df92a8 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/foreachAsync.md
+++ b/docs/src/main/paradox/stream/operators/Sink/foreachAsync.md
@@ -24,10 +24,10 @@ See also:
## Example
Scala
-: @@snip [SinkRecipeDocSpec.scala](/akka-docs/src/test/scala/docs/stream/SinkRecipeDocSpec.scala) { #forseachAsync-processing }
+: @@snip [SinkRecipeDocSpec.scala](/docs/src/test/scala/docs/stream/SinkRecipeDocSpec.scala) { #forseachAsync-processing }
Java
-: @@snip [SinkRecipeDocTest.java](/akka-docs/src/test/java/jdocs/stream/SinkRecipeDocTest.java) { #forseachAsync-processing }
+: @@snip [SinkRecipeDocTest.java](/docs/src/test/java/jdocs/stream/SinkRecipeDocTest.java) { #forseachAsync-processing }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/foreachParallel.md b/docs/src/main/paradox/stream/operators/Sink/foreachParallel.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/foreachParallel.md
rename to docs/src/main/paradox/stream/operators/Sink/foreachParallel.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/fromMaterializer.md b/docs/src/main/paradox/stream/operators/Sink/fromMaterializer.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/fromMaterializer.md
rename to docs/src/main/paradox/stream/operators/Sink/fromMaterializer.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/fromSubscriber.md b/docs/src/main/paradox/stream/operators/Sink/fromSubscriber.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/fromSubscriber.md
rename to docs/src/main/paradox/stream/operators/Sink/fromSubscriber.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/futureSink.md b/docs/src/main/paradox/stream/operators/Sink/futureSink.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/futureSink.md
rename to docs/src/main/paradox/stream/operators/Sink/futureSink.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/head.md b/docs/src/main/paradox/stream/operators/Sink/head.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Sink/head.md
rename to docs/src/main/paradox/stream/operators/Sink/head.md
index af728a1899..e037c7ab26 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/head.md
+++ b/docs/src/main/paradox/stream/operators/Sink/head.md
@@ -20,7 +20,7 @@ Scala
: @@snip [HeadSinkSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/HeadSinkSpec.scala) { #head-operator-example }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #head-operator-example }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #head-operator-example }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/headOption.md b/docs/src/main/paradox/stream/operators/Sink/headOption.md
similarity index 82%
rename from akka-docs/src/main/paradox/stream/operators/Sink/headOption.md
rename to docs/src/main/paradox/stream/operators/Sink/headOption.md
index 63f5344214..f0be1572e0 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/headOption.md
+++ b/docs/src/main/paradox/stream/operators/Sink/headOption.md
@@ -19,10 +19,10 @@ or @scala[a `None`] @java[an empty Optional] if the stream completes without any
In this example there is an empty source i.e. it does not emit any element and to handle it we have used headOption operator which will complete with None.
Scala
-: @@snip [HeadOption.scala](/akka-docs/src/test/scala/docs/stream/operators/sink/HeadOption.scala) { #headoption }
+: @@snip [HeadOption.scala](/docs/src/test/scala/docs/stream/operators/sink/HeadOption.scala) { #headoption }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #headoption }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #headoption }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/ignore.md b/docs/src/main/paradox/stream/operators/Sink/ignore.md
similarity index 78%
rename from akka-docs/src/main/paradox/stream/operators/Sink/ignore.md
rename to docs/src/main/paradox/stream/operators/Sink/ignore.md
index 9902a5d207..0eb23c59bb 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/ignore.md
+++ b/docs/src/main/paradox/stream/operators/Sink/ignore.md
@@ -21,10 +21,10 @@ another file. The stream is run with `Sink.ignore` because all processing of the
by the preceding stream operators.
Scala
-: @@snip [Ignore.scala](/akka-docs/src/test/scala/docs/stream/operators/sink/Ignore.scala) { #ignore }
+: @@snip [Ignore.scala](/docs/src/test/scala/docs/stream/operators/sink/Ignore.scala) { #ignore }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #ignore }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #ignore }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/last.md b/docs/src/main/paradox/stream/operators/Sink/last.md
similarity index 86%
rename from akka-docs/src/main/paradox/stream/operators/Sink/last.md
rename to docs/src/main/paradox/stream/operators/Sink/last.md
index f390ef8a35..aa8b1a4597 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/last.md
+++ b/docs/src/main/paradox/stream/operators/Sink/last.md
@@ -20,7 +20,7 @@ Scala
: @@snip [LastSinkSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/LastSinkSpec.scala) { #last-operator-example }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #last-operator-example }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #last-operator-example }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/lastOption.md b/docs/src/main/paradox/stream/operators/Sink/lastOption.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Sink/lastOption.md
rename to docs/src/main/paradox/stream/operators/Sink/lastOption.md
index ce0e73f507..ab0edd18c8 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/lastOption.md
+++ b/docs/src/main/paradox/stream/operators/Sink/lastOption.md
@@ -21,7 +21,7 @@ Scala
: @@snip [LastSinkSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/LastSinkSpec.scala) { #lastOption-operator-example }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #lastOption-operator-example }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #lastOption-operator-example }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/lazyCompletionStageSink.md b/docs/src/main/paradox/stream/operators/Sink/lazyCompletionStageSink.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/lazyCompletionStageSink.md
rename to docs/src/main/paradox/stream/operators/Sink/lazyCompletionStageSink.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/lazyFutureSink.md b/docs/src/main/paradox/stream/operators/Sink/lazyFutureSink.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/lazyFutureSink.md
rename to docs/src/main/paradox/stream/operators/Sink/lazyFutureSink.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/lazyInitAsync.md b/docs/src/main/paradox/stream/operators/Sink/lazyInitAsync.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/lazyInitAsync.md
rename to docs/src/main/paradox/stream/operators/Sink/lazyInitAsync.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/lazySink.md b/docs/src/main/paradox/stream/operators/Sink/lazySink.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Sink/lazySink.md
rename to docs/src/main/paradox/stream/operators/Sink/lazySink.md
index 87c137c4bb..e4b72ccac8 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/lazySink.md
+++ b/docs/src/main/paradox/stream/operators/Sink/lazySink.md
@@ -32,10 +32,10 @@ In this example we side effect from `Flow.map`, the sink factory and `Sink.forea
the nested sink is only created once the element has passed `map`:
Scala
-: @@snip [Lazy.scala](/akka-docs/src/test/scala/docs/stream/operators/sink/Lazy.scala) { #simple-example }
+: @@snip [Lazy.scala](/docs/src/test/scala/docs/stream/operators/sink/Lazy.scala) { #simple-example }
Java
-: @@snip [Lazy.java](/akka-docs/src/test/java/jdocs/stream/operators/sink/Lazy.java) { #simple-example }
+: @@snip [Lazy.java](/docs/src/test/java/jdocs/stream/operators/sink/Lazy.java) { #simple-example }
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/never.md b/docs/src/main/paradox/stream/operators/Sink/never.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/never.md
rename to docs/src/main/paradox/stream/operators/Sink/never.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/onComplete.md b/docs/src/main/paradox/stream/operators/Sink/onComplete.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/onComplete.md
rename to docs/src/main/paradox/stream/operators/Sink/onComplete.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/preMaterialize.md b/docs/src/main/paradox/stream/operators/Sink/preMaterialize.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/preMaterialize.md
rename to docs/src/main/paradox/stream/operators/Sink/preMaterialize.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/queue.md b/docs/src/main/paradox/stream/operators/Sink/queue.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/queue.md
rename to docs/src/main/paradox/stream/operators/Sink/queue.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/reduce.md b/docs/src/main/paradox/stream/operators/Sink/reduce.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Sink/reduce.md
rename to docs/src/main/paradox/stream/operators/Sink/reduce.md
index b04b4f0602..712acbb692 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/reduce.md
+++ b/docs/src/main/paradox/stream/operators/Sink/reduce.md
@@ -22,7 +22,7 @@ Scala
: @@snip [SinkReduceSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/SinkSpec.scala) { #reduce-operator-example }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #reduce-operator-example }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #reduce-operator-example }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/seq.md b/docs/src/main/paradox/stream/operators/Sink/seq.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Sink/seq.md
rename to docs/src/main/paradox/stream/operators/Sink/seq.md
index 5f5a6d3032..54c65e6cfa 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/seq.md
+++ b/docs/src/main/paradox/stream/operators/Sink/seq.md
@@ -23,7 +23,7 @@ Scala
: @@snip [SinkSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/SinkSpec.scala) { #seq-operator-example }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #seq-operator-example }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #seq-operator-example }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/setup.md b/docs/src/main/paradox/stream/operators/Sink/setup.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Sink/setup.md
rename to docs/src/main/paradox/stream/operators/Sink/setup.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Sink/takeLast.md b/docs/src/main/paradox/stream/operators/Sink/takeLast.md
similarity index 89%
rename from akka-docs/src/main/paradox/stream/operators/Sink/takeLast.md
rename to docs/src/main/paradox/stream/operators/Sink/takeLast.md
index 1ef7794722..b972935133 100644
--- a/akka-docs/src/main/paradox/stream/operators/Sink/takeLast.md
+++ b/docs/src/main/paradox/stream/operators/Sink/takeLast.md
@@ -23,7 +23,7 @@ Scala
: @@snip [TakeLastSinkSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/TakeLastSinkSpec.scala) { #takeLast-operator-example }
Java
-: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #takeLast-operator-example }
+: @@snip [SinkDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #takeLast-operator-example }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/aggregateWithBoundary.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/aggregateWithBoundary.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/aggregateWithBoundary.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/aggregateWithBoundary.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/alsoTo.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/alsoTo.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/alsoTo.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/alsoTo.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/alsoToAll.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/alsoToAll.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/alsoToAll.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/alsoToAll.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/ask.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/ask.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/ask.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/ask.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/backpressureTimeout.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/backpressureTimeout.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/backpressureTimeout.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/backpressureTimeout.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/batch.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/batch.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/batch.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/batch.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/batchWeighted.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/batchWeighted.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/batchWeighted.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/batchWeighted.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/buffer.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/buffer.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/buffer.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/buffer.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/collect.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/collect.md
similarity index 74%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/collect.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/collect.md
index d1c05dbb29..1418aa3694 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/collect.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/collect.md
@@ -24,26 +24,26 @@ Given stream element classes `Message`, `Ping`, and `Pong`, where `Ping` extends
unrelated class.
Scala
-: @@snip [Collect.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala) { #collect-elements }
+: @@snip [Collect.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala) { #collect-elements }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #collect-elements }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #collect-elements }
From a stream of `Message` elements we would like to collect all elements of type `Ping` that have an `id != 0`,
and then covert to `Pong` with same id.
Scala
-: @@snip [Collect.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala) { #collect }
+: @@snip [Collect.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala) { #collect }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #collect }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #collect }
@@@div { .group-java }
An alternative is to use `collectType`. The same conversion be written as follows, and it is as efficient.
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #collectType }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #collectType }
@@@
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/collectType.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/collectType.md
similarity index 70%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/collectType.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/collectType.md
index 5773d59398..796b9d2286 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/collectType.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/collectType.md
@@ -20,20 +20,20 @@ Given stream element classes `Message`, `Ping`, and `Pong`, where `Ping` extends
unrelated class.
Scala
-: @@snip [Collect.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala) { #collect-elements }
+: @@snip [Collect.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala) { #collect-elements }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #collect-elements }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #collect-elements }
From a stream of `Message` elements we would like to collect all elements of type `Ping` that have an `id != 0`,
and then covert to `Pong` with same id.
Scala
-: @@snip [Collect.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala) { #collectType }
+: @@snip [Collect.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala) { #collectType }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #collectType }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #collectType }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/completionTimeout.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/completionTimeout.md
similarity index 83%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/completionTimeout.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/completionTimeout.md
index d2033d65a3..a60162184e 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/completionTimeout.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/completionTimeout.md
@@ -20,10 +20,10 @@ with a `TimeoutException`.
This example reads the numbers from a source and do some calculation in the flow with a completion timeout of 10 milliseconds. It will fail the stream, leading to failing the materialized @scala[`Future`] @java[`CompletionStage`] if the stream has not completed mapping the numbers from the source when the timeout hits.
Scala
-: @@snip [CompletionTimeout.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/CompletionTimeout.scala) { #completionTimeout }
+: @@snip [CompletionTimeout.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/CompletionTimeout.scala) { #completionTimeout }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #completionTimeout }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #completionTimeout }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/concat.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/concat.md
similarity index 93%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/concat.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/concat.md
index cd4ca52e6c..b66337c83d 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/concat.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/concat.md
@@ -30,7 +30,7 @@ Scala
: @@snip [FlowConcatSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowConcatSpec.scala) { #concat }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #concat }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #concat }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/concatAllLazy.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/concatAllLazy.md
similarity index 93%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/concatAllLazy.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/concatAllLazy.md
index 6f914c5d03..4155311b5e 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/concatAllLazy.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/concatAllLazy.md
@@ -23,7 +23,7 @@ Scala
: @@snip [FlowConcatSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowConcatAllLazySpec.scala) { #concatAllLazy }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #concatAllLazy }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #concatAllLazy }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/concatLazy.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/concatLazy.md
similarity index 93%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/concatLazy.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/concatLazy.md
index 5a54697c01..735b19ea20 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/concatLazy.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/concatLazy.md
@@ -25,7 +25,7 @@ Scala
: @@snip [FlowConcatSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowConcatSpec.scala) { #concatLazy }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #concatLazy }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #concatLazy }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/conflate.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/conflate.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/conflate.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/conflate.md
index e4eabd389a..cb7e7d8044 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/conflate.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/conflate.md
@@ -19,10 +19,10 @@ average of incoming numbers, if aggregation should lead to a different type `con
## Example
Scala
-: @@snip [SourceOrFlow.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Conflate.scala) { #conflate }
+: @@snip [SourceOrFlow.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Conflate.scala) { #conflate }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #conflate }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #conflate }
If downstream is slower the elements are conflated by summing them. This means that upstream can continue producing elements while downstream is applying backpressure. For example: downstream is backpressuring while 1, 10 and 100 arrives from upstream, then backpressure stops and the conflated 111 is emitted downstream.
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/conflateWithSeed.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/conflateWithSeed.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/conflateWithSeed.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/conflateWithSeed.md
index ea8b121241..f764f3a0c7 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/conflateWithSeed.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/conflateWithSeed.md
@@ -19,10 +19,10 @@ transform it to the summary type.
## Example
Scala
-: @@snip [SourceOrFlow.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Conflate.scala) { #conflateWithSeed }
+: @@snip [SourceOrFlow.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Conflate.scala) { #conflateWithSeed }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #conflateWithSeed-type #conflateWithSeed }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #conflateWithSeed-type #conflateWithSeed }
If downstream is slower, the "seed" function is called which is able to change the type of the to be conflated
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/delay.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/delay.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/delay.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/delay.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/delayWith.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/delayWith.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/delayWith.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/delayWith.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/detach.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/detach.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/detach.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/detach.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/divertTo.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/divertTo.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/divertTo.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/divertTo.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/drop.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/drop.md
similarity index 79%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/drop.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/drop.md
index 440c433750..ce495c8615 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/drop.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/drop.md
@@ -19,10 +19,10 @@ Drop `n` elements and then pass any subsequent element downstream.
Given a `Source` of numbers we can drop the first 3 elements with the `drop` operator:
Scala
-: @@snip [Drop.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Drop.scala) { #drop }
+: @@snip [Drop.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Drop.scala) { #drop }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #drop }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #drop }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/dropWhile.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/dropWhile.md
similarity index 82%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/dropWhile.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/dropWhile.md
index ba0c96745c..0676209775 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/dropWhile.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/dropWhile.md
@@ -20,10 +20,10 @@ Given a `Source` of ordered numbers we can drop all the negative ones with the `
Mind that after the first non negative number is encountered, all the consecutive elements will be emitted despite the predicate provided.
Scala
-: @@snip [Drop.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Drop.scala) { #dropWhile }
+: @@snip [Drop.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Drop.scala) { #dropWhile }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #dropWhile }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #dropWhile }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/dropWithin.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/dropWithin.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/dropWithin.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/dropWithin.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/expand.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/expand.md
similarity index 85%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/expand.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/expand.md
index baac1dcf70..d1ea059226 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/expand.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/expand.md
@@ -26,10 +26,10 @@ our colleague. `expand` provides access to the element flowing through the strea
and let's us create extra frames in case the producer slows down:
Scala
-: @@snip [ExtrapolateAndExpand.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/ExtrapolateAndExpand.scala) { #expand }
+: @@snip [ExtrapolateAndExpand.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/ExtrapolateAndExpand.scala) { #expand }
Java
-: @@snip [ExtrapolateAndExpand.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/ExtrapolateAndExpand.java) { #expand }
+: @@snip [ExtrapolateAndExpand.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/ExtrapolateAndExpand.java) { #expand }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/extrapolate.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/extrapolate.md
similarity index 86%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/extrapolate.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/extrapolate.md
index 72df691f48..97ca17edab 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/extrapolate.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/extrapolate.md
@@ -30,10 +30,10 @@ if we can't decode a frame or two (or more). When a frame is dropped, though, we
frame decoded:
Scala
-: @@snip [ExtrapolateAndExpand.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/ExtrapolateAndExpand.scala) { #extrapolate }
+: @@snip [ExtrapolateAndExpand.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/ExtrapolateAndExpand.scala) { #extrapolate }
Java
-: @@snip [ExtrapolateAndExpand.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/ExtrapolateAndExpand.java) { #extrapolate }
+: @@snip [ExtrapolateAndExpand.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/ExtrapolateAndExpand.java) { #extrapolate }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/filter.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/filter.md
similarity index 84%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/filter.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/filter.md
index 8598aba244..939c9b2f9c 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/filter.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/filter.md
@@ -22,10 +22,10 @@ See also @ref:[`filterNot`](filterNot.md).
For example, given a `Source` of words we can select the longer words with the `filter` operator:
Scala
-: @@snip [Filter.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Filter.scala) { #filter }
+: @@snip [Filter.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Filter.scala) { #filter }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #filter }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #filter }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/filterNot.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/filterNot.md
similarity index 84%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/filterNot.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/filterNot.md
index 4d8da800a2..68e3124809 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/filterNot.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/filterNot.md
@@ -22,10 +22,10 @@ See also @ref:[`filter`](filter.md).
For example, given a `Source` of words we can omit the shorter words with the `filterNot` operator:
Scala
-: @@snip [Filter.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Filter.scala) { #filterNot }
+: @@snip [Filter.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Filter.scala) { #filterNot }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #filterNot }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #filterNot }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapConcat.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapConcat.md
similarity index 84%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapConcat.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapConcat.md
index e647dfc36f..5ba258c2d6 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapConcat.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapConcat.md
@@ -23,10 +23,10 @@ In the following example `flatMapConcat` is used to create a `Source` for each i
a `Source`. All the events for a customer are delivered before moving to the next customer.
Scala
-: @@snip [FlatMapConcat.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapConcat.scala) { #flatmap-concat}
+: @@snip [FlatMapConcat.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapConcat.scala) { #flatmap-concat}
Java
-: @@snip [FlatMapConcat.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapConcat.java) { #flatmap-concat }
+: @@snip [FlatMapConcat.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapConcat.java) { #flatmap-concat }
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapMerge.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapMerge.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapMerge.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapMerge.md
index 44a4c78527..a7fea526fe 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapMerge.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapMerge.md
@@ -26,10 +26,10 @@ events for different customers could interleave in any order but events for the
order emitted by the underlying `Source`;
Scala
-: @@snip [FlatMapMerge.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapMerge.scala) { #flatmap-merge }
+: @@snip [FlatMapMerge.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapMerge.scala) { #flatmap-merge }
Java
-: @@snip [FlatMapMerge.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapMerge.java) { #flatmap-merge }
+: @@snip [FlatMapMerge.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapMerge.java) { #flatmap-merge }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapPrefix.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapPrefix.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapPrefix.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/flatMapPrefix.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/fold.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/fold.md
similarity index 85%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/fold.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/fold.md
index d4729f43c9..0cdb201142 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/fold.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/fold.md
@@ -27,10 +27,10 @@ when running the stream more than once.
`fold` is typically used to 'fold up' the incoming values into an aggregate. For example, you might want to summarize the incoming values into a histogram:
Scala
-: @@snip [Fold.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Fold.scala) { #imports #histogram #fold }
+: @@snip [Fold.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Fold.scala) { #imports #histogram #fold }
Java
-: @@snip [Fold.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #fold }
+: @@snip [Fold.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #fold }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/foldAsync.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/foldAsync.md
similarity index 85%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/foldAsync.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/foldAsync.md
index 7e25884943..d807323364 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/foldAsync.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/foldAsync.md
@@ -27,10 +27,10 @@ when running the stream more than once.
For example, you might want to summarize the incoming values into a histogram:
Scala
-: @@snip [FoldAsync.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/FoldAsync.scala) { #imports #foldAsync }
+: @@snip [FoldAsync.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/FoldAsync.scala) { #imports #foldAsync }
Java
-: @@snip [FoldAsync.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #foldAsync }
+: @@snip [FoldAsync.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #foldAsync }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/fromMaterializer.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/fromMaterializer.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/fromMaterializer.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/fromMaterializer.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/groupBy.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/groupBy.md
similarity index 89%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/groupBy.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/groupBy.md
index 93532e60b0..ccb08c985e 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/groupBy.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/groupBy.md
@@ -31,10 +31,10 @@ memory issues. Elements belonging to those keys are drained directly and not sen
## Example
Scala
-: @@snip [GroupBy.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/GroupBy.scala) { #groupBy }
+: @@snip [GroupBy.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/GroupBy.scala) { #groupBy }
Java
-: @@snip [GroupBy.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #groupBy }
+: @@snip [GroupBy.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #groupBy }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/grouped.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/grouped.md
similarity index 86%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/grouped.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/grouped.md
index c58a5204f6..81b5afd371 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/grouped.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/grouped.md
@@ -27,10 +27,10 @@ The below example demonstrates how `grouped` groups the accumulated elements int
and maps with other operation.
Scala
-: @@snip [Grouped.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Grouped.scala) { #grouped }
+: @@snip [Grouped.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Grouped.scala) { #grouped }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #grouped }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #grouped }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWeighted.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWeighted.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWeighted.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWeighted.md
index b6787e5af5..b349ff1ccb 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWeighted.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWeighted.md
@@ -26,10 +26,10 @@ The below example demonstrates how `groupedWeighted` groups the accumulated elem
and maps with other operation.
Scala
-: @@snip [groupedWeighted.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/GroupedWeighted.scala) { #groupedWeighted }
+: @@snip [groupedWeighted.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/GroupedWeighted.scala) { #groupedWeighted }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #groupedWeighted }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #groupedWeighted }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWeightedWithin.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWeightedWithin.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWeightedWithin.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWeightedWithin.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWithin.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWithin.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWithin.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/groupedWithin.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/idleTimeout.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/idleTimeout.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/idleTimeout.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/idleTimeout.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/initialDelay.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/initialDelay.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/initialDelay.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/initialDelay.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/initialTimeout.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/initialTimeout.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/initialTimeout.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/initialTimeout.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/interleave.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/interleave.md
similarity index 92%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/interleave.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/interleave.md
index cab930e577..5b516be44c 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/interleave.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/interleave.md
@@ -20,7 +20,7 @@ Scala
: @@snip [FlowInterleaveSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowInterleaveSpec.scala) { #interleave }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #interleave }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #interleave }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/interleaveAll.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/interleaveAll.md
similarity index 92%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/interleaveAll.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/interleaveAll.md
index 407442008d..9b35153e5f 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/interleaveAll.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/interleaveAll.md
@@ -21,7 +21,7 @@ Scala
: @@snip [FlowInterleaveSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowInterleaveAllSpec.scala) { #interleaveAll }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #interleaveAll }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #interleaveAll }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/intersperse.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/intersperse.md
similarity index 81%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/intersperse.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/intersperse.md
index 7b0b843640..ebc6962d8b 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/intersperse.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/intersperse.md
@@ -20,10 +20,10 @@ The following takes a stream of integers, converts them to strings and then adds
element and a `]` at the end.
Scala
-: @@snip [Intersperse.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Intersperse.scala) { #intersperse }
+: @@snip [Intersperse.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Intersperse.scala) { #intersperse }
Java
-: @@snip [Intersperse.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Intersperse.java) { #intersperse }
+: @@snip [Intersperse.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/Intersperse.java) { #intersperse }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/keepAlive.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/keepAlive.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/keepAlive.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/keepAlive.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/limit.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/limit.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/limit.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/limit.md
index b66fb3ab65..59682f5d79 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/limit.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/limit.md
@@ -20,10 +20,10 @@ See also @ref:[limitWeighted](limitWeighted.md) which can choose a weight for ea
In this sample we take at most 10 000 of the untrusted source elements into the aggregated sequence of elements, if the untrusted source emits more elements the stream and the materialized @scala[`Future[Seq[String]]`]@java[`CompletionStage>`] will be failed:
Scala
-: @@snip [Limit.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Limit.scala) { #simple }
+: @@snip [Limit.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Limit.scala) { #simple }
Java
-: @@snip [Limit.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Limit.java) { #simple }
+: @@snip [Limit.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/Limit.java) { #simple }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/limitWeighted.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/limitWeighted.md
similarity index 86%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/limitWeighted.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/limitWeighted.md
index e4bdcb9c35..3712ba6c54 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/limitWeighted.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/limitWeighted.md
@@ -20,10 +20,10 @@ See also @ref:[limit](limit.md) which puts a limit on the number of elements ins
In this sample we use the number of bytes in each `ByteString` element as weight and accept at most a total of 10 000 bytes from the untrusted source elements into the aggregated `ByteString` of all bytes, if the untrusted source emits more elements the stream and the materialized @scala[`Future[ByteString]`]@java[`CompletionStage`] will be failed:
Scala
-: @@snip [LimitWeighted.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/LimitWeighted.scala) { #simple }
+: @@snip [LimitWeighted.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/LimitWeighted.scala) { #simple }
Java
-: @@snip [LimitWeighted.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/LimitWeighted.java) { #simple }
+: @@snip [LimitWeighted.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/LimitWeighted.java) { #simple }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/log.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/log.md
similarity index 83%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/log.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/log.md
index 82b9df8e1e..19701a176d 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/log.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/log.md
@@ -20,10 +20,10 @@ See also @ref:[logWithMarker](logWithMarker.md).
## Example
Scala
-: @@snip [SourceOrFlow.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Log.scala) { #log }
+: @@snip [SourceOrFlow.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Log.scala) { #log }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #log }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #log }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/logWithMarker.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/logWithMarker.md
similarity index 84%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/logWithMarker.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/logWithMarker.md
index 1efb911aa5..66b018c704 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/logWithMarker.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/logWithMarker.md
@@ -21,10 +21,10 @@ See also @ref:[log](log.md).
## Example
Scala
-: @@snip [SourceOrFlow.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/LogWithMarker.scala) { #logWithMarker }
+: @@snip [SourceOrFlow.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/LogWithMarker.scala) { #logWithMarker }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #logWithMarker }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #logWithMarker }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/map.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/map.md
similarity index 89%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/map.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/map.md
index 1cef352005..e0c4577b75 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/map.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/map.md
@@ -16,7 +16,7 @@ Transform each element in the stream by calling a mapping function with it and p
## Examples
Scala
-: @@snip [Flow.scala](/akka-docs/src/test/scala/docs/stream/operators/Map.scala) { #imports #map }
+: @@snip [Flow.scala](/docs/src/test/scala/docs/stream/operators/Map.scala) { #imports #map }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsync.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsync.md
similarity index 85%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsync.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsync.md
index 859abaca97..10aef9444f 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsync.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsync.md
@@ -24,10 +24,10 @@ If a @scala[`Future`] @java[`CompletionStage`] fails, the stream also fails (unl
Imagine you are consuming messages from a broker. These messages represent business events produced on a service upstream. In that case, you want to consume the messages in order and one at a time:
Scala
-: @@snip [MapAsyncs.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapAsyncs.scala) { #mapasync-strict-order }
+: @@snip [MapAsyncs.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/MapAsyncs.scala) { #mapasync-strict-order }
Java
-: @@snip [MapAsyncs.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapAsyncs.java) { #mapasync-strict-order }
+: @@snip [MapAsyncs.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/MapAsyncs.java) { #mapasync-strict-order }
When running the stream above the logging output would look like:
@@ -45,10 +45,10 @@ Completed processing 34
If, instead, you may process information concurrently, but still emit the messages downstream in order, you may increase the parallelism. In this case, the events could some IoT payload with weather metrics, for example, where processing the data in strict ordering is not critical:
Scala
-: @@snip [MapAsyncs.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapAsyncs.scala) { #mapasync-concurrent }
+: @@snip [MapAsyncs.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/MapAsyncs.scala) { #mapasync-concurrent }
Java
-: @@snip [MapAsyncs.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapAsyncs.java) { #mapasync-concurrent }
+: @@snip [MapAsyncs.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/MapAsyncs.java) { #mapasync-concurrent }
In this case, the logging soon shows how processing of the events happens concurrently which may break the ordering. Still, the stage emits the events back in the correct order:
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncUnordered.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncUnordered.md
similarity index 91%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncUnordered.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncUnordered.md
index 35420bcc8f..507f5fd7a4 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncUnordered.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncUnordered.md
@@ -23,10 +23,10 @@ If a @scala[`Future`] @java[`CompletionStage`] fails, the stream also fails (unl
Imagine you are consuming messages from a source, and you prioritize throughput over order (this could be uncorrelated messages so order is irrelevant). You may use the `mapAsyncUnordered` (so messages are emitted as soon as they've been processed) with some parallelism (so processing happens concurrently) :
Scala
-: @@snip [MapAsyncs.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapAsyncs.scala) { #mapasyncunordered }
+: @@snip [MapAsyncs.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/MapAsyncs.scala) { #mapasyncunordered }
Java
-: @@snip [MapAsyncs.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapAsyncs.java) { #mapasyncunordered }
+: @@snip [MapAsyncs.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/MapAsyncs.java) { #mapasyncunordered }
When running the stream above the logging output would look like:
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapConcat.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapConcat.md
similarity index 86%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapConcat.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/mapConcat.md
index 01bd12a43d..232edee962 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapConcat.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapConcat.md
@@ -24,10 +24,10 @@ See also @ref:[statefulMapConcat](statefulMapConcat.md), @ref:[flatMapConcat](fl
The following takes a stream of integers and emits each element twice downstream.
Scala
-: @@snip [MapConcat.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapConcat.scala) { #map-concat }
+: @@snip [MapConcat.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/MapConcat.scala) { #map-concat }
Java
-: @@snip [MapConcat.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapConcat.java) { #map-concat }
+: @@snip [MapConcat.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/MapConcat.java) { #map-concat }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapError.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapError.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapError.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/mapError.md
index 207e194b50..798bb15ee9 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mapError.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapError.md
@@ -27,10 +27,10 @@ The following example demonstrates a stream which throws `ArithmeticException` w
the `map` operator. The`mapError` is used to transform this exception to `UnsupportedOperationException`.
Scala
-: @@snip [MapError.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapError.scala) { #map-error }
+: @@snip [MapError.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/MapError.scala) { #map-error }
Java
-: @@snip [MapError.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapError.java) { #map-error }
+: @@snip [MapError.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/MapError.java) { #map-error }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/merge.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/merge.md
similarity index 91%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/merge.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/merge.md
index 64e45a4008..5374f8edd9 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/merge.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/merge.md
@@ -19,7 +19,7 @@ Scala
: @@snip [FlowMergeSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowMergeSpec.scala) { #merge }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #merge }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #merge }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergeAll.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/mergeAll.md
similarity index 91%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergeAll.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/mergeAll.md
index 1faee893e8..97f36af083 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergeAll.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mergeAll.md
@@ -18,7 +18,7 @@ Scala
: @@snip [FlowMergeSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowMergeAllSpec.scala) { #merge-all }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #merge-all }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #merge-all }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergeLatest.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/mergeLatest.md
similarity index 83%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergeLatest.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/mergeLatest.md
index 616f221de5..05234ca069 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergeLatest.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mergeLatest.md
@@ -23,10 +23,10 @@ This example takes a stream of prices and quantities and emits the price each ti
price of quantity changes:
Scala
-: @@snip [MergeLatest.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MergeLatest.scala) { #mergeLatest }
+: @@snip [MergeLatest.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/MergeLatest.scala) { #mergeLatest }
Java
-: @@snip [MergeLatest.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MergeLatest.java) { #mergeLatest }
+: @@snip [MergeLatest.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/MergeLatest.java) { #mergeLatest }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergePreferred.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/mergePreferred.md
similarity index 93%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergePreferred.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/mergePreferred.md
index 5cb2778544..fd0e8ef3ba 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergePreferred.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mergePreferred.md
@@ -21,7 +21,7 @@ Scala
: @@snip [FlowMergeSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowMergeSpec.scala) { #mergePreferred }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #mergePreferred }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #mergePreferred }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergePrioritized.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/mergePrioritized.md
similarity index 93%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergePrioritized.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/mergePrioritized.md
index d015091bc5..deb76dc9af 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergePrioritized.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mergePrioritized.md
@@ -21,7 +21,7 @@ Scala
: @@snip [FlowMergeSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowMergeSpec.scala) { #mergePrioritized }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #mergePrioritized }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #mergePrioritized }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergeSorted.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/mergeSorted.md
similarity index 90%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergeSorted.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/mergeSorted.md
index c4e9ed1829..a81f6f25ee 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/mergeSorted.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mergeSorted.md
@@ -20,7 +20,7 @@ Scala
: @@snip [FlowMergeSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowMergeSpec.scala) { #merge-sorted }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #merge-sorted }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #merge-sorted }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/monitor.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/monitor.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/monitor.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/monitor.md
index cee12a57d2..3a133af925 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/monitor.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/monitor.md
@@ -24,10 +24,10 @@ that `monitorMat` has a `combine` argument so we can decide which materializatio
below be `Keep.right` so only the `FlowMonitor[Int]` is returned.
Scala
-: @@snip [Monitor.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Monitor.scala) { #monitor }
+: @@snip [Monitor.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Monitor.scala) { #monitor }
Java
-: @@snip [Monitor.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Monitor.java) { #monitor }
+: @@snip [Monitor.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/Monitor.java) { #monitor }
When run, the sample code will produce something similar to:
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/orElse.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/orElse.md
similarity index 93%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/orElse.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/orElse.md
index caf6ba089f..3e3593f787 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/orElse.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/orElse.md
@@ -25,7 +25,7 @@ Scala
: @@snip [FlowOrElseSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowOrElseSpec.scala) { #or-else }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #or-else }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #or-else }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/preMaterialize.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/preMaterialize.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/preMaterialize.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/preMaterialize.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/prefixAndTail.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/prefixAndTail.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/prefixAndTail.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/prefixAndTail.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/prepend.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/prepend.md
similarity index 94%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/prepend.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/prepend.md
index 253cc51dbc..b3385ba572 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/prepend.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/prepend.md
@@ -39,7 +39,7 @@ Scala
: @@snip [FlowOrElseSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowPrependSpec.scala) { #prepend }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #prepend }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #prepend }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/prependLazy.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/prependLazy.md
similarity index 93%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/prependLazy.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/prependLazy.md
index 4cfa7d8aae..e1ae624330 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/prependLazy.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/prependLazy.md
@@ -25,7 +25,7 @@ Scala
: @@snip [FlowPrependSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowPrependSpec.scala) { #prependLazy }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #prependLazy }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #prependLazy }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/recover.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/recover.md
similarity index 79%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/recover.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/recover.md
index be9f0718fe..7aac41bcfc 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/recover.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/recover.md
@@ -36,18 +36,18 @@ Throwing an exception inside `recover` _will_ be logged on ERROR level automatic
Below example demonstrates how `recover` gracefully complete a stream on failure.
Scala
-: @@snip [FlowErrorDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recover }
+: @@snip [FlowErrorDocSpec.scala](/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recover }
Java
-: @@snip [FlowErrorDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recover }
+: @@snip [FlowErrorDocTest.java](/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recover }
This will output:
Scala
-: @@snip [FlowErrorDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recover-output }
+: @@snip [FlowErrorDocSpec.scala](/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recover-output }
Java
-: @@snip [FlowErrorDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recover-output }
+: @@snip [FlowErrorDocTest.java](/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recover-output }
The output in the line `before failure` denotes the last successful element available from the upstream,
and the output in the line `on failure` denotes the element returns by partial function when upstream is failed.
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/recoverWith.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/recoverWith.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/recoverWith.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/recoverWith.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/recoverWithRetries.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/recoverWithRetries.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/recoverWithRetries.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/recoverWithRetries.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/reduce.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/reduce.md
similarity index 82%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/reduce.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/reduce.md
index a714940547..77c2244d05 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/reduce.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/reduce.md
@@ -21,10 +21,10 @@ complete the current value is emitted downstream. Similar to `fold`.
Here, it will add the incoming elements.
Scala
-: @@snip [Reduce.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Reduce.scala) { #reduceExample }
+: @@snip [Reduce.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Reduce.scala) { #reduceExample }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #reduceExample }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #reduceExample }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/scan.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/scan.md
similarity index 86%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/scan.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/scan.md
index 20f0703c8c..0034cd1ec8 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/scan.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/scan.md
@@ -29,10 +29,10 @@ when running the stream more than once.
Below example demonstrates how `scan` is similar to `fold`, but it keeps value from every iteration.
Scala
-: @@snip [Scan.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Scan.scala) { #scan }
+: @@snip [Scan.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Scan.scala) { #scan }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #scan }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #scan }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/scanAsync.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/scanAsync.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/scanAsync.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/scanAsync.md
index 4fcfe907d6..ed63e0d684 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/scanAsync.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/scanAsync.md
@@ -27,10 +27,10 @@ when running the stream more than once.
Below example demonstrates how `scanAsync` is similar to `fold`, but it keeps value from every iteration.
Scala
-: @@snip [ScanAsync.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/ScanAsync.scala) { #scan-async }
+: @@snip [ScanAsync.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/ScanAsync.scala) { #scan-async }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #scan-async }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #scan-async }
@@@ warning
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/setup.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/setup.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/setup.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/setup.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/sliding.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/sliding.md
similarity index 67%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/sliding.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/sliding.md
index 83b17ecddb..ee3e5e4edb 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/sliding.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/sliding.md
@@ -20,27 +20,27 @@ In this first sample we just see the behavior of the operator itself, first with
`step` which is 1]@java[a step value of 1].
Scala
-: @@snip [Sliding.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Sliding.scala) { #sliding-1 }
+: @@snip [Sliding.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Sliding.scala) { #sliding-1 }
Java
-: @@snip [Sliding.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Sliding.java) { #sliding-1 }
+: @@snip [Sliding.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/Sliding.java) { #sliding-1 }
If the stream stops without having seen enough elements to fill a window, the last window will have as many elements
was emitted before the stream ended. Here we also provide a step to move two elements forward for each window:
Scala
-: @@snip [Sliding.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Sliding.scala) { #sliding-2 }
+: @@snip [Sliding.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Sliding.scala) { #sliding-2 }
Java
-: @@snip [Sliding.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Sliding.java) { #sliding-2 }
+: @@snip [Sliding.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/Sliding.java) { #sliding-2 }
One use case for sliding is to implement a moving average, here we do that with a "period" of `5`:
Scala
-: @@snip [Sliding.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Sliding.scala) { #moving-average }
+: @@snip [Sliding.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Sliding.scala) { #moving-average }
Java
-: @@snip [Sliding.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Sliding.java) { #moving-average }
+: @@snip [Sliding.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/Sliding.java) { #moving-average }
Sliding can also be used to do simple windowing, see @ref[splitAfter](splitAfter.md).
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/splitAfter.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/splitAfter.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/splitAfter.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/splitAfter.md
index 90dea0d571..7ced7b40a4 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/splitAfter.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/splitAfter.md
@@ -20,10 +20,10 @@ Given some time series data source we would like to split the stream into sub-st
By using `sliding` we can compare the timestamp of the current and next element to decide when to split.
Scala
-: @@snip [Scan.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Split.scala) { #splitAfter }
+: @@snip [Scan.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Split.scala) { #splitAfter }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Split.java) { #splitAfter }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/Split.java) { #splitAfter }
An alternative way of implementing this is shown in @ref:[splitWhen example](splitWhen.md#example).
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/splitWhen.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/splitWhen.md
similarity index 89%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/splitWhen.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/splitWhen.md
index 01fd16cd6f..891b34dc6f 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/splitWhen.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/splitWhen.md
@@ -21,10 +21,10 @@ We need to compare the timestamp of the previous and current element to decide w
decision can be implemented in a `statefulMapConcat` operator preceding the `splitWhen`.
Scala
-: @@snip [Scan.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Split.scala) { #splitWhen }
+: @@snip [Scan.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Split.scala) { #splitWhen }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Split.java) { #splitWhen }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/Split.java) { #splitWhen }
An alternative way of implementing this is shown in @ref:[splitAfter example](splitAfter.md#example).
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMap.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMap.md
similarity index 71%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMap.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMap.md
index 95a31c63dd..c03e8daed7 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMap.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMap.md
@@ -29,10 +29,10 @@ In the first example we implement an `zipWithIndex` operator like @ref:[zipWithI
with each element of the stream, the index starts from 0.
Scala
-: @@snip [StatefulMap.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala) { #zipWithIndex }
+: @@snip [StatefulMap.scala](/docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala) { #zipWithIndex }
Java
-: @@snip [StatefulMap.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java) { #zipWithIndex }
+: @@snip [StatefulMap.java](/docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java) { #zipWithIndex }
@@ -40,27 +40,27 @@ In the second example, the elements are buffered until the incoming element is d
When upstream completes, if there are buffered elements, they are emitted before completing.
Scala
-: @@snip [StatefulMap.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala) { #bufferUntilChanged }
+: @@snip [StatefulMap.scala](/docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala) { #bufferUntilChanged }
Java
-: @@snip [StatefulMap.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java) { #bufferUntilChanged }
+: @@snip [StatefulMap.java](/docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java) { #bufferUntilChanged }
In the forth example, repeated incoming elements are only emitted once and then dropped.
Scala
-: @@snip [StatefulMap.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala) { #distinctUntilChanged }
+: @@snip [StatefulMap.scala](/docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala) { #distinctUntilChanged }
Java
-: @@snip [StatefulMap.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java) { #distinctUntilChanged }
+: @@snip [StatefulMap.java](/docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java) { #distinctUntilChanged }
In the fifth example, we combine the @ref:[statefulMap](statefulMap.md) and @ref:[mapConcat](mapConcat.md) to implement
a @ref:[statefulMapConcat](statefulMapConcat.md) like behavior.
Scala
-: @@snip [StatefulMap.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala) { #statefulMapConcatLike }
+: @@snip [StatefulMap.scala](/docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala) { #statefulMapConcatLike }
Java
-: @@snip [StatefulMap.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java) { #statefulMapConcatLike }
+: @@snip [StatefulMap.java](/docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java) { #statefulMapConcatLike }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMapConcat.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMapConcat.md
similarity index 77%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMapConcat.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMapConcat.md
index 1b01a2be19..0eb9b8a1b3 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMapConcat.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMapConcat.md
@@ -22,19 +22,19 @@ In this first sample we keep a counter, and combine each element with an id that
(replicating the @ref:[zipWithIndex](zipWithIndex.md) operator):
Scala
-: @@snip [StatefulMapConcat.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMapConcat.scala) { #zip-with-index }
+: @@snip [StatefulMapConcat.scala](/docs/src/test/scala/docs/stream/operators/flow/StatefulMapConcat.scala) { #zip-with-index }
Java
-: @@snip [StatefulMapConcat.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMapConcat.java) { #zip-with-index }
+: @@snip [StatefulMapConcat.java](/docs/src/test/java/jdocs/stream/operators/flow/StatefulMapConcat.java) { #zip-with-index }
In this sample we let the value of the elements have an effect on the following elements, if an element starts
with `deny:word` we add it to a deny list and filter out any subsequent entries of `word`:
Scala
-: @@snip [StatefulMapConcat.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMapConcat.scala) { #denylist }
+: @@snip [StatefulMapConcat.scala](/docs/src/test/scala/docs/stream/operators/flow/StatefulMapConcat.scala) { #denylist }
Java
-: @@snip [StatefulMapConcat.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMapConcat.java) { #denylist }
+: @@snip [StatefulMapConcat.java](/docs/src/test/java/jdocs/stream/operators/flow/StatefulMapConcat.java) { #denylist }
For cases where there is a need to emit elements based on the state when the stream ends, it is possible to add an extra
element signalling the end of the stream before the `statefulMapConcat` operator.
@@ -43,10 +43,10 @@ In this sample we collect all elements starting with the letter `b` and emit tho
a special end element. The end element is a special string to keep the sample concise, in a real application it may make sense to use types instead.
Scala
-: @@snip [StatefulMapConcat.scala](/akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMapConcat.scala) { #bs-last }
+: @@snip [StatefulMapConcat.scala](/docs/src/test/scala/docs/stream/operators/flow/StatefulMapConcat.scala) { #bs-last }
Java
-: @@snip [StatefulMapConcat.java](/akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMapConcat.java) { #bs-last }
+: @@snip [StatefulMapConcat.java](/docs/src/test/java/jdocs/stream/operators/flow/StatefulMapConcat.java) { #bs-last }
When defining aggregates like this you should consider if it is safe to let the state grow without bounds or if you should
rather drop elements or throw an exception if the collected set of elements grows too big.
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/take.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/take.md
similarity index 76%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/take.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/take.md
index 62249b453a..153d7fb418 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/take.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/take.md
@@ -17,10 +17,10 @@ Pass `n` incoming elements downstream and then complete
## Example
Scala
-: @@snip [Take.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Take.scala) { #take }
+: @@snip [Take.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Take.scala) { #take }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #take }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #take }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/takeWhile.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/takeWhile.md
similarity index 80%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/takeWhile.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/takeWhile.md
index 8b922bb01c..8765fed3c5 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/takeWhile.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/takeWhile.md
@@ -18,10 +18,10 @@ The element for which the predicate returns false is not emitted.
## Example
Scala
-: @@snip [TakeWhile.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/TakeWhile.scala) { #take-while }
+: @@snip [TakeWhile.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/TakeWhile.scala) { #take-while }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #take-while }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #take-while }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/takeWithin.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/takeWithin.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/takeWithin.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/takeWithin.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/throttle.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/throttle.md
similarity index 86%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/throttle.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/throttle.md
index 021d5fdd2b..38a1cfd57d 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/throttle.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/throttle.md
@@ -25,10 +25,10 @@ should return the content. Instead of serving a complete video as fast as bandwi
to limit the network usage to 24 frames per second (let's imagine this streaming platform stores frames, not bytes).
Scala
-: @@snip [Throttle.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Throttle.scala) { #throttle }
+: @@snip [Throttle.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Throttle.scala) { #throttle }
Java
-: @@snip [Throttle.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Throttle.java) { #throttle }
+: @@snip [Throttle.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/Throttle.java) { #throttle }
The problem in the example above is that when there's a network hiccup, the video playback will interrupt. It can be
improved by sending more content than the necessary ahead of time and let the client buffer that. So, `throttle` can be used
@@ -36,10 +36,10 @@ to burst the first 30 seconds and then send a constant of 24 frames per second.
a good chunk of content will be downloaded and after that the server will activate the throttling.
Scala
-: @@snip [Throttle.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Throttle.scala) { #throttle-with-burst }
+: @@snip [Throttle.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Throttle.scala) { #throttle-with-burst }
Java
-: @@snip [Throttle.java](/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Throttle.java) { #throttle-with-burst }
+: @@snip [Throttle.java](/docs/src/test/java/jdocs/stream/operators/sourceorflow/Throttle.java) { #throttle-with-burst }
The extra argument to set the `ThrottleMode` to `shaping` tells `throttle` to make pauses to avoid exceeding
the maximum rate. Alternatively we could set the throttling mode to cause a stream failure when upstream is faster
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/watch.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/watch.md
similarity index 83%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/watch.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/watch.md
index afc4f18bf9..567d1be02c 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/watch.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/watch.md
@@ -21,10 +21,10 @@ An `ActorRef` can be can be watched and the stream will fail with `WatchedActorT
actor terminates.
Scala
-: @@snip [Watch.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Watch.scala) { #watch }
+: @@snip [Watch.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/Watch.scala) { #watch }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #watch }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #watch }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/watchTermination.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/watchTermination.md
similarity index 85%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/watchTermination.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/watchTermination.md
index e9edaa2038..18c40422fe 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/watchTermination.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/watchTermination.md
@@ -18,10 +18,10 @@ The operators otherwise passes through elements unchanged.
## Examples
Scala
-: @@snip [WatchTermination.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/WatchTermination.scala) { #watchTermination }
+: @@snip [WatchTermination.scala](/docs/src/test/scala/docs/stream/operators/sourceorflow/WatchTermination.scala) { #watchTermination }
Java
-: @@snip [WatchTermination.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #watchTermination }
+: @@snip [WatchTermination.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #watchTermination }
You can also use the lambda function expected by `watchTermination` to map the materialized value of the stream. Additionally, the completion of the @scala[`Future`]@java[`CompletionStage`] provided as a second parameter of the lambda can be used to perform cleanup operations of the resources used by the stream itself.
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/wireTap.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/wireTap.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/wireTap.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/wireTap.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zip.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/zip.md
similarity index 92%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zip.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/zip.md
index e290f63096..807009e4ce 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zip.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/zip.md
@@ -25,7 +25,7 @@ Scala
: @@snip [FlowZipSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowZipSpec.scala) { #zip }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #zip }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #zip }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipAll.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/zipAll.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipAll.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/zipAll.md
index 119b15fc62..d368c88890 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipAll.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/zipAll.md
@@ -25,10 +25,10 @@ See also:
## Example
Scala
-: @@snip [Zip.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Zip.scala) { #zipAll-simple }
+: @@snip [Zip.scala](/docs/src/test/scala/docs/stream/operators/source/Zip.scala) { #zipAll-simple }
Java
-: @@snip [Zip.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Zip.java) { #zipAll-simple }
+: @@snip [Zip.java](/docs/src/test/java/jdocs/stream/operators/source/Zip.java) { #zipAll-simple }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipLatest.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/zipLatest.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipLatest.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/zipLatest.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipLatestWith.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/zipLatestWith.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipLatestWith.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/zipLatestWith.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipWith.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/zipWith.md
similarity index 92%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipWith.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/zipWith.md
index b2970c8386..135eac190a 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipWith.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/zipWith.md
@@ -27,7 +27,7 @@ Scala
: @@snip [FlowZipWithSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowZipWithSpec.scala) { #zip-with }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #zip-with }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #zip-with }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipWithIndex.md b/docs/src/main/paradox/stream/operators/Source-or-Flow/zipWithIndex.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipWithIndex.md
rename to docs/src/main/paradox/stream/operators/Source-or-Flow/zipWithIndex.md
index 40cd22b0b2..75624e95d7 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/zipWithIndex.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/zipWithIndex.md
@@ -25,7 +25,7 @@ Scala
: @@snip [FlowZipWithIndexSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowZipWithIndexSpec.scala) { #zip-with-index }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #zip-with-index }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #zip-with-index }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/actorRef.md b/docs/src/main/paradox/stream/operators/Source/actorRef.md
similarity index 90%
rename from akka-docs/src/main/paradox/stream/operators/Source/actorRef.md
rename to docs/src/main/paradox/stream/operators/Source/actorRef.md
index 107d2b6858..13fcb58629 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/actorRef.md
+++ b/docs/src/main/paradox/stream/operators/Source/actorRef.md
@@ -31,10 +31,10 @@ See also:
## Examples
Scala
-: @@snip [actorRef.scala](/akka-docs/src/test/scala/docs/stream/operators/SourceOperators.scala) { #actorRef }
+: @@snip [actorRef.scala](/docs/src/test/scala/docs/stream/operators/SourceOperators.scala) { #actorRef }
Java
-: @@snip [actorRef.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #actor-ref-imports #actor-ref }
+: @@snip [actorRef.java](/docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #actor-ref-imports #actor-ref }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/actorRefWithBackpressure.md b/docs/src/main/paradox/stream/operators/Source/actorRefWithBackpressure.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Source/actorRefWithBackpressure.md
rename to docs/src/main/paradox/stream/operators/Source/actorRefWithBackpressure.md
index a1731b8bd7..9d3601abdf 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/actorRefWithBackpressure.md
+++ b/docs/src/main/paradox/stream/operators/Source/actorRefWithBackpressure.md
@@ -23,10 +23,10 @@ See also:
## Examples
Scala
-: @@snip [actorRef.scala](/akka-docs/src/test/scala/docs/stream/operators/SourceOperators.scala) { #actorRefWithBackpressure }
+: @@snip [actorRef.scala](/docs/src/test/scala/docs/stream/operators/SourceOperators.scala) { #actorRefWithBackpressure }
Java
-: @@snip [actorRef.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #actor-ref-imports #actorRefWithBackpressure }
+: @@snip [actorRef.java](/docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #actor-ref-imports #actorRefWithBackpressure }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/asSourceWithContext.md b/docs/src/main/paradox/stream/operators/Source/asSourceWithContext.md
similarity index 86%
rename from akka-docs/src/main/paradox/stream/operators/Source/asSourceWithContext.md
rename to docs/src/main/paradox/stream/operators/Source/asSourceWithContext.md
index 020af22403..c25ff74762 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/asSourceWithContext.md
+++ b/docs/src/main/paradox/stream/operators/Source/asSourceWithContext.md
@@ -26,7 +26,7 @@ See also:
Elements from this source have a correlation number, but the flow structure should focus on the text message in the elements. `asSourceWithContext` chooses the second value in the @scala[tuple]@java[pair] as the context. Another `map` operator makes the first value the stream elements in the `SourceWithContext`.
Scala
-: @@snip [snip](/akka-docs/src/test/scala/docs/stream/operators/WithContextSpec.scala) { #asSourceWithContext }
+: @@snip [snip](/docs/src/test/scala/docs/stream/operators/WithContextSpec.scala) { #asSourceWithContext }
Java
-: @@snip [snip](/akka-docs/src/test/java/jdocs/stream/operators/WithContextTest.java) { #imports #asSourceWithContext }
+: @@snip [snip](/docs/src/test/java/jdocs/stream/operators/WithContextTest.java) { #imports #asSourceWithContext }
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/asSubscriber.md b/docs/src/main/paradox/stream/operators/Source/asSubscriber.md
similarity index 85%
rename from akka-docs/src/main/paradox/stream/operators/Source/asSubscriber.md
rename to docs/src/main/paradox/stream/operators/Source/asSubscriber.md
index 56d0ef7f9f..58ec850135 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/asSubscriber.md
+++ b/docs/src/main/paradox/stream/operators/Source/asSubscriber.md
@@ -10,7 +10,7 @@ Scala
: @@snip[JavaFlowSupport.scala](/akka-stream/src/main/scala-jdk-9/akka/stream/scaladsl/JavaFlowSupport.scala) { #asSubscriber }
Java
-: @@snip[JavaFlowSupport.java](/akka-docs/src/test/java-jdk9-only/jdocs/stream/operators/source/AsSubscriber.java) { #api }
+: @@snip[JavaFlowSupport.java](/docs/src/test/java-jdk9-only/jdocs/stream/operators/source/AsSubscriber.java) { #api }
## Description
@@ -44,7 +44,7 @@ backpressure is applied throughout the stream, preventing us from running out of
rows are consumed slower than they are produced by the database.
Scala
-: @@snip [AsSubscriber.scala](/akka-docs/src/test/scala-jdk9-only/docs/stream/operators/source/AsSubscriber.scala) { #imports #example }
+: @@snip [AsSubscriber.scala](/docs/src/test/scala-jdk9-only/docs/stream/operators/source/AsSubscriber.scala) { #imports #example }
Java
-: @@snip [AsSubscriber.java](/akka-docs/src/test/java-jdk9-only/jdocs/stream/operators/source/AsSubscriber.java) { #imports #example }
+: @@snip [AsSubscriber.java](/docs/src/test/java-jdk9-only/jdocs/stream/operators/source/AsSubscriber.java) { #imports #example }
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/combine.md b/docs/src/main/paradox/stream/operators/Source/combine.md
similarity index 83%
rename from akka-docs/src/main/paradox/stream/operators/Source/combine.md
rename to docs/src/main/paradox/stream/operators/Source/combine.md
index 2c337b1d7c..101542336a 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/combine.md
+++ b/docs/src/main/paradox/stream/operators/Source/combine.md
@@ -39,20 +39,20 @@ sources of integers. The three sources will immediately start contributing eleme
elements from each source will be in order but the order compared to elements from other sources is not deterministic:
Scala
-: @@snip [Combine.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Combine.scala) { #imports #source-combine-merge }
+: @@snip [Combine.scala](/docs/src/test/scala/docs/stream/operators/source/Combine.scala) { #imports #source-combine-merge }
Java
-: @@snip [Combine.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Combine.java) { #imports #source-combine-merge }
+: @@snip [Combine.java](/docs/src/test/java/jdocs/stream/operators/source/Combine.java) { #imports #source-combine-merge }
If we instead use `Concat` the first source
will get to emit elements until it completes, then the second source until that completes and so on until all the sources has completed.
Scala
-: @@snip [Combine.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Combine.scala) { #source-combine-concat }
+: @@snip [Combine.scala](/docs/src/test/scala/docs/stream/operators/source/Combine.scala) { #source-combine-concat }
Java
-: @@snip [Combine.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Combine.java) { #source-combine-concat }
+: @@snip [Combine.java](/docs/src/test/java/jdocs/stream/operators/source/Combine.java) { #source-combine-concat }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/completionStage.md b/docs/src/main/paradox/stream/operators/Source/completionStage.md
similarity index 86%
rename from akka-docs/src/main/paradox/stream/operators/Source/completionStage.md
rename to docs/src/main/paradox/stream/operators/Source/completionStage.md
index 04a61a0363..601d427a4a 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/completionStage.md
+++ b/docs/src/main/paradox/stream/operators/Source/completionStage.md
@@ -20,7 +20,7 @@ For the corresponding operator for the Scala standard library `Future` see @ref:
## Example
Java
-: @@snip [SourceFromCompletionStage.java](/akka-docs/src/test/java/jdocs/stream/operators/source/FromCompletionStage.java) { #sourceFromCompletionStage }
+: @@snip [SourceFromCompletionStage.java](/docs/src/test/java/jdocs/stream/operators/source/FromCompletionStage.java) { #sourceFromCompletionStage }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/completionStageSource.md b/docs/src/main/paradox/stream/operators/Source/completionStageSource.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/operators/Source/completionStageSource.md
rename to docs/src/main/paradox/stream/operators/Source/completionStageSource.md
index d68e66b426..ea5a817457 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/completionStageSource.md
+++ b/docs/src/main/paradox/stream/operators/Source/completionStageSource.md
@@ -25,7 +25,7 @@ Suppose we are accessing a remote service that streams user data over HTTP/2 or
as a @apidoc[Source[User,NotUsed]] but that source will only be available once the connection has been established.
Java
-: @@snip [CompletionStageSource.java](/akka-docs/src/test/java/jdocs/stream/operators/source/CompletionStageSource.java) { #sourceCompletionStageSource }
+: @@snip [CompletionStageSource.java](/docs/src/test/java/jdocs/stream/operators/source/CompletionStageSource.java) { #sourceCompletionStageSource }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/cycle.md b/docs/src/main/paradox/stream/operators/Source/cycle.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/cycle.md
rename to docs/src/main/paradox/stream/operators/Source/cycle.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/empty.md b/docs/src/main/paradox/stream/operators/Source/empty.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/empty.md
rename to docs/src/main/paradox/stream/operators/Source/empty.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/failed.md b/docs/src/main/paradox/stream/operators/Source/failed.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/failed.md
rename to docs/src/main/paradox/stream/operators/Source/failed.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/from.md b/docs/src/main/paradox/stream/operators/Source/from.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Source/from.md
rename to docs/src/main/paradox/stream/operators/Source/from.md
index c75e33cc34..6935a80be5 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/from.md
+++ b/docs/src/main/paradox/stream/operators/Source/from.md
@@ -26,7 +26,7 @@ as a source. Otherwise the stream may fail with `ConcurrentModificationException
## Examples
Java
-: @@snip [from.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #imports #source-from-example }
+: @@snip [from.java](/docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #imports #source-from-example }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/fromCompletionStage.md b/docs/src/main/paradox/stream/operators/Source/fromCompletionStage.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/fromCompletionStage.md
rename to docs/src/main/paradox/stream/operators/Source/fromCompletionStage.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/fromFuture.md b/docs/src/main/paradox/stream/operators/Source/fromFuture.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/fromFuture.md
rename to docs/src/main/paradox/stream/operators/Source/fromFuture.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/fromFutureSource.md b/docs/src/main/paradox/stream/operators/Source/fromFutureSource.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/fromFutureSource.md
rename to docs/src/main/paradox/stream/operators/Source/fromFutureSource.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/fromIterator.md b/docs/src/main/paradox/stream/operators/Source/fromIterator.md
similarity index 81%
rename from akka-docs/src/main/paradox/stream/operators/Source/fromIterator.md
rename to docs/src/main/paradox/stream/operators/Source/fromIterator.md
index 3abfc5602b..c79bf7401d 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/fromIterator.md
+++ b/docs/src/main/paradox/stream/operators/Source/fromIterator.md
@@ -19,10 +19,10 @@ If the iterator perform blocking operations, make sure to run it on a separate d
## Example
Scala
-: @@snip [From.scala](/akka-docs/src/test/scala/docs/stream/operators/source/From.scala) { #from-iterator }
+: @@snip [From.scala](/docs/src/test/scala/docs/stream/operators/source/From.scala) { #from-iterator }
Java
-: @@snip [From.java](/akka-docs/src/test/java/jdocs/stream/operators/source/From.java) { #from-iterator }
+: @@snip [From.java](/docs/src/test/java/jdocs/stream/operators/source/From.java) { #from-iterator }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/fromJavaStream.md b/docs/src/main/paradox/stream/operators/Source/fromJavaStream.md
similarity index 83%
rename from akka-docs/src/main/paradox/stream/operators/Source/fromJavaStream.md
rename to docs/src/main/paradox/stream/operators/Source/fromJavaStream.md
index 4d55987105..780bbf9a95 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/fromJavaStream.md
+++ b/docs/src/main/paradox/stream/operators/Source/fromJavaStream.md
@@ -19,10 +19,10 @@ You can use `Source.async` to create asynchronous boundaries between synchronous
## Example
Scala
-: @@snip [From.scala](/akka-docs/src/test/scala/docs/stream/operators/source/From.scala) { #from-javaStream }
+: @@snip [From.scala](/docs/src/test/scala/docs/stream/operators/source/From.scala) { #from-javaStream }
Java
-: @@snip [From.java](/akka-docs/src/test/java/jdocs/stream/operators/source/From.java) { #from-javaStream }
+: @@snip [From.java](/docs/src/test/java/jdocs/stream/operators/source/From.java) { #from-javaStream }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/fromPublisher.md b/docs/src/main/paradox/stream/operators/Source/fromPublisher.md
similarity index 83%
rename from akka-docs/src/main/paradox/stream/operators/Source/fromPublisher.md
rename to docs/src/main/paradox/stream/operators/Source/fromPublisher.md
index 859a32eef3..51b601b6a6 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/fromPublisher.md
+++ b/docs/src/main/paradox/stream/operators/Source/fromPublisher.md
@@ -10,7 +10,7 @@ Scala
: @@snip[JavaFlowSupport.scala](/akka-stream/src/main/scala-jdk-9/akka/stream/scaladsl/JavaFlowSupport.scala) { #fromPublisher }
Java
-: @@snip[JavaFlowSupport.java](/akka-docs/src/test/java-jdk9-only/jdocs/stream/operators/source/FromPublisher.java) { #api }
+: @@snip[JavaFlowSupport.java](/docs/src/test/java-jdk9-only/jdocs/stream/operators/source/FromPublisher.java) { #api }
## Description
@@ -41,7 +41,7 @@ backpressure is applied throughout the stream, preventing us from running out of
rows are consumed slower than they are produced by the database.
Scala
-: @@snip [FromPublisher.scala](/akka-docs/src/test/scala-jdk9-only/docs/stream/operators/source/FromPublisher.scala) { #imports #example }
+: @@snip [FromPublisher.scala](/docs/src/test/scala-jdk9-only/docs/stream/operators/source/FromPublisher.scala) { #imports #example }
Java
-: @@snip [FromPublisher.java](/akka-docs/src/test/java-jdk9-only/jdocs/stream/operators/source/FromPublisher.java) { #imports #example }
+: @@snip [FromPublisher.java](/docs/src/test/java-jdk9-only/jdocs/stream/operators/source/FromPublisher.java) { #imports #example }
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/fromSourceCompletionStage.md b/docs/src/main/paradox/stream/operators/Source/fromSourceCompletionStage.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/fromSourceCompletionStage.md
rename to docs/src/main/paradox/stream/operators/Source/fromSourceCompletionStage.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/future.md b/docs/src/main/paradox/stream/operators/Source/future.md
similarity index 85%
rename from akka-docs/src/main/paradox/stream/operators/Source/future.md
rename to docs/src/main/paradox/stream/operators/Source/future.md
index 25b63c4a1b..28885f5e7a 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/future.md
+++ b/docs/src/main/paradox/stream/operators/Source/future.md
@@ -18,7 +18,7 @@ For the corresponding operator for the Java standard library `CompletionStage` s
## Example
Scala
-: @@snip [SourceFromFuture.scala](/akka-docs/src/test/scala/docs/stream/operators/SourceOperators.scala) { #sourceFromFuture }
+: @@snip [SourceFromFuture.scala](/docs/src/test/scala/docs/stream/operators/SourceOperators.scala) { #sourceFromFuture }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/futureSource.md b/docs/src/main/paradox/stream/operators/Source/futureSource.md
similarity index 89%
rename from akka-docs/src/main/paradox/stream/operators/Source/futureSource.md
rename to docs/src/main/paradox/stream/operators/Source/futureSource.md
index d5ba295e99..b0897d2ccc 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/futureSource.md
+++ b/docs/src/main/paradox/stream/operators/Source/futureSource.md
@@ -22,7 +22,7 @@ Suppose we are accessing a remote service that streams user data over HTTP/2 or
as a @apidoc[Source[User,NotUsed]] but that source will only be available once the connection has been established.
Scala
-: @@snip [FutureSource.scala](/akka-docs/src/test/scala/docs/stream/operators/source/FutureSource.scala) { #sourceFutureSource }
+: @@snip [FutureSource.scala](/docs/src/test/scala/docs/stream/operators/source/FutureSource.scala) { #sourceFutureSource }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/lazily.md b/docs/src/main/paradox/stream/operators/Source/lazily.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/lazily.md
rename to docs/src/main/paradox/stream/operators/Source/lazily.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/lazilyAsync.md b/docs/src/main/paradox/stream/operators/Source/lazilyAsync.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/lazilyAsync.md
rename to docs/src/main/paradox/stream/operators/Source/lazilyAsync.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/lazyCompletionStage.md b/docs/src/main/paradox/stream/operators/Source/lazyCompletionStage.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/lazyCompletionStage.md
rename to docs/src/main/paradox/stream/operators/Source/lazyCompletionStage.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/lazyCompletionStageSource.md b/docs/src/main/paradox/stream/operators/Source/lazyCompletionStageSource.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/lazyCompletionStageSource.md
rename to docs/src/main/paradox/stream/operators/Source/lazyCompletionStageSource.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/lazyFuture.md b/docs/src/main/paradox/stream/operators/Source/lazyFuture.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/lazyFuture.md
rename to docs/src/main/paradox/stream/operators/Source/lazyFuture.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/lazyFutureSource.md b/docs/src/main/paradox/stream/operators/Source/lazyFutureSource.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/lazyFutureSource.md
rename to docs/src/main/paradox/stream/operators/Source/lazyFutureSource.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/lazySingle.md b/docs/src/main/paradox/stream/operators/Source/lazySingle.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/lazySingle.md
rename to docs/src/main/paradox/stream/operators/Source/lazySingle.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/lazySource.md b/docs/src/main/paradox/stream/operators/Source/lazySource.md
similarity index 84%
rename from akka-docs/src/main/paradox/stream/operators/Source/lazySource.md
rename to docs/src/main/paradox/stream/operators/Source/lazySource.md
index 5bdf03fd1f..aa6d02d57d 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/lazySource.md
+++ b/docs/src/main/paradox/stream/operators/Source/lazySource.md
@@ -33,10 +33,10 @@ since `Sink.queue` has a buffer and will ask for that immediately on materializa
quickly after the stream has been materialized:
Scala
-: @@snip [Lazy.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Lazy.scala) { #not-a-good-example }
+: @@snip [Lazy.scala](/docs/src/test/scala/docs/stream/operators/source/Lazy.scala) { #not-a-good-example }
Java
-: @@snip [Lazy.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Lazy.java) { #not-a-good-example }
+: @@snip [Lazy.java](/docs/src/test/java/jdocs/stream/operators/source/Lazy.java) { #not-a-good-example }
Instead the most useful aspect of the operator is that the factory is called once per stream materialization
which means that it can be used to safely construct a mutable object to use with the actual deferred source.
@@ -49,10 +49,10 @@ across all three materializations of the stream, but wrapping it with `Source.la
for each of the started streams:
Scala
-: @@snip [Lazy.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Lazy.scala) { #one-per-materialization }
+: @@snip [Lazy.scala](/docs/src/test/scala/docs/stream/operators/source/Lazy.scala) { #one-per-materialization }
Java
-: @@snip [Lazy.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Lazy.java) { #one-per-materialization }
+: @@snip [Lazy.java](/docs/src/test/java/jdocs/stream/operators/source/Lazy.java) { #one-per-materialization }
Note though that you can often also achieve the same using @ref:[unfoldResource](unfoldResource.md). If you have an actual `Iterator`
you should prefer @ref:[fromIterator](fromIterator.md).
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/maybe.md b/docs/src/main/paradox/stream/operators/Source/maybe.md
similarity index 90%
rename from akka-docs/src/main/paradox/stream/operators/Source/maybe.md
rename to docs/src/main/paradox/stream/operators/Source/maybe.md
index aabd344007..4d08319d14 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/maybe.md
+++ b/docs/src/main/paradox/stream/operators/Source/maybe.md
@@ -33,10 +33,10 @@ the stream is run while the @scala[`Future`]@java[`CompletionStage`] given to
## Example
Scala
-: @@snip [SourceOperators.scala](/akka-docs/src/test/scala/docs/stream/operators/SourceOperators.scala) { #maybe }
+: @@snip [SourceOperators.scala](/docs/src/test/scala/docs/stream/operators/SourceOperators.scala) { #maybe }
Java
-: @@snip [SourceDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #maybe }
+: @@snip [SourceDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #maybe }
The `Source.maybe[Int]` will return a @scala[`Promise[Option[Int]]`]@java[`CompletableFuture>`]
materialized value. That @scala[`Promise`]@java[`CompletableFuture`] can be completed later. Each time the stream
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/mergePrioritizedN.md b/docs/src/main/paradox/stream/operators/Source/mergePrioritizedN.md
similarity index 91%
rename from akka-docs/src/main/paradox/stream/operators/Source/mergePrioritizedN.md
rename to docs/src/main/paradox/stream/operators/Source/mergePrioritizedN.md
index b01ed97b25..108577635d 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/mergePrioritizedN.md
+++ b/docs/src/main/paradox/stream/operators/Source/mergePrioritizedN.md
@@ -20,7 +20,7 @@ Scala
: @@snip [FlowMergeSpec.scala](/akka-stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowMergeSpec.scala) { #mergePrioritizedN }
Java
-: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #mergePrioritizedN }
+: @@snip [SourceOrFlow.java](/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #mergePrioritizedN }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/never.md b/docs/src/main/paradox/stream/operators/Source/never.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/never.md
rename to docs/src/main/paradox/stream/operators/Source/never.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/queue.md b/docs/src/main/paradox/stream/operators/Source/queue.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Source/queue.md
rename to docs/src/main/paradox/stream/operators/Source/queue.md
index f88a2315ff..2fa8b2bde7 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/queue.md
+++ b/docs/src/main/paradox/stream/operators/Source/queue.md
@@ -28,10 +28,10 @@ A synchronous result is important in order to avoid situations where offer ackno
## Example (`BoundedSourceQueue`)
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #source-queue-synchronous }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #source-queue-synchronous }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #source-queue-synchronous }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #source-queue-synchronous }
## Signature (`SourceQueue`)
@@ -54,10 +54,10 @@ In combination with the queue, the @ref[`throttle`](./../Source-or-Flow/throttle
## Example (`SourceQueue`)
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #source-queue }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #source-queue }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #source-queue }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #source-queue }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/range.md b/docs/src/main/paradox/stream/operators/Source/range.md
similarity index 77%
rename from akka-docs/src/main/paradox/stream/operators/Source/range.md
rename to docs/src/main/paradox/stream/operators/Source/range.md
index d646909bee..bf75041c28 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/range.md
+++ b/docs/src/main/paradox/stream/operators/Source/range.md
@@ -25,12 +25,12 @@ Emit each integer in a range, with an option to take bigger steps than 1. @scala
Define the range of integers.
Java
-: @@snip [SourceDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #range-imports #range }
+: @@snip [SourceDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #range-imports #range }
Print out the stream of integers.
Java
-: @@snip [SourceDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #run-range}
+: @@snip [SourceDocExamples.java](/docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java) { #run-range}
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/repeat.md b/docs/src/main/paradox/stream/operators/Source/repeat.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/repeat.md
rename to docs/src/main/paradox/stream/operators/Source/repeat.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/single.md b/docs/src/main/paradox/stream/operators/Source/single.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Source/single.md
rename to docs/src/main/paradox/stream/operators/Source/single.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/tick.md b/docs/src/main/paradox/stream/operators/Source/tick.md
similarity index 75%
rename from akka-docs/src/main/paradox/stream/operators/Source/tick.md
rename to docs/src/main/paradox/stream/operators/Source/tick.md
index 40598c386f..d0a762579d 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/tick.md
+++ b/docs/src/main/paradox/stream/operators/Source/tick.md
@@ -35,29 +35,29 @@ See also:
This first example prints to standard out periodically:
Scala
-: @@snip [Tick.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Tick.scala) { #simple }
+: @@snip [Tick.scala](/docs/src/test/scala/docs/stream/operators/source/Tick.scala) { #simple }
Java
-: @@snip [Tick.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Tick.java) { #simple }
+: @@snip [Tick.java](/docs/src/test/java/jdocs/stream/operators/source/Tick.java) { #simple }
You can also use the tick to periodically emit a value, in this sample we use the tick to trigger a query to an
actor using @ref:[ask](../../../typed/interaction-patterns.md#outside-ask) and emit the response downstream. For this
usage, what is important is that it was emitted, not the actual tick value.
Scala
-: @@snip [Tick.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Tick.scala) { #poll-actor }
+: @@snip [Tick.scala](/docs/src/test/scala/docs/stream/operators/source/Tick.scala) { #poll-actor }
Java
-: @@snip [Tick.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Tick.java) { #poll-actor }
+: @@snip [Tick.java](/docs/src/test/java/jdocs/stream/operators/source/Tick.java) { #poll-actor }
A neat trick is to combine this with @ref:[zipLatest](../Source-or-Flow/zipLatest.md) to combine a stream of elements
with a value that is updated periodically instead of having to trigger a query for each element:
Scala
-: @@snip [Tick.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Tick.scala) { #zip-latest }
+: @@snip [Tick.scala](/docs/src/test/scala/docs/stream/operators/source/Tick.scala) { #zip-latest }
Java
-: @@snip [Tick.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Tick.java) { #zip-latest }
+: @@snip [Tick.java](/docs/src/test/java/jdocs/stream/operators/source/Tick.java) { #zip-latest }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/unfold.md b/docs/src/main/paradox/stream/operators/Source/unfold.md
similarity index 82%
rename from akka-docs/src/main/paradox/stream/operators/Source/unfold.md
rename to docs/src/main/paradox/stream/operators/Source/unfold.md
index 4a1c092faa..4940e1ccd0 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/unfold.md
+++ b/docs/src/main/paradox/stream/operators/Source/unfold.md
@@ -26,19 +26,19 @@ Note that for unfolding a source of elements through a blocking API, such as a n
This first sample starts at a user provided integer and counts down to zero using `unfold` :
Scala
- : @@snip [Unfold.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Unfold.scala) { #countdown }
+ : @@snip [Unfold.scala](/docs/src/test/scala/docs/stream/operators/source/Unfold.scala) { #countdown }
Java
- : @@snip [Unfold.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Unfold.java) { #countdown }
+ : @@snip [Unfold.java](/docs/src/test/java/jdocs/stream/operators/source/Unfold.java) { #countdown }
It is also possible to express unfolds that don't have an end, which will never return @scala[`None`] @java[`Optional.empty`] and must be combined with for example `.take(n)` to not produce infinite streams. Here we have implemented the Fibonacci numbers (0, 1, 1, 2, 3, 5, 8, 13, etc.) with `unfold`:
Scala
- : @@snip [Unfold.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Unfold.scala) { #fibonacci }
+ : @@snip [Unfold.scala](/docs/src/test/scala/docs/stream/operators/source/Unfold.scala) { #fibonacci }
Java
- : @@snip [Unfold.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Unfold.java) { #fibonacci }
+ : @@snip [Unfold.java](/docs/src/test/java/jdocs/stream/operators/source/Unfold.java) { #fibonacci }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/unfoldAsync.md b/docs/src/main/paradox/stream/operators/Source/unfoldAsync.md
similarity index 74%
rename from akka-docs/src/main/paradox/stream/operators/Source/unfoldAsync.md
rename to docs/src/main/paradox/stream/operators/Source/unfoldAsync.md
index 8f4408713b..74d70e1eab 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/unfoldAsync.md
+++ b/docs/src/main/paradox/stream/operators/Source/unfoldAsync.md
@@ -21,10 +21,10 @@ Can be used to implement many stateful sources without having to touch the more
In this example we are asking an imaginary actor for chunks of bytes from an offset with a protocol like this:
Scala
-: @@snip [UnfoldAsync.scala](/akka-docs/src/test/scala/docs/stream/operators/source/UnfoldAsync.scala) { #unfoldAsync-actor-protocol }
+: @@snip [UnfoldAsync.scala](/docs/src/test/scala/docs/stream/operators/source/UnfoldAsync.scala) { #unfoldAsync-actor-protocol }
Java
-: @@snip [UnfoldAsync.java](/akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldAsync.java) { #unfoldAsync-actor-protocol }
+: @@snip [UnfoldAsync.java](/docs/src/test/java/jdocs/stream/operators/source/UnfoldAsync.java) { #unfoldAsync-actor-protocol }
The actor will reply with the `Chunk` message, if we ask for an offset outside of the end of the data the actor will respond with an empty `ByteString`
@@ -32,10 +32,10 @@ The actor will reply with the `Chunk` message, if we ask for an offset outside o
We want to represent this as a stream of `ByteString`s that complete when we reach the end, to achieve this we use the offset as the state passed between `unfoldAsync` invocations:
Scala
-: @@snip [UnfoldAsync.scala](/akka-docs/src/test/scala/docs/stream/operators/source/UnfoldAsync.scala) { #unfoldAsync }
+: @@snip [UnfoldAsync.scala](/docs/src/test/scala/docs/stream/operators/source/UnfoldAsync.scala) { #unfoldAsync }
Java
-: @@snip [UnfoldAsync.java](/akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldAsync.java) { #unfoldAsync }
+: @@snip [UnfoldAsync.java](/docs/src/test/java/jdocs/stream/operators/source/UnfoldAsync.java) { #unfoldAsync }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/unfoldResource.md b/docs/src/main/paradox/stream/operators/Source/unfoldResource.md
similarity index 82%
rename from akka-docs/src/main/paradox/stream/operators/Source/unfoldResource.md
rename to docs/src/main/paradox/stream/operators/Source/unfoldResource.md
index 52702c98bf..d47becf570 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/unfoldResource.md
+++ b/docs/src/main/paradox/stream/operators/Source/unfoldResource.md
@@ -32,18 +32,18 @@ on retrieving each result from the query. It also gives us an iterator like way
the end of the result and a close method that must be called to free resources:
Scala
-: @@snip [UnfoldResource.scala](/akka-docs/src/test/scala/docs/stream/operators/source/UnfoldResource.scala) { #unfoldResource-blocking-api }
+: @@snip [UnfoldResource.scala](/docs/src/test/scala/docs/stream/operators/source/UnfoldResource.scala) { #unfoldResource-blocking-api }
Java
-: @@snip [UnfoldResource.java](/akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldResource.java) { #unfoldResource-blocking-api }
+: @@snip [UnfoldResource.java](/docs/src/test/java/jdocs/stream/operators/source/UnfoldResource.java) { #unfoldResource-blocking-api }
Let's see how we use the API above safely through `unfoldResource`:
Scala
-: @@snip [UnfoldResource.scala](/akka-docs/src/test/scala/docs/stream/operators/source/UnfoldResource.scala) { #unfoldResource }
+: @@snip [UnfoldResource.scala](/docs/src/test/scala/docs/stream/operators/source/UnfoldResource.scala) { #unfoldResource }
Java
-: @@snip [UnfoldResource.java](/akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldResource.java) { #unfoldResource }
+: @@snip [UnfoldResource.java](/docs/src/test/java/jdocs/stream/operators/source/UnfoldResource.java) { #unfoldResource }
If the resource produces more than one element at a time, combining `unfoldResource` with
@scala[`mapConcat(identity)`]@java[`mapConcat(elems -> elems)`] will give you a stream of individual elements.
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/unfoldResourceAsync.md b/docs/src/main/paradox/stream/operators/Source/unfoldResourceAsync.md
similarity index 84%
rename from akka-docs/src/main/paradox/stream/operators/Source/unfoldResourceAsync.md
rename to docs/src/main/paradox/stream/operators/Source/unfoldResourceAsync.md
index 622cd3d95d..04fae22493 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/unfoldResourceAsync.md
+++ b/docs/src/main/paradox/stream/operators/Source/unfoldResourceAsync.md
@@ -34,18 +34,18 @@ Imagine we have an async database API which we initially perform an async query
check if there are more results in an asynchronous way.
Scala
-: @@snip [UnfoldResourceAsync.scala](/akka-docs/src/test/scala/docs/stream/operators/source/UnfoldResourceAsync.scala) { #unfoldResource-async-api }
+: @@snip [UnfoldResourceAsync.scala](/docs/src/test/scala/docs/stream/operators/source/UnfoldResourceAsync.scala) { #unfoldResource-async-api }
Java
-: @@snip [UnfoldResourceAsync.java](/akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldResourceAsync.java) { #unfoldResource-async-api }
+: @@snip [UnfoldResourceAsync.java](/docs/src/test/java/jdocs/stream/operators/source/UnfoldResourceAsync.java) { #unfoldResource-async-api }
Let's see how we use the API above safely through `unfoldResourceAsync`:
Scala
-: @@snip [UnfoldResourceAsync.scala](/akka-docs/src/test/scala/docs/stream/operators/source/UnfoldResourceAsync.scala) { #unfoldResourceAsync }
+: @@snip [UnfoldResourceAsync.scala](/docs/src/test/scala/docs/stream/operators/source/UnfoldResourceAsync.scala) { #unfoldResourceAsync }
Java
-: @@snip [UnfoldResource.java](/akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldResourceAsync.java) { #unfoldResourceAsync }
+: @@snip [UnfoldResource.java](/docs/src/test/java/jdocs/stream/operators/source/UnfoldResourceAsync.java) { #unfoldResourceAsync }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/zipN.md b/docs/src/main/paradox/stream/operators/Source/zipN.md
similarity index 89%
rename from akka-docs/src/main/paradox/stream/operators/Source/zipN.md
rename to docs/src/main/paradox/stream/operators/Source/zipN.md
index e9e67015fb..f727134882 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/zipN.md
+++ b/docs/src/main/paradox/stream/operators/Source/zipN.md
@@ -29,10 +29,10 @@ In this sample we zip a stream of characters, a stream of numbers and a stream o
where each element is a @scala[`Vector`]@java[`List`] of `[character, number, color]`:
Scala
-: @@snip [Zip.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Zip.scala) { #zipN-simple }
+: @@snip [Zip.scala](/docs/src/test/scala/docs/stream/operators/source/Zip.scala) { #zipN-simple }
Java
-: @@snip [Zip.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Zip.java) { #zipN-simple }
+: @@snip [Zip.java](/docs/src/test/java/jdocs/stream/operators/source/Zip.java) { #zipN-simple }
Note how it stops as soon as any of the original sources reaches its end.
diff --git a/akka-docs/src/main/paradox/stream/operators/Source/zipWithN.md b/docs/src/main/paradox/stream/operators/Source/zipWithN.md
similarity index 88%
rename from akka-docs/src/main/paradox/stream/operators/Source/zipWithN.md
rename to docs/src/main/paradox/stream/operators/Source/zipWithN.md
index 352c0b5a62..63c688fdc0 100644
--- a/akka-docs/src/main/paradox/stream/operators/Source/zipWithN.md
+++ b/docs/src/main/paradox/stream/operators/Source/zipWithN.md
@@ -29,10 +29,10 @@ In this sample we zip three streams of integers and for each zipped sequence of
and send downstream:
Scala
-: @@snip [Zip.scala](/akka-docs/src/test/scala/docs/stream/operators/source/Zip.scala) { #zipWithN-simple }
+: @@snip [Zip.scala](/docs/src/test/scala/docs/stream/operators/source/Zip.scala) { #zipWithN-simple }
Java
-: @@snip [Zip.java](/akka-docs/src/test/java/jdocs/stream/operators/source/Zip.java) { #zipWithN-simple }
+: @@snip [Zip.java](/docs/src/test/java/jdocs/stream/operators/source/Zip.java) { #zipWithN-simple }
Note how it stops as soon as any of the original sources reaches its end.
diff --git a/akka-docs/src/main/paradox/stream/operators/StreamConverters/asInputStream.md b/docs/src/main/paradox/stream/operators/StreamConverters/asInputStream.md
similarity index 80%
rename from akka-docs/src/main/paradox/stream/operators/StreamConverters/asInputStream.md
rename to docs/src/main/paradox/stream/operators/StreamConverters/asInputStream.md
index 0ea651a8f5..66cfe5370f 100644
--- a/akka-docs/src/main/paradox/stream/operators/StreamConverters/asInputStream.md
+++ b/docs/src/main/paradox/stream/operators/StreamConverters/asInputStream.md
@@ -29,7 +29,7 @@ The `InputStream` will be ended when the stream flowing into this `Sink` complet
Here is an example of a @apidoc[Sink] that reads the contents from the source, converts it into uppercase and materializes into a @javadoc[java.io.InputStream](java.io.InputStream)
Scala
-: @@snip [ToFromJavaIOStreams.scala](/akka-docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala) { #asJavaInputStream }
+: @@snip [ToFromJavaIOStreams.scala](/docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala) { #asJavaInputStream }
Java
-: @@snip [ToFromJavaIOStreams.java](/akka-docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java) { #asJavaInputStream }
+: @@snip [ToFromJavaIOStreams.java](/docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java) { #asJavaInputStream }
diff --git a/akka-docs/src/main/paradox/stream/operators/StreamConverters/asJavaStream.md b/docs/src/main/paradox/stream/operators/StreamConverters/asJavaStream.md
similarity index 80%
rename from akka-docs/src/main/paradox/stream/operators/StreamConverters/asJavaStream.md
rename to docs/src/main/paradox/stream/operators/StreamConverters/asJavaStream.md
index 2aa8b0260f..33616fcab7 100644
--- a/akka-docs/src/main/paradox/stream/operators/StreamConverters/asJavaStream.md
+++ b/docs/src/main/paradox/stream/operators/StreamConverters/asJavaStream.md
@@ -23,10 +23,10 @@ Be aware that Java `Stream` blocks current thread while waiting on next element
Here is an example of a @apidoc[Sink] that materializes into a @javadoc[java.util.stream.Stream](java.util.stream.Stream).
Scala
-: @@snip [StreamConvertersToJava.scala](/akka-docs/src/test/scala/docs/stream/operators/converters/StreamConvertersToJava.scala) { #import #asJavaStream }
+: @@snip [StreamConvertersToJava.scala](/docs/src/test/scala/docs/stream/operators/converters/StreamConvertersToJava.scala) { #import #asJavaStream }
Java
-: @@snip [StreamConvertersToJava.java](/akka-docs/src/test/java/jdocs/stream/operators/converters/StreamConvertersToJava.java) { #import #asJavaStream }
+: @@snip [StreamConvertersToJava.java](/docs/src/test/java/jdocs/stream/operators/converters/StreamConvertersToJava.java) { #import #asJavaStream }
## Reactive Streams semantics
diff --git a/akka-docs/src/main/paradox/stream/operators/StreamConverters/asOutputStream.md b/docs/src/main/paradox/stream/operators/StreamConverters/asOutputStream.md
similarity index 80%
rename from akka-docs/src/main/paradox/stream/operators/StreamConverters/asOutputStream.md
rename to docs/src/main/paradox/stream/operators/StreamConverters/asOutputStream.md
index d14473645a..f600a43900 100644
--- a/akka-docs/src/main/paradox/stream/operators/StreamConverters/asOutputStream.md
+++ b/docs/src/main/paradox/stream/operators/StreamConverters/asOutputStream.md
@@ -28,7 +28,7 @@ closing the `OutputStream` will complete the `Source`.
Here is an example of a @apidoc[Source] that materializes into a @javadoc[java.io.OutputStream](java.io.OutputStream), and is connected to a Sink which concatenates the incoming @apidoc[util.ByteString]s
Scala
-: @@snip [ToFromJavaIOStreams.scala](/akka-docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala) { #asJavaOutputStream }
+: @@snip [ToFromJavaIOStreams.scala](/docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala) { #asJavaOutputStream }
Java
-: @@snip [ToFromJavaIOStreams.java](/akka-docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java) { #asJavaOutputStream }
+: @@snip [ToFromJavaIOStreams.java](/docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java) { #asJavaOutputStream }
diff --git a/akka-docs/src/main/paradox/stream/operators/StreamConverters/fromInputStream.md b/docs/src/main/paradox/stream/operators/StreamConverters/fromInputStream.md
similarity index 85%
rename from akka-docs/src/main/paradox/stream/operators/StreamConverters/fromInputStream.md
rename to docs/src/main/paradox/stream/operators/StreamConverters/fromInputStream.md
index dcdca392db..ae38fa6930 100644
--- a/akka-docs/src/main/paradox/stream/operators/StreamConverters/fromInputStream.md
+++ b/docs/src/main/paradox/stream/operators/StreamConverters/fromInputStream.md
@@ -34,8 +34,8 @@ Here is an example using both `fromInputStream` and `fromOutputStream` to read f
uppercase the read content and write back out into a `java.io.OutputStream`.
Scala
-: @@snip [ToFromJavaIOStreams.scala](/akka-docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala) { #tofromJavaIOStream }
+: @@snip [ToFromJavaIOStreams.scala](/docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala) { #tofromJavaIOStream }
Java
-: @@snip [ToFromJavaIOStreams.java](/akka-docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java) { #tofromJavaIOStream }
+: @@snip [ToFromJavaIOStreams.java](/docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java) { #tofromJavaIOStream }
diff --git a/akka-docs/src/main/paradox/stream/operators/StreamConverters/fromJavaStream.md b/docs/src/main/paradox/stream/operators/StreamConverters/fromJavaStream.md
similarity index 67%
rename from akka-docs/src/main/paradox/stream/operators/StreamConverters/fromJavaStream.md
rename to docs/src/main/paradox/stream/operators/StreamConverters/fromJavaStream.md
index 9fa4cca814..7b9c55ef73 100644
--- a/akka-docs/src/main/paradox/stream/operators/StreamConverters/fromJavaStream.md
+++ b/docs/src/main/paradox/stream/operators/StreamConverters/fromJavaStream.md
@@ -13,7 +13,7 @@ Create a source that wraps a Java 8 `java.util.stream.Stream`.
Here is an example of a @apidoc[Source] created from a @javadoc[java.util.stream.Stream](java.util.stream.Stream).
Scala
-: @@snip [StreamConvertersToJava.scala](/akka-docs/src/test/scala/docs/stream/operators/converters/StreamConvertersToJava.scala) { #import #fromJavaStream }
+: @@snip [StreamConvertersToJava.scala](/docs/src/test/scala/docs/stream/operators/converters/StreamConvertersToJava.scala) { #import #fromJavaStream }
Java
-: @@snip [StreamConvertersToJava.java](/akka-docs/src/test/java/jdocs/stream/operators/converters/StreamConvertersToJava.java) { #import #fromJavaStream }
+: @@snip [StreamConvertersToJava.java](/docs/src/test/java/jdocs/stream/operators/converters/StreamConvertersToJava.java) { #import #fromJavaStream }
diff --git a/akka-docs/src/main/paradox/stream/operators/StreamConverters/fromOutputStream.md b/docs/src/main/paradox/stream/operators/StreamConverters/fromOutputStream.md
similarity index 84%
rename from akka-docs/src/main/paradox/stream/operators/StreamConverters/fromOutputStream.md
rename to docs/src/main/paradox/stream/operators/StreamConverters/fromOutputStream.md
index 3b244fc804..21aec2ec9b 100644
--- a/akka-docs/src/main/paradox/stream/operators/StreamConverters/fromOutputStream.md
+++ b/docs/src/main/paradox/stream/operators/StreamConverters/fromOutputStream.md
@@ -30,8 +30,8 @@ Here is an example using both `fromInputStream` and `fromOutputStream` to read f
uppercase the read content and write back out into a `java.io.OutputStream`.
Scala
-: @@snip [ToFromJavaIOStreams.scala](/akka-docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala) { #tofromJavaIOStream }
+: @@snip [ToFromJavaIOStreams.scala](/docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala) { #tofromJavaIOStream }
Java
-: @@snip [ToFromJavaIOStreams.java](/akka-docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java) { #tofromJavaIOStream }
+: @@snip [ToFromJavaIOStreams.java](/docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java) { #tofromJavaIOStream }
diff --git a/akka-docs/src/main/paradox/stream/operators/StreamConverters/javaCollector.md b/docs/src/main/paradox/stream/operators/StreamConverters/javaCollector.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/StreamConverters/javaCollector.md
rename to docs/src/main/paradox/stream/operators/StreamConverters/javaCollector.md
diff --git a/akka-docs/src/main/paradox/stream/operators/StreamConverters/javaCollectorParallelUnordered.md b/docs/src/main/paradox/stream/operators/StreamConverters/javaCollectorParallelUnordered.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/StreamConverters/javaCollectorParallelUnordered.md
rename to docs/src/main/paradox/stream/operators/StreamConverters/javaCollectorParallelUnordered.md
diff --git a/akka-docs/src/main/paradox/stream/operators/Unzip.md b/docs/src/main/paradox/stream/operators/Unzip.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/Unzip.md
rename to docs/src/main/paradox/stream/operators/Unzip.md
diff --git a/akka-docs/src/main/paradox/stream/operators/UnzipWith.md b/docs/src/main/paradox/stream/operators/UnzipWith.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/UnzipWith.md
rename to docs/src/main/paradox/stream/operators/UnzipWith.md
diff --git a/akka-docs/src/main/paradox/stream/operators/index.md b/docs/src/main/paradox/stream/operators/index.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/operators/index.md
rename to docs/src/main/paradox/stream/operators/index.md
diff --git a/akka-docs/src/main/paradox/stream/reactive-streams-interop.md b/docs/src/main/paradox/stream/reactive-streams-interop.md
similarity index 58%
rename from akka-docs/src/main/paradox/stream/reactive-streams-interop.md
rename to docs/src/main/paradox/stream/reactive-streams-interop.md
index 5c96444ad1..7cef7b8b98 100644
--- a/akka-docs/src/main/paradox/stream/reactive-streams-interop.md
+++ b/docs/src/main/paradox/stream/reactive-streams-interop.md
@@ -34,34 +34,34 @@ Note that it is not possible to use `JavaFlowSupport` on Java 8 since the needed
The two most important interfaces in Reactive Streams are the `Publisher` and `Subscriber`.
Scala
-: @@snip [ReactiveStreamsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #imports }
+: @@snip [ReactiveStreamsDocSpec.scala](/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #imports }
Java
-: @@snip [ReactiveStreamsDocTest.java](/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #imports }
+: @@snip [ReactiveStreamsDocTest.java](/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #imports }
Let us assume that a library provides a publisher of tweets:
Scala
-: @@snip [ReactiveStreamsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #tweets-publisher }
+: @@snip [ReactiveStreamsDocSpec.scala](/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #tweets-publisher }
Java
-: @@snip [ReactiveStreamsDocTest.java](/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #tweets-publisher }
+: @@snip [ReactiveStreamsDocTest.java](/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #tweets-publisher }
and another library knows how to store author handles in a database:
Scala
-: @@snip [ReactiveStreamsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #author-storage-subscriber }
+: @@snip [ReactiveStreamsDocSpec.scala](/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #author-storage-subscriber }
Java
-: @@snip [ReactiveStreamsDocTest.java](/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #author-storage-subscriber }
+: @@snip [ReactiveStreamsDocTest.java](/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #author-storage-subscriber }
Using an Akka Streams `Flow` we can transform the stream and connect those:
Scala
-: @@snip [ReactiveStreamsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #authors #connect-all }
+: @@snip [ReactiveStreamsDocSpec.scala](/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #authors #connect-all }
Java
-: @@snip [ReactiveStreamsDocTest.java](/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #authors #connect-all }
+: @@snip [ReactiveStreamsDocTest.java](/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #authors #connect-all }
The `Publisher` is used as an input `Source` to the flow and the
`Subscriber` is used as an output `Sink`.
@@ -71,10 +71,10 @@ materializes to a `Processor` when `run()` is called. `run()` itself can be call
times, resulting in a new `Processor` instance each time.
Scala
-: @@snip [ReactiveStreamsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #flow-publisher-subscriber }
+: @@snip [ReactiveStreamsDocSpec.scala](/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #flow-publisher-subscriber }
Java
-: @@snip [ReactiveStreamsDocTest.java](/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #flow-publisher-subscriber }
+: @@snip [ReactiveStreamsDocTest.java](/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #flow-publisher-subscriber }
A publisher can be connected to a subscriber with the `subscribe` method.
@@ -82,10 +82,10 @@ It is also possible to expose a `Source` as a `Publisher`
by using the Publisher-`Sink`:
Scala
-: @@snip [ReactiveStreamsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #source-publisher }
+: @@snip [ReactiveStreamsDocSpec.scala](/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #source-publisher }
Java
-: @@snip [ReactiveStreamsDocTest.java](/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #source-publisher }
+: @@snip [ReactiveStreamsDocTest.java](/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #source-publisher }
A publisher that is created with @scala[`Sink.asPublisher(fanout = false)`]@java[`Sink.asPublisher(AsPublisher.WITHOUT_FANOUT)`] supports only a single subscription.
Additional subscription attempts will be rejected with an `IllegalStateException`.
@@ -93,17 +93,17 @@ Additional subscription attempts will be rejected with an `IllegalStateException
A publisher that supports multiple subscribers using fan-out/broadcasting is created as follows:
Scala
-: @@snip [ReactiveStreamsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #author-alert-subscriber #author-storage-subscriber }
+: @@snip [ReactiveStreamsDocSpec.scala](/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #author-alert-subscriber #author-storage-subscriber }
Java
-: @@snip [ReactiveStreamsDocTest.java](/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #author-alert-subscriber #author-storage-subscriber }
+: @@snip [ReactiveStreamsDocTest.java](/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #author-alert-subscriber #author-storage-subscriber }
Scala
-: @@snip [ReactiveStreamsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #source-fanoutPublisher }
+: @@snip [ReactiveStreamsDocSpec.scala](/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #source-fanoutPublisher }
Java
-: @@snip [ReactiveStreamsDocTest.java](/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #source-fanoutPublisher }
+: @@snip [ReactiveStreamsDocTest.java](/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #source-fanoutPublisher }
The input buffer size of the operator controls how far apart the slowest subscriber can be from the fastest subscriber
before slowing down the stream.
@@ -112,19 +112,19 @@ To make the picture complete, it is also possible to expose a `Sink` as a `Subsc
by using the Subscriber-`Source`:
Scala
-: @@snip [ReactiveStreamsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #sink-subscriber }
+: @@snip [ReactiveStreamsDocSpec.scala](/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #sink-subscriber }
Java
-: @@snip [ReactiveStreamsDocTest.java](/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #sink-subscriber }
+: @@snip [ReactiveStreamsDocTest.java](/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #sink-subscriber }
It is also possible to use re-wrap `Processor` instances as a `Flow` by
passing a factory function that will create the `Processor` instances:
Scala
-: @@snip [ReactiveStreamsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #use-processor }
+: @@snip [ReactiveStreamsDocSpec.scala](/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala) { #use-processor }
Java
-: @@snip [ReactiveStreamsDocTest.java](/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #use-processor }
+: @@snip [ReactiveStreamsDocTest.java](/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java) { #use-processor }
Please note that a factory is necessary to achieve reusability of the resulting `Flow`.
diff --git a/akka-docs/src/main/paradox/stream/stream-composition.md b/docs/src/main/paradox/stream/stream-composition.md
similarity index 82%
rename from akka-docs/src/main/paradox/stream/stream-composition.md
rename to docs/src/main/paradox/stream/stream-composition.md
index 9d3ebb2cec..8e212fe8de 100644
--- a/akka-docs/src/main/paradox/stream/stream-composition.md
+++ b/docs/src/main/paradox/stream/stream-composition.md
@@ -82,10 +82,10 @@ with the rest of the graph), but this demonstrates the uniform underlying model.
If we try to build a code snippet that corresponds to the above diagram, our first try might look like this:
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #non-nested-flow }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #non-nested-flow }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #non-nested-flow }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #non-nested-flow }
It is clear however that there is no nesting present in our first attempt. Since the library cannot figure out
@@ -96,10 +96,10 @@ methods `withAttributes()` or `named()` (where the latter is a shorthand for add
The following code demonstrates how to achieve the desired nesting:
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #nested-flow }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #nested-flow }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #nested-flow }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #nested-flow }
Once we have hidden the internals of our components, they act like any other built-in component of similar shape. If
we hide some of the internals of our composites, the result looks just like if any other predefine component has been
@@ -111,10 +111,10 @@ If we look at usage of built-in components, and our custom components, there is
snippet below demonstrates.
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #reuse }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #reuse }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #reuse }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #reuse }
## Composing complex systems
@@ -135,20 +135,20 @@ directed and non-directed cycles. The `runnable()` method of the `GraphDSL` obje
general, closed, and runnable graph. For example the network on the diagram can be realized like this:
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #complex-graph }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #complex-graph }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #complex-graph }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #complex-graph }
In the code above we used the implicit port numbering feature (to make the graph more readable and similar to the diagram)
and we imported `Source` s, `Sink` s and `Flow` s explicitly. It is possible to refer to the ports
explicitly, and it is not necessary to import our linear operators via `add()`, so another version might look like this:
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #complex-graph-alt }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #complex-graph-alt }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #complex-graph-alt }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #complex-graph-alt }
Similar to the case in the first section, so far we have not considered modularity. We created a complex graph, but
the layout is flat, not modularized. We will modify our example, and create a reusable component with the graph DSL.
@@ -160,10 +160,10 @@ from the previous example, what remains is a partial graph:
We can recreate a similar graph in code, using the DSL in a similar way than before:
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #partial-graph }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #partial-graph }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #partial-graph }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #partial-graph }
The only new addition is the return value of the builder block, which is a `Shape`. All operators (including
`Source`, `BidiFlow`, etc.) have a shape, which encodes the *typed* ports of the module. In our example
@@ -179,10 +179,10 @@ it is a good practice to give names to modules to help debugging.
Since our partial graph has the right shape, it can be already used in the simpler, linear DSL:
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #partial-use }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #partial-use }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #partial-use }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #partial-use }
It is not possible to use it as a `Flow` yet, though (i.e. we cannot call `.filter()` on it), but `Flow`
has a `fromGraph()` method that adds the DSL to a `FlowShape`. There are similar methods on `Source`,
@@ -195,10 +195,10 @@ To demonstrate this, we will create the following graph:
The code version of the above closed graph might look like this:
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #partial-flow-dsl }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #partial-flow-dsl }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #partial-flow-dsl }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #partial-flow-dsl }
@@@ note
@@ -211,10 +211,10 @@ We are still in debt of demonstrating that `RunnableGraph` is a component like a
be embedded in graphs. In the following snippet we embed one closed graph in another:
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #embed-closed }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #embed-closed }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #embed-closed }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #embed-closed }
The type of the imported module indicates that the imported module has a `ClosedShape`, and so we are not
able to wire it to anything else inside the enclosing closed graph. Nevertheless, this "island" is embedded properly,
@@ -261,20 +261,20 @@ materialized type of @scala[`Promise[[Option[Int]]`] @java[`CompletableFuture`], and we propagate this to the parent by using `Keep.right`
as the combiner function (indicated by the color *yellow* on the diagram):
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #mat-combine-2 }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #mat-combine-2 }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #mat-combine-2 }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #mat-combine-2 }
As a third step, we create a composite `Sink`, using our `nestedFlow` as a building block. In this snippet, both
the enclosed `Flow` and the folding `Sink` has a materialized value that is interesting for us, so
@@ -282,10 +282,10 @@ we use `Keep.both` to get a `Pair` of them as the materialized type of `nestedSi
*blue* on the diagram)
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #mat-combine-3 }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #mat-combine-3 }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #mat-combine-3 }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #mat-combine-3 }
As the last example, we wire together `nestedSource` and `nestedSink` and we use a custom combiner function to
create a yet another materialized type of the resulting `RunnableGraph`. This combiner function ignores
@@ -293,12 +293,12 @@ the @scala[`Future[String]`] @java[`CompletionStage`] part, and wraps th
(indicated by color *purple* on the diagram):
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #mat-combine-4 }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #mat-combine-4 }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #mat-combine-4a }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #mat-combine-4a }
- @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #mat-combine-4b }
+ @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #mat-combine-4b }
@@@ note
@@ -327,10 +327,10 @@ on others. _Note_ that this is only to show how attributes inheritance works, th
have any specific effect when running these streams:
Scala
-: @@snip [CompositionDocSpec.scala](/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #attributes-inheritance }
+: @@snip [CompositionDocSpec.scala](/docs/src/test/scala/docs/stream/CompositionDocSpec.scala) { #attributes-inheritance }
Java
-: @@snip [CompositionDocTest.java](/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #attributes-inheritance }
+: @@snip [CompositionDocTest.java](/docs/src/test/java/jdocs/stream/CompositionDocTest.java) { #attributes-inheritance }
The effect is, that each module inherits the `inputBuffer` attribute from its enclosing parent, unless it has
the same attribute explicitly set. `nestedSource` gets the default attributes from the materializer itself. `nestedSink`
diff --git a/akka-docs/src/main/paradox/stream/stream-context.md b/docs/src/main/paradox/stream/stream-context.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/stream-context.md
rename to docs/src/main/paradox/stream/stream-context.md
diff --git a/akka-docs/src/main/paradox/stream/stream-cookbook.md b/docs/src/main/paradox/stream/stream-cookbook.md
similarity index 72%
rename from akka-docs/src/main/paradox/stream/stream-cookbook.md
rename to docs/src/main/paradox/stream/stream-cookbook.md
index cb37f999e3..70fb9f549c 100644
--- a/akka-docs/src/main/paradox/stream/stream-cookbook.md
+++ b/docs/src/main/paradox/stream/stream-cookbook.md
@@ -41,19 +41,19 @@ The simplest solution is to use a `map` operation and use `println` to print the
While this recipe is rather simplistic, it is often suitable for a quick debug session.
Scala
-: @@snip [RecipeLoggingElements.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeLoggingElements.scala) { #println-debug }
+: @@snip [RecipeLoggingElements.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeLoggingElements.scala) { #println-debug }
Java
-: @@snip [RecipeLoggingElements.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeLoggingElements.java) { #println-debug }
+: @@snip [RecipeLoggingElements.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeLoggingElements.java) { #println-debug }
Another approach to logging is to use `log()` operation. This approach gives you more fine-grained control of logging levels for
elements flowing through the stream, finish and failure of the stream.
Scala
-: @@snip [RecipeLoggingElements.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeLoggingElements.scala) { #log-custom }
+: @@snip [RecipeLoggingElements.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeLoggingElements.scala) { #log-custom }
Java
-: @@snip [RecipeLoggingElements.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeLoggingElements.java) { #log-custom }
+: @@snip [RecipeLoggingElements.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeLoggingElements.java) { #log-custom }
### Creating a source that continuously evaluates a function
@@ -63,10 +63,10 @@ The simplest implementation is to use a `Source.repeat` that produces some arbit
and then map those elements to the function evaluation. E.g. if we have some `builderFunction()`, we can use:
Scala
-: @@snip [RecipeSourceFromFunction.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSourceFromFunction.scala) { #source-from-function }
+: @@snip [RecipeSourceFromFunction.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeSourceFromFunction.scala) { #source-from-function }
Java
-: @@snip [RecipeSourceFromFunction.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSourceFromFunction.java) { #source-from-function }
+: @@snip [RecipeSourceFromFunction.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSourceFromFunction.java) { #source-from-function }
Note: if the element-builder function touches mutable state, then a guaranteed single-threaded source should be used
instead; e.g. `Source.unfold` or `Source.unfoldResource`.
@@ -81,10 +81,10 @@ in the form of @scala[`In => immutable.Seq[Out]`] @java[`In -> List`]. In t
collection itself, so we can call @scala[`mapConcat(identity)`] @java[`mapConcat(l -> l)`].
Scala
-: @@snip [RecipeFlattenSeq.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeFlattenSeq.scala) { #flattening-seqs }
+: @@snip [RecipeFlattenSeq.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeFlattenSeq.scala) { #flattening-seqs }
Java
-: @@snip [RecipeFlattenList.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeFlattenList.java) { #flattening-lists }
+: @@snip [RecipeFlattenList.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeFlattenList.java) { #flattening-lists }
### Draining a stream to a strict collection
@@ -98,18 +98,18 @@ The function `limit` or `take` should always be used in conjunction in order to
For example, this is best avoided:
Scala
-: @@snip [RecipeSeq.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSeq.scala) { #draining-to-seq-unsafe }
+: @@snip [RecipeSeq.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeSeq.scala) { #draining-to-seq-unsafe }
Java
-: @@snip [RecipeSeq.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSeq.java) { #draining-to-list-unsafe }
+: @@snip [RecipeSeq.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSeq.java) { #draining-to-list-unsafe }
Rather, use `limit` or `take` to ensure that the resulting @scala[`Seq`] @java[`List`] will contain only up to @scala[`max`] @java[`MAX_ALLOWED_SIZE`] elements:
Scala
-: @@snip [RecipeSeq.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSeq.scala) { #draining-to-seq-safe }
+: @@snip [RecipeSeq.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeSeq.scala) { #draining-to-seq-safe }
Java
-: @@snip [RecipeSeq.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSeq.java) { #draining-to-list-safe }
+: @@snip [RecipeSeq.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSeq.java) { #draining-to-list-safe }
### Calculating the digest of a ByteString stream
@@ -127,11 +127,11 @@ be no downstream demand. Instead we call `emit` which will temporarily replace t
demand comes in and then reset the operator state. It will then complete the operator.
Scala
-: @@snip [RecipeDigest.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeDigest.scala) { #calculating-digest }
+: @@snip [RecipeDigest.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeDigest.scala) { #calculating-digest }
Java
-: @@snip [RecipeDigest.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDigest.java) { #calculating-digest }
-: @@snip [RecipeDigest.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDigest.java) { #calculating-digest2 }
+: @@snip [RecipeDigest.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDigest.java) { #calculating-digest }
+: @@snip [RecipeDigest.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDigest.java) { #calculating-digest2 }
### Parsing lines from a stream of ByteStrings
@@ -143,10 +143,10 @@ needs to be parsed.
The `Framing` helper @scala[object] @java[class] contains a convenience method to parse messages from a stream of `ByteString` s:
Scala
-: @@snip [RecipeParseLines.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeParseLines.scala) { #parse-lines }
+: @@snip [RecipeParseLines.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeParseLines.scala) { #parse-lines }
Java
-: @@snip [RecipeParseLines.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeParseLines.java) { #parse-lines }
+: @@snip [RecipeParseLines.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeParseLines.java) { #parse-lines }
### Dealing with compressed data streams
@@ -156,10 +156,10 @@ The `Compression` helper @scala[object] @java[class] contains convenience method
Gzip or Deflate.
Scala
-: @@snip [RecipeDecompress.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeDecompress.scala) { #decompress-gzip }
+: @@snip [RecipeDecompress.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeDecompress.scala) { #decompress-gzip }
Java
-: @@snip [RecipeDecompress.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDecompress.java) { #decompress-gzip }
+: @@snip [RecipeDecompress.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDecompress.java) { #decompress-gzip }
### Implementing a Splitter
@@ -172,10 +172,10 @@ that we have a stream containing strings. Each string contains a few numbers sep
of this a stream that only contains the numbers.
Scala
-: @@snip [RecipeSplitter.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSplitter.scala) { #Simple-Split }
+: @@snip [RecipeSplitter.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeSplitter.scala) { #Simple-Split }
Java
-: @@snip [RecipeSplitter.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSplitter.java) { #Simple-Split }
+: @@snip [RecipeSplitter.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSplitter.java) { #Simple-Split }
### Implementing a Splitter and Aggregator
@@ -189,10 +189,10 @@ Let's say that now we want to create a new stream containing the sums of the num
Scala
-: @@snip [RecipeSplitter.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSplitter.scala) { #Aggregate-Split }
+: @@snip [RecipeSplitter.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeSplitter.scala) { #Aggregate-Split }
Java
-: @@snip [RecipeSplitter.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSplitter.java) { #Aggregate-Split }
+: @@snip [RecipeSplitter.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSplitter.java) { #Aggregate-Split }
While in real life this solution is overkill for such a simple problem (you can just do everything in a map),
more complex scenarios, involving in particular I/O, will benefit from the fact that you can parallelize sub-streams
@@ -226,10 +226,10 @@ number then the stream cannot continue without violating its resource bound, in
this case `groupBy` will terminate with a failure.
Scala
-: @@snip [RecipeReduceByKey.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeReduceByKey.scala) { #word-count }
+: @@snip [RecipeReduceByKey.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeReduceByKey.scala) { #word-count }
Java
-: @@snip [RecipeReduceByKeyTest.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeReduceByKeyTest.java) { #word-count }
+: @@snip [RecipeReduceByKeyTest.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeReduceByKeyTest.java) { #word-count }
By extracting the parts specific to *wordcount* into
@@ -240,11 +240,11 @@ By extracting the parts specific to *wordcount* into
we get a generalized version below:
Scala
-: @@snip [RecipeReduceByKey.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeReduceByKey.scala) { #reduce-by-key-general }
+: @@snip [RecipeReduceByKey.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeReduceByKey.scala) { #reduce-by-key-general }
Java
-: @@snip [RecipeReduceByKeyTest.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeReduceByKeyTest.java) { #reduce-by-key-general }
-: @@snip [RecipeReduceByKeyTest.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeReduceByKeyTest.java) { #reduce-by-key-general2 }
+: @@snip [RecipeReduceByKeyTest.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeReduceByKeyTest.java) { #reduce-by-key-general }
+: @@snip [RecipeReduceByKeyTest.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeReduceByKeyTest.java) { #reduce-by-key-general2 }
@@@ note
@@ -269,10 +269,10 @@ will be emitted. This is achieved by using `mapConcat`
belongs to) and feed it into groupBy, using the topic as the group key.
Scala
-: @@snip [RecipeMultiGroupBy.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeMultiGroupBy.scala) { #multi-groupby }
+: @@snip [RecipeMultiGroupBy.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeMultiGroupBy.scala) { #multi-groupby }
Java
-: @@snip [RecipeMultiGroupByTest.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMultiGroupByTest.java) { #multi-groupby }
+: @@snip [RecipeMultiGroupByTest.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMultiGroupByTest.java) { #multi-groupby }
### Adhoc source
@@ -282,10 +282,10 @@ Also, you want to shut it down when there is no more demand, and start it up aga
You can achieve this behavior by combining `lazySource`, `backpressureTimeout` and `recoverWithRetries` as follows:
Scala
-: @@snip [RecipeAdhocSource.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeAdhocSource.scala) { #adhoc-source }
+: @@snip [RecipeAdhocSource.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeAdhocSource.scala) { #adhoc-source }
Java
-: @@snip [RecipeAdhocSourceTest.scala](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeAdhocSourceTest.java) { #adhoc-source }
+: @@snip [RecipeAdhocSourceTest.scala](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeAdhocSourceTest.java) { #adhoc-source }
## Working with Operators
@@ -302,10 +302,10 @@ This recipe solves the problem by zipping the stream of `Message` elements with
signals. Since `Zip` produces pairs, we map the output stream selecting the first element of the pair.
Scala
-: @@snip [RecipeManualTrigger.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeManualTrigger.scala) { #manually-triggered-stream }
+: @@snip [RecipeManualTrigger.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeManualTrigger.scala) { #manually-triggered-stream }
Java
-: @@snip [RecipeManualTrigger.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeManualTrigger.java) { #manually-triggered-stream }
+: @@snip [RecipeManualTrigger.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeManualTrigger.java) { #manually-triggered-stream }
Alternatively, instead of using a `Zip`, and then using `map` to get the first element of the pairs, we can avoid
creating the pairs in the first place by using `ZipWith` which takes a two argument function to produce the output
@@ -313,10 +313,10 @@ element. If this function would return a pair of the two argument it would be ex
`ZipWith` is a generalization of zipping.
Scala
-: @@snip [RecipeManualTrigger.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeManualTrigger.scala) { #manually-triggered-stream-zipwith }
+: @@snip [RecipeManualTrigger.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeManualTrigger.scala) { #manually-triggered-stream-zipwith }
Java
-: @@snip [RecipeManualTrigger.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeManualTrigger.java) { #manually-triggered-stream-zipwith }
+: @@snip [RecipeManualTrigger.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeManualTrigger.java) { #manually-triggered-stream-zipwith }
### Balancing jobs to a fixed pool of workers
@@ -335,11 +335,11 @@ we wire the outputs of these workers to a `Merge` element that will collect the
To make the worker operators run in parallel we mark them as asynchronous with *async*.
Scala
-: @@snip [RecipeWorkerPool.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeWorkerPool.scala) { #worker-pool }
+: @@snip [RecipeWorkerPool.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeWorkerPool.scala) { #worker-pool }
Java
-: @@snip [RecipeWorkerPool.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeWorkerPool.java) { #worker-pool }
-: @@snip [RecipeWorkerPool.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeWorkerPool.java) { #worker-pool2 }
+: @@snip [RecipeWorkerPool.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeWorkerPool.java) { #worker-pool }
+: @@snip [RecipeWorkerPool.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeWorkerPool.java) { #worker-pool2 }
## Working with rate
@@ -359,10 +359,10 @@ When the upstream is faster, the reducing process of the `conflate` starts. Our
the freshest element. This in a simple dropping operation.
Scala
-: @@snip [RecipeSimpleDrop.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSimpleDrop.scala) { #simple-drop }
+: @@snip [RecipeSimpleDrop.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeSimpleDrop.scala) { #simple-drop }
Java
-: @@snip [RecipeSimpleDrop.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSimpleDrop.java) { #simple-drop }
+: @@snip [RecipeSimpleDrop.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSimpleDrop.java) { #simple-drop }
There is a more general version of `conflate` named `conflateWithSeed` that allows to express more complex aggregations, more
similar to a `fold`.
@@ -380,11 +380,11 @@ between the different consumers (the buffer smooths out small rate variances), b
progress by dropping from the buffer of the slow consumers if necessary.
Scala
-: @@snip [RecipeDroppyBroadcast.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeDroppyBroadcast.scala) { #droppy-bcast }
+: @@snip [RecipeDroppyBroadcast.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeDroppyBroadcast.scala) { #droppy-bcast }
Java
-: @@snip [RecipeDroppyBroadcast.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDroppyBroadcast.java) { #droppy-bcast }
-: @@snip [RecipeDroppyBroadcast.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDroppyBroadcast.java) { #droppy-bcast2 }
+: @@snip [RecipeDroppyBroadcast.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDroppyBroadcast.java) { #droppy-bcast }
+: @@snip [RecipeDroppyBroadcast.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDroppyBroadcast.java) { #droppy-bcast2 }
### Collecting missed ticks
@@ -404,10 +404,10 @@ As a result, we have a flow of `Int` where the number represents the missed tick
able to consume the tick fast enough (i.e. zero means: 1 non-missed tick + 0 missed ticks)
Scala
-: @@snip [RecipeMissedTicks.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeMissedTicks.scala) { #missed-ticks }
+: @@snip [RecipeMissedTicks.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeMissedTicks.scala) { #missed-ticks }
Java
-: @@snip [RecipeMissedTicks.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMissedTicks.java) { #missed-ticks }
+: @@snip [RecipeMissedTicks.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMissedTicks.java) { #missed-ticks }
### Create a stream processor that repeats the last element seen
@@ -422,10 +422,10 @@ to feed the downstream if no upstream element is ready yet. In the `onPush()` ha
is very similar, we immediately relieve the downstream by emitting `currentValue`.
Scala
-: @@snip [RecipeHold.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeHold.scala) { #hold-version-1 }
+: @@snip [RecipeHold.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeHold.scala) { #hold-version-1 }
Java
-: @@snip [RecipeHold.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeHold.java) { #hold-version-1 }
+: @@snip [RecipeHold.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeHold.java) { #hold-version-1 }
While it is relatively simple, the drawback of the first version is that it needs an arbitrary initial element which is not
always possible to provide. Hence, we create a second version where the downstream might need to wait in one single
@@ -439,10 +439,10 @@ first element comes in we must check if there possibly already was demand from d
push the element directly.
Scala
-: @@snip [RecipeHold.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeHold.scala) { #hold-version-2 }
+: @@snip [RecipeHold.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeHold.scala) { #hold-version-2 }
Java
-: @@snip [RecipeHold.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeHold.java) { #hold-version-2 }
+: @@snip [RecipeHold.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeHold.java) { #hold-version-2 }
### Globally limiting the rate of a set of streams
@@ -463,20 +463,20 @@ message, we increment the pending permits counter and send a reply to each of th
waiting senders than permits available we will stay in the `closed` state.
Scala
-: @@snip [RecipeGlobalRateLimit.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeGlobalRateLimit.scala) { #global-limiter-actor }
+: @@snip [RecipeGlobalRateLimit.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeGlobalRateLimit.scala) { #global-limiter-actor }
Java
-: @@snip [RecipeGlobalRateLimit.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeGlobalRateLimit.java) { #global-limiter-actor }
+: @@snip [RecipeGlobalRateLimit.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeGlobalRateLimit.java) { #global-limiter-actor }
To create a Flow that uses this global limiter actor we use the `mapAsync` function with the combination of the `ask`
pattern. We also define a timeout, so if a reply is not received during the configured maximum wait period the returned
future from `ask` will fail, which will fail the corresponding stream as well.
Scala
-: @@snip [RecipeGlobalRateLimit.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeGlobalRateLimit.scala) { #global-limiter-flow }
+: @@snip [RecipeGlobalRateLimit.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeGlobalRateLimit.scala) { #global-limiter-flow }
Java
-: @@snip [RecipeGlobalRateLimit.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeGlobalRateLimit.java) { #global-limiter-flow }
+: @@snip [RecipeGlobalRateLimit.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeGlobalRateLimit.java) { #global-limiter-flow }
@@@ note
@@ -504,11 +504,11 @@ Both `onPush()` and `onPull()` calls `emitChunk()` the only difference is that t
the incoming chunk by appending to the end of the buffer.
Scala
-: @@snip [RecipeByteStrings.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeByteStrings.scala) { #bytestring-chunker }
+: @@snip [RecipeByteStrings.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeByteStrings.scala) { #bytestring-chunker }
Java
-: @@snip [RecipeByteStrings.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java) { #bytestring-chunker }
-: @@snip [RecipeByteStrings.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java) { #bytestring-chunker2 }
+: @@snip [RecipeByteStrings.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java) { #bytestring-chunker }
+: @@snip [RecipeByteStrings.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java) { #bytestring-chunker2 }
### Limit the number of bytes passing through a stream of ByteStrings
@@ -520,11 +520,11 @@ This recipe uses a @ref[`GraphStage`](stream-customize.md) to implement the desi
we signal failure, otherwise we forward the chunk we have received.
Scala
-: @@snip [RecipeByteStrings.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeByteStrings.scala) { #bytes-limiter }
+: @@snip [RecipeByteStrings.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeByteStrings.scala) { #bytes-limiter }
Java
-: @@snip [RecipeByteStrings.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java) { #bytes-limiter }
- @@snip [RecipeByteStrings.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java) { #bytes-limiter2 }
+: @@snip [RecipeByteStrings.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java) { #bytes-limiter }
+ @@snip [RecipeByteStrings.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java) { #bytes-limiter2 }
### Compact ByteStrings in a stream of ByteStrings
@@ -536,10 +536,10 @@ The recipe is a simple use of map, calling the `compact()` method of the `ByteSt
copying of the underlying arrays, so this should be the last element of a long chain if used.
Scala
-: @@snip [RecipeByteStrings.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeByteStrings.scala) { #compacting-bytestrings }
+: @@snip [RecipeByteStrings.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeByteStrings.scala) { #compacting-bytestrings }
Java
-: @@snip [RecipeByteStrings.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java) { #compacting-bytestrings }
+: @@snip [RecipeByteStrings.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java) { #compacting-bytestrings }
### Injecting keep-alive messages into a stream of ByteStrings
@@ -549,7 +549,7 @@ but only if this does not interfere with normal traffic.
There is a built-in operation that allows to do this directly:
Scala
-: @@snip [RecipeKeepAlive.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeKeepAlive.scala) { #inject-keepalive }
+: @@snip [RecipeKeepAlive.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeKeepAlive.scala) { #inject-keepalive }
Java
-: @@snip [RecipeKeepAlive.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeKeepAlive.java) { #inject-keepalive }
+: @@snip [RecipeKeepAlive.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeKeepAlive.java) { #inject-keepalive }
diff --git a/akka-docs/src/main/paradox/stream/stream-customize.md b/docs/src/main/paradox/stream/stream-customize.md
similarity index 89%
rename from akka-docs/src/main/paradox/stream/stream-customize.md
rename to docs/src/main/paradox/stream/stream-customize.md
index 23866aacf9..731d2d1fe8 100644
--- a/akka-docs/src/main/paradox/stream/stream-customize.md
+++ b/docs/src/main/paradox/stream/stream-customize.md
@@ -41,10 +41,10 @@ cancelled. To start, we need to define the "interface" of our operator, which is
(this is explained in more detail in the section @ref:[Modularity, Composition and Hierarchy](stream-composition.md)). This is how it looks:
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #boilerplate-example }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #boilerplate-example }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #simple-source }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #simple-source }
As you see, in itself the `GraphStage` only defines the ports of this operator and a shape that contains the ports.
It also has, a currently unimplemented method called @apidoc[createLogic](stage.GraphStage) {scala="#createLogic(inheritedAttributes:org.apache.pekko.stream.Attributes):org.apache.pekko.stream.stage.GraphStageLogic" java="#createLogic(org.apache.pekko.stream.Attributes)"}. If you recall, operators are reusable in multiple
@@ -69,7 +69,7 @@ to stop the operator, we don't need to override it. In the `onPull` callback we
is how it looks like in the end:
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #custom-source-example }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #custom-source-example }
Instances of the above @apidoc[stage.GraphStage] are subclasses of @scala[`Graph[SourceShape[Int],NotUsed]`] @java[`Graph,NotUsed>`] which means
that they are already usable in many situations, but do not provide the DSL methods we usually have for other
@@ -78,10 +78,10 @@ that they are already usable in many situations, but do not provide the DSL meth
source as any other built-in one:
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #simple-source-usage }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #simple-source-usage }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #simple-source-usage }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #simple-source-usage }
Similarly, to create a custom @apidoc[stream.*.Sink] one can register a subclass @apidoc[stage.InHandler] with the operator @apidoc[stream.Inlet].
The @apidoc[onPush()](stage.InHandler) {scala="#onPush():Unit" java="#onPush()"} callback is used to signal the handler a new element has been pushed to the operator,
@@ -90,10 +90,10 @@ Please note, most Sinks would need to request upstream elements as soon as they
done by calling @apidoc[pull(inlet)](stage.OutHandler) {scala="#onPull():Unit" java="#onPull()"} in the @apidoc[preStart()](stage.GraphStageLogic) {scala="#preStart():Unit" java="#preStart()"} callback.
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #custom-sink-example }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #custom-sink-example }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #simple-sink }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #simple-sink }
### Port states, @scala[InHandler] @java[AbstractInHandler] and @scala[OutHandler] @java[AbstractOutHandler]
@@ -211,10 +211,10 @@ Map calls `push(out)` from the `onPush()` handler and it also calls `pull()` fro
conceptual wiring above, and fully expressed in code below:
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #one-to-one }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #one-to-one }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #one-to-one }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #one-to-one }
Map is a typical example of a one-to-one transformation of a stream where
demand is passed along upstream elements passed on downstream.
@@ -230,10 +230,10 @@ example by adding a conditional in the `onPush` handler and decide between a `pu
(and not having a mapping `f` function).
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #many-to-one }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #many-to-one }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #many-to-one }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #many-to-one }
To complete the picture we define a one-to-many transformation as the next step. We chose a straightforward example operator
that emits every upstream element twice downstream. The conceptual wiring of this operator looks like this:
@@ -245,10 +245,10 @@ has duplicated this last element already or not. We must also make sure to emit
if the upstream completes.
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #one-to-many }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #one-to-many }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #one-to-many }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #one-to-many }
In this case a pull from downstream might be consumed by the operator itself rather
than passed along upstream as the operator might contain an element it wants to
@@ -262,10 +262,10 @@ This example can be simplified by replacing the usage of a mutable state with ca
reinstate the original handlers:
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #simpler-one-to-many }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #simpler-one-to-many }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #simpler-one-to-many }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #simpler-one-to-many }
Finally, to demonstrate all of the operators above, we put them together into a processing chain,
which conceptually would correspond to the following structure:
@@ -275,10 +275,10 @@ which conceptually would correspond to the following structure:
In code this is only a few lines, using the @apidoc[via](stream.*.Source) {scala="#via[T,Mat2](flow:org.apache.pekko.stream.Graph[org.apache.pekko.stream.FlowShape[Out,T],Mat2]):Source.this.Repr[T]" java="#via(org.apache.pekko.stream.Graph)"} use our custom operators in a stream:
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #graph-operator-chain }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #graph-operator-chain }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #graph-operator-chain }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #graph-operator-chain }
If we attempt to draw the sequence of events, it shows that there is one "event token"
in circulation in a potential chain of operators, just like our conceptual "railroad tracks" representation predicts.
@@ -330,10 +330,10 @@ See @ref:[Using the SLF4J API directly](../logging.md#slf4j-directly) for more d
The operator then gets access to the `log` field which it can safely use from any `GraphStage` callbacks:
Scala
-: @@snip [GraphStageLoggingDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageLoggingDocSpec.scala) { #operator-with-logging }
+: @@snip [GraphStageLoggingDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageLoggingDocSpec.scala) { #operator-with-logging }
Java
-: @@snip [GraphStageLoggingDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageLoggingDocTest.java) { #operator-with-logging }
+: @@snip [GraphStageLoggingDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageLoggingDocTest.java) { #operator-with-logging }
@@@ note
@@ -359,10 +359,10 @@ operator starts out as closed but as soon as an element is pushed downstream the
of time during which it will consume and drop upstream messages:
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #timed }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #timed }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #timed }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #timed }
### Using asynchronous side-channels
@@ -381,10 +381,10 @@ This example shows an asynchronous side channel operator that starts dropping el
when a future completes:
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #async-side-channel }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #async-side-channel }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #async-side-channel }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #async-side-channel }
### Integration with actors
@@ -421,10 +421,10 @@ necessary (non-blocking) synchronization and visibility guarantees to this share
In this sample the materialized value is a future containing the first element to go through the stream:
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #materialized }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #materialized }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #materialized }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #materialized }
### Using attributes to affect the behavior of an operator
@@ -468,10 +468,10 @@ initialization. The buffer has demand for up to two elements without any downstr
The following code example demonstrates a buffer class corresponding to the message sequence chart above.
Scala
-: @@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #detached }
+: @@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #detached }
Java
-: @@snip [GraphStageDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #detached }
+: @@snip [GraphStageDocTest.java](/docs/src/test/java/jdocs/stream/GraphStageDocTest.java) { #detached }
## Thread safety of custom operators
@@ -524,11 +524,11 @@ extensions to `Source` and `Flow` see [this sketch by R. Kuhn](https://gist.gith
A lot simpler is the task of adding an extension method to `Source` as shown below:
-@@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #extending-source }
+@@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #extending-source }
The analog works for `Flow` as well:
-@@snip [GraphStageDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #extending-flow }
+@@snip [GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala) { #extending-flow }
If you try to write this for `SubFlow`, though, you will run into the same issue as when trying to unify
the two solutions above, only on a higher level (the type constructors needed for that unification would have rank
diff --git a/akka-docs/src/main/paradox/stream/stream-dynamic.md b/docs/src/main/paradox/stream/stream-dynamic.md
similarity index 80%
rename from akka-docs/src/main/paradox/stream/stream-dynamic.md
rename to docs/src/main/paradox/stream/stream-dynamic.md
index 059abff719..adba28fa29 100644
--- a/akka-docs/src/main/paradox/stream/stream-dynamic.md
+++ b/docs/src/main/paradox/stream/stream-dynamic.md
@@ -46,18 +46,18 @@ below for usage examples.
* **Shutdown**
Scala
-: @@snip [KillSwitchDocSpec.scala](/akka-docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala) { #unique-shutdown }
+: @@snip [KillSwitchDocSpec.scala](/docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala) { #unique-shutdown }
Java
-: @@snip [KillSwitchDocTest.java](/akka-docs/src/test/java/jdocs/stream/KillSwitchDocTest.java) { #unique-shutdown }
+: @@snip [KillSwitchDocTest.java](/docs/src/test/java/jdocs/stream/KillSwitchDocTest.java) { #unique-shutdown }
* **Abort**
Scala
-: @@snip [KillSwitchDocSpec.scala](/akka-docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala) { #unique-abort }
+: @@snip [KillSwitchDocSpec.scala](/docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala) { #unique-abort }
Java
-: @@snip [KillSwitchDocTest.java](/akka-docs/src/test/java/jdocs/stream/KillSwitchDocTest.java) { #unique-abort }
+: @@snip [KillSwitchDocTest.java](/docs/src/test/java/jdocs/stream/KillSwitchDocTest.java) { #unique-abort }
### SharedKillSwitch
@@ -69,18 +69,18 @@ Refer to the below for usage examples.
* **Shutdown**
Scala
-: @@snip [KillSwitchDocSpec.scala](/akka-docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala) { #shared-shutdown }
+: @@snip [KillSwitchDocSpec.scala](/docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala) { #shared-shutdown }
Java
-: @@snip [KillSwitchDocTest.java](/akka-docs/src/test/java/jdocs/stream/KillSwitchDocTest.java) { #shared-shutdown }
+: @@snip [KillSwitchDocTest.java](/docs/src/test/java/jdocs/stream/KillSwitchDocTest.java) { #shared-shutdown }
* **Abort**
Scala
-: @@snip [KillSwitchDocSpec.scala](/akka-docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala) { #shared-abort }
+: @@snip [KillSwitchDocSpec.scala](/docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala) { #shared-abort }
Java
-: @@snip [KillSwitchDocTest.java](/akka-docs/src/test/java/jdocs/stream/KillSwitchDocTest.java) { #shared-abort }
+: @@snip [KillSwitchDocTest.java](/docs/src/test/java/jdocs/stream/KillSwitchDocTest.java) { #shared-abort }
@@@ note
@@ -106,10 +106,10 @@ It is not possible to attach any producers until this `Source` has been material
by the fact that we only get the corresponding @apidoc[stream.*.Sink] as a materialized value. Usage might look like this:
Scala
-: @@snip [HubsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #merge-hub }
+: @@snip [HubsDocSpec.scala](/docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #merge-hub }
Java
-: @@snip [HubDocTest.java](/akka-docs/src/test/java/jdocs/stream/HubDocTest.java) { #merge-hub }
+: @@snip [HubDocTest.java](/docs/src/test/java/jdocs/stream/HubDocTest.java) { #merge-hub }
This sequence, while might look odd at first, ensures proper startup order. Once we get the `Sink`,
we can use it as many times as wanted. Everything that is fed to it will be delivered to the consumer we attached
@@ -123,10 +123,10 @@ to which the single producer must be attached first. Consumers can only be attac
been materialized (i.e. the producer has been started). One example of using the `BroadcastHub`:
Scala
-: @@snip [HubsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #broadcast-hub }
+: @@snip [HubsDocSpec.scala](/docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #broadcast-hub }
Java
-: @@snip [HubDocTest.java](/akka-docs/src/test/java/jdocs/stream/HubDocTest.java) { #broadcast-hub }
+: @@snip [HubDocTest.java](/docs/src/test/java/jdocs/stream/HubDocTest.java) { #broadcast-hub }
The resulting @apidoc[stream.*.Source] can be materialized any number of times, each materialization effectively attaching
a new subscriber. If there are no subscribers attached to this hub then it will not drop any elements but instead
@@ -147,20 +147,20 @@ we materialize this small stream, we get back a pair of @apidoc[stream.*.Source]
the publish and subscribe sides of our channel.
Scala
-: @@snip [HubsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #pub-sub-1 }
+: @@snip [HubsDocSpec.scala](/docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #pub-sub-1 }
Java
-: @@snip [HubDocTest.java](/akka-docs/src/test/java/jdocs/stream/HubDocTest.java) { #pub-sub-1 }
+: @@snip [HubDocTest.java](/docs/src/test/java/jdocs/stream/HubDocTest.java) { #pub-sub-1 }
We now use a few tricks to add more features. First of all, we attach a @apidoc[Sink.ignore](stream.*.Sink$) {scala="#ignore:org.apache.pekko.stream.scaladsl.Sink[Any,scala.concurrent.Future[org.apache.pekko.Done]]" java="#ignore()"}
at the broadcast side of the channel to keep it drained when there are no subscribers. If this behavior is not the
desired one this line can be dropped.
Scala
-: @@snip [HubsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #pub-sub-2 }
+: @@snip [HubsDocSpec.scala](/docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #pub-sub-2 }
Java
-: @@snip [HubDocTest.java](/akka-docs/src/test/java/jdocs/stream/HubDocTest.java) { #pub-sub-2 }
+: @@snip [HubDocTest.java](/docs/src/test/java/jdocs/stream/HubDocTest.java) { #pub-sub-2 }
We now wrap the @apidoc[stream.*.Sink] and @apidoc[stream.*.Source] in a @apidoc[stream.*.Flow] using @apidoc[Flow.fromSinkAndSource](stream.*.Flow$) {scala="#fromSinkAndSource[I,O](sink:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SinkShape[I],_],source:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[O],_]):org.apache.pekko.stream.scaladsl.Flow[I,O,org.apache.pekko.NotUsed]" java="#fromSinkAndSource(org.apache.pekko.stream.Graph,org.apache.pekko.stream.Graph)"}. This bundles
up the two sides of the channel into one and forces users of it to always define a publisher and subscriber side
@@ -171,20 +171,20 @@ Finally, we add `backpressureTimeout` on the consumer side to ensure that subscr
than 3 seconds are forcefully removed (and their stream failed).
Scala
-: @@snip [HubsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #pub-sub-3 }
+: @@snip [HubsDocSpec.scala](/docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #pub-sub-3 }
Java
-: @@snip [HubDocTest.java](/akka-docs/src/test/java/jdocs/stream/HubDocTest.java) { #pub-sub-3 }
+: @@snip [HubDocTest.java](/docs/src/test/java/jdocs/stream/HubDocTest.java) { #pub-sub-3 }
The resulting Flow now has a type of `Flow[String, String, UniqueKillSwitch]` representing a publish-subscribe
channel which can be used any number of times to attach new producers or consumers. In addition, it materializes
to a `UniqueKillSwitch` (see @ref:[UniqueKillSwitch](#unique-kill-switch)) that can be used to deregister a single user externally:
Scala
-: @@snip [HubsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #pub-sub-4 }
+: @@snip [HubsDocSpec.scala](/docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #pub-sub-4 }
Java
-: @@snip [HubDocTest.java](/akka-docs/src/test/java/jdocs/stream/HubDocTest.java) { #pub-sub-4 }
+: @@snip [HubDocTest.java](/docs/src/test/java/jdocs/stream/HubDocTest.java) { #pub-sub-4 }
### Using the PartitionHub
@@ -198,10 +198,10 @@ to which the single producer must be attached first. Consumers can only be attac
been materialized (i.e. the producer has been started). One example of using the `PartitionHub`:
Scala
-: @@snip [HubsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #partition-hub }
+: @@snip [HubsDocSpec.scala](/docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #partition-hub }
Java
-: @@snip [HubDocTest.java](/akka-docs/src/test/java/jdocs/stream/HubDocTest.java) { #partition-hub }
+: @@snip [HubDocTest.java](/docs/src/test/java/jdocs/stream/HubDocTest.java) { #partition-hub }
The `partitioner` function takes two parameters; the first is the number of active consumers and the second
is the stream element. The function should return the index of the selected consumer for the given element,
@@ -223,17 +223,17 @@ The above example illustrate a stateless partition function. For more advanced s
@scala[@scaladoc[statefulSink](pekko.stream.scaladsl.PartitionHub$#statefulSink[T](partitioner:()=%3E(org.apache.pekko.stream.scaladsl.PartitionHub.ConsumerInfo,T)=%3ELong,startAfterNrOfConsumers:Int,bufferSize:Int):org.apache.pekko.stream.scaladsl.Sink[T,org.apache.pekko.stream.scaladsl.Source[T,org.apache.pekko.NotUsed]])] can be used. Here is an example of a stateful round-robin function:
Scala
-: @@snip [HubsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #partition-hub-stateful }
+: @@snip [HubsDocSpec.scala](/docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #partition-hub-stateful }
Java
-: @@snip [HubDocTest.java](/akka-docs/src/test/java/jdocs/stream/HubDocTest.java) { #partition-hub-stateful }
+: @@snip [HubDocTest.java](/docs/src/test/java/jdocs/stream/HubDocTest.java) { #partition-hub-stateful }
Note that it is a factory of a function to be able to hold stateful variables that are
unique for each materialization. @java[In this example the `partitioner` function is implemented as a class to
be able to hold the mutable variable. A new instance of `RoundRobin` is created for each materialization of the hub.]
@@@ div { .group-java }
-@@snip [HubDocTest.java](/akka-docs/src/test/java/jdocs/stream/HubDocTest.java) { #partition-hub-stateful-function }
+@@snip [HubDocTest.java](/docs/src/test/java/jdocs/stream/HubDocTest.java) { #partition-hub-stateful-function }
@@@
The function takes two parameters; the first is information about active consumers, including an array of
@@ -248,7 +248,7 @@ Note that this is a moving target since the elements are consumed concurrently.
a hub that routes to the consumer with least buffered elements:
Scala
-: @@snip [HubsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #partition-hub-fastest }
+: @@snip [HubsDocSpec.scala](/docs/src/test/scala/docs/stream/HubsDocSpec.scala) { #partition-hub-fastest }
Java
-: @@snip [HubDocTest.java](/akka-docs/src/test/java/jdocs/stream/HubDocTest.java) { #partition-hub-fastest }
+: @@snip [HubDocTest.java](/docs/src/test/java/jdocs/stream/HubDocTest.java) { #partition-hub-fastest }
diff --git a/akka-docs/src/main/paradox/stream/stream-error.md b/docs/src/main/paradox/stream/stream-error.md
similarity index 79%
rename from akka-docs/src/main/paradox/stream/stream-error.md
rename to docs/src/main/paradox/stream/stream-error.md
index 5304bcd2e3..c62afb94a9 100644
--- a/akka-docs/src/main/paradox/stream/stream-error.md
+++ b/docs/src/main/paradox/stream/stream-error.md
@@ -34,10 +34,10 @@ inside an actor, and have the actor restart the entire stream on failure.
The below stream fails with @javadoc[ArithmeticException](java.lang.ArithmeticException) when the element `0` goes through the @apidoc[map](stream.*.Source) {scala="#map[T](f:Out=%3ET):FlowOps.this.Repr[T]" java="#map(org.apache.pekko.japi.function.Function)"} operator,
Scala
-: @@snip [RecipeLoggingElements.scala](/akka-docs/src/test/scala/docs/stream/cookbook/RecipeLoggingElements.scala) { #log-error }
+: @@snip [RecipeLoggingElements.scala](/docs/src/test/scala/docs/stream/cookbook/RecipeLoggingElements.scala) { #log-error }
Java
-: @@snip [RecipeLoggingElements.java](/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeLoggingElements.java) { #log-error }
+: @@snip [RecipeLoggingElements.java](/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeLoggingElements.java) { #log-error }
and error messages like below will be logged.
@@ -64,18 +64,18 @@ Throwing an exception inside `recover` _will_ be logged on ERROR level automatic
More details in @ref[recover](./operators/Source-or-Flow/recover.md#recover)
Scala
-: @@snip [FlowErrorDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recover }
+: @@snip [FlowErrorDocSpec.scala](/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recover }
Java
-: @@snip [FlowErrorDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recover }
+: @@snip [FlowErrorDocTest.java](/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recover }
This will output:
Scala
-: @@snip [FlowErrorDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recover-output }
+: @@snip [FlowErrorDocSpec.scala](/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recover-output }
Java
-: @@snip [FlowErrorDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recover-output }
+: @@snip [FlowErrorDocTest.java](/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recover-output }
## Recover with retries
@@ -87,19 +87,19 @@ Deciding which exceptions should be recovered is done through a @scaladoc[Partia
does not have a @scala[matching case] @java[match defined] the stream is failed.
Scala
-: @@snip [FlowErrorDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recoverWithRetries }
+: @@snip [FlowErrorDocSpec.scala](/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recoverWithRetries }
Java
-: @@snip [FlowErrorDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recoverWithRetries }
+: @@snip [FlowErrorDocTest.java](/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recoverWithRetries }
This will output:
Scala
-: @@snip [FlowErrorDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recoverWithRetries-output }
+: @@snip [FlowErrorDocSpec.scala](/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #recoverWithRetries-output }
Java
-: @@snip [FlowErrorDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recoverWithRetries-output }
+: @@snip [FlowErrorDocTest.java](/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #recoverWithRetries-output }
@@ -131,10 +131,10 @@ be made again, in increasing intervals of 3, 6, 12, 24 and finally 30 seconds (a
to the `maxBackoff` parameter):
Scala
-: @@snip [RestartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/RestartDocSpec.scala) { #restart-with-backoff-source }
+: @@snip [RestartDocSpec.scala](/docs/src/test/scala/docs/stream/RestartDocSpec.scala) { #restart-with-backoff-source }
Java
-: @@snip [RestartDocTest.java](/akka-docs/src/test/java/jdocs/stream/RestartDocTest.java) { #restart-with-backoff-source }
+: @@snip [RestartDocTest.java](/docs/src/test/java/jdocs/stream/RestartDocTest.java) { #restart-with-backoff-source }
Using a `randomFactor` to add a little bit of additional variance to the backoff intervals
is highly recommended, in order to avoid multiple streams re-start at the exact same point in time,
@@ -147,10 +147,10 @@ The above `RestartSource` will never terminate unless the @apidoc[stream.*.Sink]
it in combination with a @ref:[`KillSwitch`](stream-dynamic.md#kill-switch), so that you can terminate it when needed:
Scala
-: @@snip [RestartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/RestartDocSpec.scala) { #with-kill-switch }
+: @@snip [RestartDocSpec.scala](/docs/src/test/scala/docs/stream/RestartDocSpec.scala) { #with-kill-switch }
Java
-: @@snip [RestartDocTest.java](/akka-docs/src/test/java/jdocs/stream/RestartDocTest.java) { #with-kill-switch }
+: @@snip [RestartDocTest.java](/docs/src/test/java/jdocs/stream/RestartDocTest.java) { #with-kill-switch }
Sinks and flows can also be supervised, using @apidoc[stream.*.RestartSink$] and @apidoc[stream.*.RestartFlow$]. The `RestartSink` is restarted when
it cancels, while the `RestartFlow` is restarted when either the in port cancels, the out port completes, or the out
@@ -207,18 +207,18 @@ By default the stopping strategy is used for all exceptions, i.e. the stream wil
failure when an exception is thrown.
Scala
-: @@snip [FlowErrorDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #stop }
+: @@snip [FlowErrorDocSpec.scala](/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #stop }
Java
-: @@snip [FlowErrorDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #stop }
+: @@snip [FlowErrorDocTest.java](/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #stop }
The default supervision strategy for a stream can be defined on the complete @apidoc[stream.*.RunnableGraph].
Scala
-: @@snip [FlowErrorDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #resume }
+: @@snip [FlowErrorDocSpec.scala](/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #resume }
Java
-: @@snip [FlowErrorDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #resume }
+: @@snip [FlowErrorDocTest.java](/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #resume }
Here you can see that all @javadoc[ArithmeticException](java.lang.ArithmeticException) will resume the processing, i.e. the
elements that cause the division by zero are effectively dropped.
@@ -233,19 +233,19 @@ cycles, as explained in @ref:[Graph cycles, liveness and deadlocks](stream-graph
The supervision strategy can also be defined for all operators of a flow.
Scala
-: @@snip [FlowErrorDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #resume-section }
+: @@snip [FlowErrorDocSpec.scala](/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #resume-section }
Java
-: @@snip [FlowErrorDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #resume-section }
+: @@snip [FlowErrorDocTest.java](/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #resume-section }
@scala[@scaladoc[Restart](pekko.stream.Supervision$$Restart$)]@java[@javadoc[Supervision.restart()](pekko.stream.Supervision#restart())] works in a similar way as @scala[@scaladoc[Resume](pekko.stream.Supervision$$Resume$)]@java[@javadoc[Supervision.resume()](pekko.stream.Supervision#resume())] with the addition that accumulated state,
if any, of the failing processing operator will be reset.
Scala
-: @@snip [FlowErrorDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #restart-section }
+: @@snip [FlowErrorDocSpec.scala](/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala) { #restart-section }
Java
-: @@snip [FlowErrorDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #restart-section }
+: @@snip [FlowErrorDocTest.java](/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java) { #restart-section }
### Errors from mapAsync
@@ -258,18 +258,18 @@ discard those that cannot be found.
We start with the tweet stream of authors:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #tweet-authors }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #tweet-authors }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #tweet-authors }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #tweet-authors }
Assume that we can lookup their email address using:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #email-address-lookup2 }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #email-address-lookup2 }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #email-address-lookup2 }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #email-address-lookup2 }
The @scala[@scaladoc[Future](scala.concurrent.Future)] @java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)] is completed @scala[with `Failure`] @java[normally] if the email is not found.
@@ -278,10 +278,10 @@ service can be done with @apidoc[mapAsync](stream.*.Source) {scala="#mapAsync[T]
unknown email addresses:
Scala
-: @@snip [IntegrationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #email-addresses-mapAsync-supervision }
+: @@snip [IntegrationDocSpec.scala](/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala) { #email-addresses-mapAsync-supervision }
Java
-: @@snip [IntegrationDocTest.java](/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #email-addresses-mapAsync-supervision }
+: @@snip [IntegrationDocTest.java](/docs/src/test/java/jdocs/stream/IntegrationDocTest.java) { #email-addresses-mapAsync-supervision }
If we would not use @scala[@scaladoc[Resume](pekko.stream.Supervision$$Resume$)]@java[@javadoc[Supervision.resume()](pekko.stream.Supervision#resume())] the default stopping strategy would complete the stream
with failure on the first @scala[`Future`] @java[`CompletionStage`] that was completed @scala[with `Failure`]@java[exceptionally].
diff --git a/akka-docs/src/main/paradox/stream/stream-flows-and-basics.md b/docs/src/main/paradox/stream/stream-flows-and-basics.md
similarity index 91%
rename from akka-docs/src/main/paradox/stream/stream-flows-and-basics.md
rename to docs/src/main/paradox/stream/stream-flows-and-basics.md
index 72371ac089..d22908f066 100644
--- a/akka-docs/src/main/paradox/stream/stream-flows-and-basics.md
+++ b/docs/src/main/paradox/stream/stream-flows-and-basics.md
@@ -91,10 +91,10 @@ thread-safe, and freely shareable*, which means that it is for example safe to s
one actor prepare the work, and then have it be materialized at some completely different place in the code.
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #materialization-in-steps }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #materialization-in-steps }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #materialization-in-steps }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #materialization-in-steps }
@@@ div { .group-scala }
@@ -128,19 +128,19 @@ both a `Source` and a `Sink` (in order to run a `Flow`, since it has neither att
@@@
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #materialization-runWith }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #materialization-runWith }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #materialization-runWith }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #materialization-runWith }
It is worth pointing out that since operators are *immutable*, connecting them returns a new operator,
instead of modifying the existing instance, so while constructing long flows, remember to assign the new value to a variable or run it:
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #source-immutable }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #source-immutable }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #source-immutable }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #source-immutable }
@@@ note
@@ -161,10 +161,10 @@ variable. Both materializations give us a different @scala[@scaladoc[Future](sca
to refer to the future:
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #stream-reuse }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #stream-reuse }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #stream-reuse }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #stream-reuse }
### Defining sources, sinks and flows
@@ -172,18 +172,18 @@ The objects @apidoc[stream.*.Source] and @apidoc[stream.*.Sink] define various w
examples show some of the most useful constructs (refer to the API documentation for more details):
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #source-sink }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #source-sink }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #source-sink }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #source-sink }
There are various ways to wire up different parts of a stream, the following examples show some of the available options:
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #flow-connecting }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #flow-connecting }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #flow-connecting }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #flow-connecting }
### Illegal stream elements
@@ -296,10 +296,10 @@ operators by way of adding @apidoc[Attributes.asyncBoundary](stream.Attributes$)
to operators that shall communicate with the downstream of the graph in an asynchronous fashion.
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #flow-async }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #flow-async }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #flow-async }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #flow-async }
In this example we create two regions within the flow which will be executed in one Actor each—assuming that adding
and multiplying integers is an extremely costly operation this will lead to a performance gain since two CPUs can
@@ -333,10 +333,10 @@ many operator methods have variants that take an additional argument, a function
resulting values. Some examples of using these combiners are illustrated in the example below.
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #flow-mat-combine }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #flow-mat-combine }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #flow-mat-combine }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #flow-mat-combine }
@@@ note
@@ -353,10 +353,10 @@ By using the @apidoc[preMaterialize](stream.*.Source) {scala="#preMaterialize()(
to consume messages from the original `Source`. Note that this can be materialized multiple times.
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #source-prematerialization }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #source-prematerialization }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #source-prematerialization }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #source-prematerialization }
## Stream ordering
@@ -401,10 +401,10 @@ normal completion signals to manage the lifecycles of your streams.
If we look at the following example, where we create the `Materializer` within an `Actor`:
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #materializer-from-actor-context }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #materializer-from-actor-context }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #materializer-from-actor-context }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #materializer-from-actor-context }
In the above example we used the @apidoc[actor.ActorContext] to create the materializer. This binds its lifecycle to the surrounding @apidoc[actor.Actor]. In other words, while the stream we started there would under normal circumstances run forever, if we stop the Actor it would terminate the stream as well. We have *bound the stream's lifecycle to the surrounding actor's lifecycle*.
This is a very useful technique if the stream is closely related to the actor, e.g. when the actor represents a user or other entity, that we continuously query using the created stream -- and it would not make sense to keep the stream alive when the actor has terminated already. The streams termination will be signalled by an "Abrupt termination exception" signaled by the stream.
@@ -416,10 +416,10 @@ For example, you are using an Akka stream to push some large stream of data to a
You may want to eagerly stop the Actor since it has performed all of its duties already:
Scala
-: @@snip [FlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #materializer-from-system-in-actor }
+: @@snip [FlowDocSpec.scala](/docs/src/test/scala/docs/stream/FlowDocSpec.scala) { #materializer-from-system-in-actor }
Java
-: @@snip [FlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java) { #materializer-from-system-in-actor }
+: @@snip [FlowDocTest.java](/docs/src/test/java/jdocs/stream/FlowDocTest.java) { #materializer-from-system-in-actor }
In the above example we pass in a materializer to the Actor, which results in binding its lifecycle to the entire @apidoc[actor.ActorSystem] rather than the single enclosing actor. This can be useful if you want to share a materializer or group streams into specific materializers,
for example because of the materializer's settings etc.
diff --git a/akka-docs/src/main/paradox/stream/stream-graphs.md b/docs/src/main/paradox/stream/stream-graphs.md
similarity index 84%
rename from akka-docs/src/main/paradox/stream/stream-graphs.md
rename to docs/src/main/paradox/stream/stream-graphs.md
index bbb4af7c3c..18cdfcdfd0 100644
--- a/akka-docs/src/main/paradox/stream/stream-graphs.md
+++ b/docs/src/main/paradox/stream/stream-graphs.md
@@ -65,7 +65,7 @@ or ending a `Flow`. @scala[Junctions must always be created with defined type pa
will be inferred.]
Scala
-: @@snip [GraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #simple-graph-dsl }
+: @@snip [GraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #simple-graph-dsl }
Java
: @@snip [GraphDSLTest.java](/akka-stream-tests/src/test/java/org/apache/pekko/stream/javadsl/GraphDslTest.java) { #simple-graph-dsl }
@@ -100,7 +100,7 @@ in which we re-use the same instance of `Flow`, yet it will properly be
materialized as two connections between the corresponding Sources and Sinks:
Scala
-: @@snip [GraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-reusing-a-flow }
+: @@snip [GraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-reusing-a-flow }
Java
: @@snip [GraphDSLTest.java](/akka-stream-tests/src/test/java/org/apache/pekko/stream/javadsl/GraphDslTest.java) { #graph-dsl-reusing-a-flow }
@@ -136,10 +136,10 @@ the greatest int value of each zipped triple. We'll want to expose 3 input ports
(unconnected sink).
Scala
-: @@snip [StreamPartialGraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) { #simple-partial-graph-dsl }
+: @@snip [StreamPartialGraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) { #simple-partial-graph-dsl }
Java
-: @@snip [StreamPartialGraphDSLDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #simple-partial-graph-dsl }
+: @@snip [StreamPartialGraphDSLDocTest.java](/docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #simple-partial-graph-dsl }
@@@ note
@@ -191,20 +191,20 @@ Refer to the example below, in which we create a Source that zips together two n
construction in action:
Scala
-: @@snip [StreamPartialGraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) { #source-from-partial-graph-dsl }
+: @@snip [StreamPartialGraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) { #source-from-partial-graph-dsl }
Java
-: @@snip [StreamPartialGraphDSLDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #source-from-partial-graph-dsl }
+: @@snip [StreamPartialGraphDSLDocTest.java](/docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #source-from-partial-graph-dsl }
Similarly the same can be done for a @scala[`Sink[T]`]@java[`Sink`], using `SinkShape.of` in which case the provided value
must be an @scala[`Inlet[T]`]@java[`Inlet`]. For defining a @scala[`Flow[T]`]@java[`Flow`] we need to expose both an @scala[inlet and an outlet]@java[undefined source and sink]:
Scala
-: @@snip [StreamPartialGraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) { #flow-from-partial-graph-dsl }
+: @@snip [StreamPartialGraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) { #flow-from-partial-graph-dsl }
Java
-: @@snip [StreamPartialGraphDSLDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #flow-from-partial-graph-dsl }
+: @@snip [StreamPartialGraphDSLDocTest.java](/docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #flow-from-partial-graph-dsl }
## Combining Sources and Sinks with simplified API
@@ -215,19 +215,19 @@ without the need for using the Graph DSL. The combine method takes care of const
the necessary graph underneath. In following example we combine two sources into one (fan-in):
Scala
-: @@snip [StreamPartialGraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) { #source-combine }
+: @@snip [StreamPartialGraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) { #source-combine }
Java
-: @@snip [StreamPartialGraphDSLDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #source-combine }
+: @@snip [StreamPartialGraphDSLDocTest.java](/docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #source-combine }
The same can be done for a @scala[`Sink[T]`]@java[`Sink`] but in this case it will be fan-out:
Scala
-: @@snip [StreamPartialGraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) { #sink-combine }
+: @@snip [StreamPartialGraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala) { #sink-combine }
Java
-: @@snip [StreamPartialGraphDSLDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #sink-combine }
+: @@snip [StreamPartialGraphDSLDocTest.java](/docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java) { #sink-combine }
## Building reusable Graph components
@@ -245,7 +245,7 @@ Altogether, our junction will have two input ports of type `I` (for the normal a
of type `O`. To represent this interface, we need to define a custom `Shape`. The following lines show how to do that.
Scala
-: @@snip [GraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-components-shape }
+: @@snip [GraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-components-shape }
@@ -265,7 +265,7 @@ Since our shape has two input ports and one output port, we can use the `FanInSh
our custom shape:
Scala
-: @@snip [GraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-components-shape2 }
+: @@snip [GraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-components-shape2 }
@@ -275,7 +275,7 @@ to a `Balance` junction which will fan-out to a configurable number of workers (
results together and send them out through our only output port. This is expressed by the following code:
Scala
-: @@snip [GraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-components-create }
+: @@snip [GraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-components-create }
@@ -285,7 +285,7 @@ and jobs using plain strings and prints out the results. Actually we used *two*
using `add()` twice.
Scala
-: @@snip [GraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-components-use }
+: @@snip [GraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-components-use }
@@ -310,10 +310,10 @@ A bidirectional flow is defined just like a unidirectional `Flow` as
demonstrated for the codec mentioned above:
Scala
-: @@snip [BidiFlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala) { #codec }
+: @@snip [BidiFlowDocSpec.scala](/docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala) { #codec }
Java
-: @@snip [BidiFlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/BidiFlowDocTest.java) { #codec }
+: @@snip [BidiFlowDocTest.java](/docs/src/test/java/jdocs/stream/BidiFlowDocTest.java) { #codec }
The first version resembles the partial graph constructor, while for the simple
@@ -322,10 +322,10 @@ as shown on the last line. The implementation of the two functions is not
difficult either:
Scala
-: @@snip [BidiFlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala) { #codec-impl }
+: @@snip [BidiFlowDocSpec.scala](/docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala) { #codec-impl }
Java
-: @@snip [BidiFlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/BidiFlowDocTest.java) { #codec-impl }
+: @@snip [BidiFlowDocTest.java](/docs/src/test/java/jdocs/stream/BidiFlowDocTest.java) { #codec-impl }
In this way you can integrate any other serialization library that
@@ -337,19 +337,19 @@ zero or more messages. This is best implemented using @ref[`GraphStage`](stream-
(see also @ref[Custom processing with GraphStage](stream-customize.md#graphstage)).
Scala
-: @@snip [BidiFlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala) { #framing }
+: @@snip [BidiFlowDocSpec.scala](/docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala) { #framing }
Java
-: @@snip [BidiFlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/BidiFlowDocTest.java) { #framing }
+: @@snip [BidiFlowDocTest.java](/docs/src/test/java/jdocs/stream/BidiFlowDocTest.java) { #framing }
With these implementations we can build a protocol stack and test it:
Scala
-: @@snip [BidiFlowDocSpec.scala](/akka-docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala) { #compose }
+: @@snip [BidiFlowDocSpec.scala](/docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala) { #compose }
Java
-: @@snip [BidiFlowDocTest.java](/akka-docs/src/test/java/jdocs/stream/BidiFlowDocTest.java) { #compose }
+: @@snip [BidiFlowDocTest.java](/docs/src/test/java/jdocs/stream/BidiFlowDocTest.java) { #compose }
This example demonstrates how `BidiFlow` subgraphs can be hooked
@@ -367,7 +367,7 @@ If the materialized value is needed at more than one place, it is possible to ca
times to acquire the necessary number of outlets.
Scala
-: @@snip [GraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-matvalue }
+: @@snip [GraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-matvalue }
Java
: @@snip [GraphDSLTest.java](/akka-stream-tests/src/test/java/org/apache/pekko/stream/javadsl/GraphDslTest.java) { #graph-dsl-matvalue }
@@ -377,7 +377,7 @@ Be careful not to introduce a cycle where the materialized value actually contri
The following example demonstrates a case where the materialized @scala[`Future`]@java[`CompletionStage`] of a fold is fed back to the fold itself.
Scala
-: @@snip [GraphDSLDocSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-matvalue-cycle }
+: @@snip [GraphDSLDocSpec.scala](/docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala) { #graph-dsl-matvalue-cycle }
Java
: @@snip [GraphDSLTest.java](/akka-stream-tests/src/test/java/org/apache/pekko/stream/javadsl/GraphDslTest.java) { #graph-dsl-matvalue-cycle }
@@ -406,10 +406,10 @@ see there are cases where this is very helpful.
@@@
Scala
-: @@snip [GraphCyclesSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphCyclesSpec.scala) { #deadlocked }
+: @@snip [GraphCyclesSpec.scala](/docs/src/test/scala/docs/stream/GraphCyclesSpec.scala) { #deadlocked }
Java
-: @@snip [GraphCyclesDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java) { #deadlocked }
+: @@snip [GraphCyclesDocTest.java](/docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java) { #deadlocked }
Running this we observe that after a few numbers have been printed, no more elements are logged to the console -
@@ -429,10 +429,10 @@ before trying the other lower priority input ports. Since we feed back through t
that the elements in the cycles can flow.
Scala
-: @@snip [GraphCyclesSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphCyclesSpec.scala) { #unfair }
+: @@snip [GraphCyclesSpec.scala](/docs/src/test/scala/docs/stream/GraphCyclesSpec.scala) { #unfair }
Java
-: @@snip [GraphCyclesDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java) { #unfair }
+: @@snip [GraphCyclesDocTest.java](/docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java) { #unfair }
If we run the example we see that the same sequence of numbers are printed
@@ -452,10 +452,10 @@ To make our cycle both live (not deadlocking) and fair we can introduce a droppi
case we chose the `buffer()` operation giving it a dropping strategy `OverflowStrategy.dropHead`.
Scala
-: @@snip [GraphCyclesSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphCyclesSpec.scala) { #dropping }
+: @@snip [GraphCyclesSpec.scala](/docs/src/test/scala/docs/stream/GraphCyclesSpec.scala) { #dropping }
Java
-: @@snip [GraphCyclesDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java) { #dropping }
+: @@snip [GraphCyclesDocTest.java](/docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java) { #dropping }
If we run this example we see that
@@ -476,10 +476,10 @@ Since `ZipWith` takes one element from `source` *and* from the feedback arc to i
we maintain the balance of elements.
Scala
-: @@snip [GraphCyclesSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphCyclesSpec.scala) { #zipping-dead }
+: @@snip [GraphCyclesSpec.scala](/docs/src/test/scala/docs/stream/GraphCyclesSpec.scala) { #zipping-dead }
Java
-: @@snip [GraphCyclesDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java) { #zipping-dead }
+: @@snip [GraphCyclesDocTest.java](/docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java) { #zipping-dead }
Still, when we try to run the example it turns out that no element is printed at all! After some investigation we
@@ -493,10 +493,10 @@ element into the cycle that is independent from `source`. We do this by using a
arc that injects a single element using `Source.single`.
Scala
-: @@snip [GraphCyclesSpec.scala](/akka-docs/src/test/scala/docs/stream/GraphCyclesSpec.scala) { #zipping-live }
+: @@snip [GraphCyclesSpec.scala](/docs/src/test/scala/docs/stream/GraphCyclesSpec.scala) { #zipping-live }
Java
-: @@snip [GraphCyclesDocTest.java](/akka-docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java) { #zipping-live }
+: @@snip [GraphCyclesDocTest.java](/docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java) { #zipping-live }
When we run the above example we see that processing starts and never stops. The important takeaway from this example
diff --git a/akka-docs/src/main/paradox/stream/stream-introduction.md b/docs/src/main/paradox/stream/stream-introduction.md
similarity index 100%
rename from akka-docs/src/main/paradox/stream/stream-introduction.md
rename to docs/src/main/paradox/stream/stream-introduction.md
diff --git a/akka-docs/src/main/paradox/stream/stream-io.md b/docs/src/main/paradox/stream/stream-io.md
similarity index 87%
rename from akka-docs/src/main/paradox/stream/stream-io.md
rename to docs/src/main/paradox/stream/stream-io.md
index c1b36ae1c3..598ad4523d 100644
--- a/akka-docs/src/main/paradox/stream/stream-io.md
+++ b/docs/src/main/paradox/stream/stream-io.md
@@ -28,10 +28,10 @@ In order to implement a simple EchoServer we `bind` to a given address, which re
which will emit an `IncomingConnection` element for each new connection that the Server should handle:
Scala
-: @@snip [StreamTcpDocSpec.scala](/akka-docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala) { #echo-server-simple-bind }
+: @@snip [StreamTcpDocSpec.scala](/docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala) { #echo-server-simple-bind }
Java
-: @@snip [StreamTcpDocTest.java](/akka-docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java) { #echo-server-simple-bind }
+: @@snip [StreamTcpDocTest.java](/docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java) { #echo-server-simple-bind }

@@ -43,10 +43,10 @@ argument indicates that we require an explicit line ending even for the last mes
In this example we add exclamation marks to each incoming text message and push it through the flow:
Scala
-: @@snip [StreamTcpDocSpec.scala](/akka-docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala) { #echo-server-simple-handle }
+: @@snip [StreamTcpDocSpec.scala](/docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala) { #echo-server-simple-handle }
Java
-: @@snip [StreamTcpDocTest.java](/akka-docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java) { #echo-server-simple-handle }
+: @@snip [StreamTcpDocTest.java](/docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java) { #echo-server-simple-handle }

@@ -73,10 +73,10 @@ and would like to interact with it using Akka Streams over TCP. To open an outgo
the `outgoingConnection` method:
Scala
-: @@snip [StreamTcpDocSpec.scala](/akka-docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala) { #repl-client }
+: @@snip [StreamTcpDocSpec.scala](/docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala) { #repl-client }
Java
-: @@snip [StreamTcpDocTest.java](/akka-docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java) { #repl-client }
+: @@snip [StreamTcpDocTest.java](/docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java) { #repl-client }
The `repl` flow we use to handle the server interaction first prints the servers response, then awaits on input from
the command line (this blocking call is used here for the sake of simplicity) and converts it to a
@@ -112,10 +112,10 @@ to the protocol we are trying to implement using Streams. In chat-like applicati
it makes sense to make the Server initiate the conversation by emitting a "hello" message:
Scala
-: @@snip [StreamTcpDocSpec.scala](/akka-docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala) { #welcome-banner-chat-server }
+: @@snip [StreamTcpDocSpec.scala](/docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala) { #welcome-banner-chat-server }
Java
-: @@snip [StreamTcpDocTest.java](/akka-docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java) { #welcome-banner-chat-server }
+: @@snip [StreamTcpDocTest.java](/docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java) { #welcome-banner-chat-server }
To emit the initial message we merge a @apidoc[stream.*.Source] with a single element, after the command processing but before the
framing and transformation to @apidoc[util.ByteString] s this way we do not have to repeat such logic.
@@ -168,10 +168,10 @@ Streaming data from a file is as easy as creating a *FileIO.fromPath* given a ta
`chunkSize` which determines the buffer size determined as one "element" in such stream:
Scala
-: @@snip [StreamFileDocSpec.scala](/akka-docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala) { #file-source }
+: @@snip [StreamFileDocSpec.scala](/docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala) { #file-source }
Java
-: @@snip [StreamFileDocTest.java](/akka-docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java) { #file-source }
+: @@snip [StreamFileDocTest.java](/docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java) { #file-source }
Please note that these operators are backed by Actors and by default are configured to run on a pre-configured
threadpool-backed dispatcher dedicated for File IO. This is very important as it isolates the blocking file IO operations from the rest
@@ -180,7 +180,7 @@ dispatcher for file IO operations globally, you can do so by changing the `akka.
or for a specific operator by specifying a custom Dispatcher in code, like this:
Scala
-: @@snip [StreamFileDocSpec.scala](/akka-docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala) { #custom-dispatcher-code }
+: @@snip [StreamFileDocSpec.scala](/docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala) { #custom-dispatcher-code }
Java
-: @@snip [StreamFileDocTest.java](/akka-docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java) { #custom-dispatcher-code }
+: @@snip [StreamFileDocTest.java](/docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java) { #custom-dispatcher-code }
diff --git a/akka-docs/src/main/paradox/stream/stream-parallelism.md b/docs/src/main/paradox/stream/stream-parallelism.md
similarity index 86%
rename from akka-docs/src/main/paradox/stream/stream-parallelism.md
rename to docs/src/main/paradox/stream/stream-parallelism.md
index 96320c7f29..f7febb34d7 100644
--- a/akka-docs/src/main/paradox/stream/stream-parallelism.md
+++ b/docs/src/main/paradox/stream/stream-parallelism.md
@@ -39,10 +39,10 @@ completion.
This is how this setup would look like implemented as a stream:
Scala
-: @@snip [FlowParallelismDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala) { #pipelining }
+: @@snip [FlowParallelismDocSpec.scala](/docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala) { #pipelining }
Java
-: @@snip [FlowParallelismDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java) { #pipelining }
+: @@snip [FlowParallelismDocTest.java](/docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java) { #pipelining }
The two `map` operators in sequence (encapsulated in the "frying pan" flows) will be executed in a pipelined way,
the same way that Roland was using his frying pans:
@@ -74,10 +74,10 @@ In essence he parallelizes the same process over multiple pans. This is how this
using streams:
Scala
-: @@snip [FlowParallelismDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala) { #parallelism }
+: @@snip [FlowParallelismDocSpec.scala](/docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala) { #parallelism }
Java
-: @@snip [FlowParallelismDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java) { #parallelism }
+: @@snip [FlowParallelismDocTest.java](/docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java) { #parallelism }
The benefit of parallelizing is that it is easy to scale. In the pancake example
it is easy to add a third frying pan with Patrik's method, but Roland cannot add a third frying pan,
@@ -100,10 +100,10 @@ will employ two chefs, each working using Roland's pipelining method, but we use
Patrik used the two frying pans. This is how it looks like if expressed as streams:
Scala
-: @@snip [FlowParallelismDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala) { #parallel-pipeline }
+: @@snip [FlowParallelismDocSpec.scala](/docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala) { #parallel-pipeline }
Java
-: @@snip [FlowParallelismDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java) { #parallel-pipeline }
+: @@snip [FlowParallelismDocTest.java](/docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java) { #parallel-pipeline }
The above pattern works well if there are many independent jobs that do not depend on the results of each other, but
the jobs themselves need multiple processing steps where each step builds on the result of
@@ -121,10 +121,10 @@ plate.
This is again straightforward to implement with the streams API:
Scala
-: @@snip [FlowParallelismDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala) { #pipelined-parallel }
+: @@snip [FlowParallelismDocSpec.scala](/docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala) { #pipelined-parallel }
Java
-: @@snip [FlowParallelismDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java) { #pipelined-parallel }
+: @@snip [FlowParallelismDocTest.java](/docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java) { #pipelined-parallel }
This usage pattern is less common but might be usable if a certain step in the pipeline might take wildly different
times to finish different jobs. The reason is that there are more balance-merge steps in this pattern
diff --git a/akka-docs/src/main/paradox/stream/stream-quickstart.md b/docs/src/main/paradox/stream/stream-quickstart.md
similarity index 79%
rename from akka-docs/src/main/paradox/stream/stream-quickstart.md
rename to docs/src/main/paradox/stream/stream-quickstart.md
index 55a43d66d6..3f8ed32867 100644
--- a/akka-docs/src/main/paradox/stream/stream-quickstart.md
+++ b/docs/src/main/paradox/stream/stream-quickstart.md
@@ -25,35 +25,35 @@ A stream usually begins at a source, so this is also how we start an Akka
Stream. Before we create one, we import the full complement of streaming tools:
Scala
-: @@snip [QuickStartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #stream-imports }
+: @@snip [QuickStartDocSpec.scala](/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #stream-imports }
Java
-: @@snip [QuickStartDocTest.java](/akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #stream-imports }
+: @@snip [QuickStartDocTest.java](/docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #stream-imports }
If you want to execute the code samples while you read through the quick start guide, you will also need the following imports:
Scala
-: @@snip [QuickStartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #other-imports }
+: @@snip [QuickStartDocSpec.scala](/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #other-imports }
Java
-: @@snip [QuickStartDocTest.java](/akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #other-imports }
+: @@snip [QuickStartDocTest.java](/docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #other-imports }
And @scala[an object]@java[a class] to start an Akka @apidoc[actor.ActorSystem] and hold your code @scala[. Making the `ActorSystem`
implicit makes it available to the streams without manually passing it when running them]:
Scala
-: @@snip [QuickStartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #main-app }
+: @@snip [QuickStartDocSpec.scala](/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #main-app }
Java
-: @@snip [Main.java](/akka-docs/src/test/java/jdocs/stream/Main.java) { #main-app }
+: @@snip [Main.java](/docs/src/test/java/jdocs/stream/Main.java) { #main-app }
Now we will start with a rather simple source, emitting the integers 1 to 100:
Scala
-: @@snip [QuickStartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #create-source }
+: @@snip [QuickStartDocSpec.scala](/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #create-source }
Java
-: @@snip [QuickStartDocTest.java](/akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #create-source }
+: @@snip [QuickStartDocTest.java](/docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #create-source }
The @apidoc[stream.*.Source] type is parameterized with two types: the first one is the
type of element that this source emits and the second one, the "materialized value", allows
@@ -68,10 +68,10 @@ first 100 natural numbers, but this source is not yet active. In order to get
those numbers out we have to run it:
Scala
-: @@snip [QuickStartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #run-source }
+: @@snip [QuickStartDocSpec.scala](/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #run-source }
Java
-: @@snip [QuickStartDocTest.java](/akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #run-source }
+: @@snip [QuickStartDocTest.java](/docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #run-source }
This line will complement the source with a consumer function—in this example
we print out the numbers to the console—and pass this little stream
@@ -84,10 +84,10 @@ terminate, because the @apidoc[actor.ActorSystem] is never terminated. Luckily
@apidoc[runForeach](stream.*.Source) {scala="#runForeach(f:Out=%3EUnit)(implicitmaterializer:org.apache.pekko.stream.Materializer):scala.concurrent.Future[org.apache.pekko.Done]" java="#runForeach(org.apache.pekko.japi.function.Procedure,org.apache.pekko.stream.Materializer)"} returns a @scala[@scaladoc[Future](scala.concurrent.Future)[@apidoc[org.apache.pekko.Done]]]@java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)<@apidoc[org.apache.pekko.Done]>] which resolves when the stream finishes:
Scala
-: @@snip [QuickStartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #run-source-and-terminate }
+: @@snip [QuickStartDocSpec.scala](/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #run-source-and-terminate }
Java
-: @@snip [QuickStartDocTest.java](/akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #run-source-and-terminate }
+: @@snip [QuickStartDocTest.java](/docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #run-source-and-terminate }
The nice thing about Akka Streams is that the `Source` is a
description of what you want to run, and like an architect’s blueprint it can
@@ -95,10 +95,10 @@ be reused, incorporated into a larger design. We may choose to transform the
source of integers and write it to a file instead:
Scala
-: @@snip [QuickStartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #transform-source }
+: @@snip [QuickStartDocSpec.scala](/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #transform-source }
Java
-: @@snip [QuickStartDocTest.java](/akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #transform-source }
+: @@snip [QuickStartDocTest.java](/docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #transform-source }
First we use the @apidoc[scan](stream.*.Source) {scala="#scan[T](zero:T)(f:(T,Out)=%3ET):FlowOps.this.Repr[T]" java="#scan(T,org.apache.pekko.japi.function.Function2)"} operator to run a computation over the whole
stream: starting with the number 1 (@scala[`BigInt(1)`]@java[`BigInteger.ONE`]) we multiply by each of
@@ -119,7 +119,7 @@ whether the stream terminated normally or exceptionally.
Here is another example that you can edit and run in the browser:
-@@fiddle [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #fiddle_code template=Akka layout=v75 minheight=400px }
+@@fiddle [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #fiddle_code template=Akka layout=v75 minheight=400px }
## Reusable Pieces
@@ -134,10 +134,10 @@ plain English), we need a starting point that is like a source but with an
“open” input. In Akka Streams this is called a @apidoc[stream.*.Flow]:
Scala
-: @@snip [QuickStartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #transform-sink }
+: @@snip [QuickStartDocSpec.scala](/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #transform-sink }
Java
-: @@snip [QuickStartDocTest.java](/akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #transform-sink }
+: @@snip [QuickStartDocTest.java](/docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #transform-sink }
Starting from a flow of strings we convert each to `ByteString` and then
feed to the already known file-writing `Sink`. The resulting blueprint
@@ -154,10 +154,10 @@ attaching it to our `factorials` source—after a small adaptation to turn the
numbers into strings:
Scala
-: @@snip [QuickStartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #use-transformed-sink }
+: @@snip [QuickStartDocSpec.scala](/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #use-transformed-sink }
Java
-: @@snip [QuickStartDocTest.java](/akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #use-transformed-sink }
+: @@snip [QuickStartDocTest.java](/docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #use-transformed-sink }
## Time-Based Processing
@@ -170,10 +170,10 @@ second is the factorial of one, and so on. We combine these two by forming
strings like `"3! = 6"`.
Scala
-: @@snip [QuickStartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #add-streams }
+: @@snip [QuickStartDocSpec.scala](/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala) { #add-streams }
Java
-: @@snip [QuickStartDocTest.java](/akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #add-streams }
+: @@snip [QuickStartDocTest.java](/docs/src/test/java/jdocs/stream/QuickStartDocTest.java) { #add-streams }
All operations so far have been time-independent and could have been performed
in the same fashion on strict collections of elements. The next line
@@ -212,10 +212,10 @@ allow to control what should happen in such scenarios.
Here's the data model we'll be working with throughout the quickstart examples:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #model }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #model }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #model }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #model }
@@@ note
@@ -233,18 +233,18 @@ like for example finding all twitter handles of users who tweet about `#akka`.
In order to prepare our environment by creating an @apidoc[actor.ActorSystem] which will be responsible for running the streams we are about to create:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #system-setup }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #system-setup }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #system-setup }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #system-setup }
Let's assume we have a stream of tweets readily available. In Akka this is expressed as a @scala[`Source[Out, M]`]@java[`Source`]:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #tweet-source }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #tweet-source }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #tweet-source }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #tweet-source }
Streams always start flowing from a @scala[`Source[Out,M1]`]@java[`Source`] then can continue through @scala[`Flow[In,Out,M2]`]@java[`Flow`] elements or
more advanced operators to finally be consumed by a @scala[`Sink[In,M3]`]@java[`Sink`] @scala[(ignore the type parameters `M1`, `M2`
@@ -260,10 +260,10 @@ however they operate on streams and not collections of data (which is a very imp
only make sense in streaming and vice versa):
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #authors-filter-map }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #authors-filter-map }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #authors-filter-map }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #authors-filter-map }
Finally in order to @ref:[materialize](stream-flows-and-basics.md#stream-materialization) and run the stream computation we need to attach
the Flow to a @scala[`Sink`]@java[`Sink`] that will get the Flow running. The simplest way to do this is to call
@@ -272,18 +272,18 @@ the @scala[`Sink` companion object]@java[`Sink class`].
For now let's print each author:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #authors-foreachsink-println }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #authors-foreachsink-println }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #authors-foreachsink-println }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #authors-foreachsink-println }
or by using the shorthand version (which are defined only for the most popular Sinks such as @apidoc[Sink.fold](stream.*.Sink$) {scala="#fold[U,T](zero:U)(f:(U,T)=%3EU):org.apache.pekko.stream.scaladsl.Sink[T,scala.concurrent.Future[U]]" java="#fold(U,org.apache.pekko.japi.function.Function2)"} and @apidoc[Sink.foreach](stream.*.Sink$) {scala="#foreach[T](f:T=%3EUnit):org.apache.pekko.stream.scaladsl.Sink[T,scala.concurrent.Future[org.apache.pekko.Done]]" java="#foreach(org.apache.pekko.japi.function.Procedure)"}):
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #authors-foreach-println }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #authors-foreach-println }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #authors-foreach-println }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #authors-foreach-println }
Materializing and running a stream always requires an `ActorSystem` to be @scala[in implicit scope (or passed in explicitly,
like this: @scaladoc[.runWith(sink)(system)](pekko.stream.scaladsl.Source#runWith[Mat2](sink:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SinkShape[Out],Mat2])(implicitmaterializer:org.apache.pekko.stream.Materializer):Mat2))]@java[passed in explicitly, like this: @javadoc[runWith(sink, system)](pekko.stream.javadsl.Source#runWith(org.apache.pekko.stream.Graph,org.apache.pekko.stream.Materializer))].
@@ -291,10 +291,10 @@ like this: @scaladoc[.runWith(sink)(system)](pekko.stream.scaladsl.Source#runWit
The complete snippet looks like this:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #first-sample }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #first-sample }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #first-sample }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #first-sample }
## Flattening sequences in streams
@@ -304,10 +304,10 @@ works on Scala Collections. In order to get a flattened stream of hashtags from
operator:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #hashtags-mapConcat }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #hashtags-mapConcat }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #hashtags-mapConcat }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #hashtags-mapConcat }
@@@ note
@@ -338,10 +338,10 @@ at the expense of not reading as familiarly as collection transformations.
Graphs are constructed using @apidoc[stream.*.GraphDSL$] like this:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #graph-dsl-broadcast }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #graph-dsl-broadcast }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #graph-dsl-broadcast }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #graph-dsl-broadcast }
As you can see, @scala[inside the `GraphDSL` we use an implicit graph builder `b` to mutably construct the graph
using the `~>` "edge operator" (also read as "connect" or "via" or "to"). The operator is provided implicitly
@@ -374,10 +374,10 @@ and must be handled explicitly. For example, if we are only interested in the "*
elements*" this can be expressed using the @apidoc[buffer](stream.*.Source) {scala="#buffer(size:Int,overflowStrategy:org.apache.pekko.stream.OverflowStrategy):FlowOps.this.Repr[Out]" java="#buffer(int,org.apache.pekko.stream.OverflowStrategy)"} element:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #tweets-slow-consumption-dropHead }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #tweets-slow-consumption-dropHead }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #tweets-slow-consumption-dropHead }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #tweets-slow-consumption-dropHead }
The `buffer` element takes an explicit and required @apidoc[stream.OverflowStrategy], which defines how the buffer should react
when it receives another element while it is full. Strategies provided include dropping the oldest element (`dropHead`),
@@ -396,10 +396,10 @@ but in general it is possible to deal with finite streams and come up with a nic
First, let's write such an element counter using @scala[@scaladoc[Sink.fold](pekko.stream.scaladsl.Sink$#fold[U,T](zero:U)(f:(U,T)=%3EU):org.apache.pekko.stream.scaladsl.Sink[T,scala.concurrent.Future[U]]) and]@java[@javadoc[Flow.of(Class)](pekko.stream.javadsl.Flow#of(java.lang.Class)) and @javadoc[Sink.fold](pekko.stream.javadsl.Sink$#fold(U,org.apache.pekko.japi.function.Function2)) to] see how the types look like:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #tweets-fold-count }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #tweets-fold-count }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #tweets-fold-count }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #tweets-fold-count }
@scala[First we prepare a reusable `Flow` that will change each incoming tweet into an integer of value `1`. We'll use this in
order to combine those with a `Sink.fold` that will sum all `Int` elements of the stream and make its result available as
@@ -427,20 +427,20 @@ for example one that consumes a live stream of tweets within a minute, the mater
will be different, as illustrated by this example:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #tweets-runnable-flow-materialized-twice }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #tweets-runnable-flow-materialized-twice }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #tweets-runnable-flow-materialized-twice }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #tweets-runnable-flow-materialized-twice }
Many elements in Akka Streams provide materialized values which can be used for obtaining either results of computation or
steering these elements which will be discussed in detail in @ref:[Stream Materialization](stream-flows-and-basics.md#stream-materialization). Summing up this section, now we know
what happens behind the scenes when we run this one-liner, which is equivalent to the multi line version above:
Scala
-: @@snip [TwitterStreamQuickstartDocSpec.scala](/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #tweets-fold-count-oneline }
+: @@snip [TwitterStreamQuickstartDocSpec.scala](/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala) { #tweets-fold-count-oneline }
Java
-: @@snip [TwitterStreamQuickstartDocTest.java](/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #tweets-fold-count-oneline }
+: @@snip [TwitterStreamQuickstartDocTest.java](/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java) { #tweets-fold-count-oneline }
@@@ note
diff --git a/akka-docs/src/main/paradox/stream/stream-rate.md b/docs/src/main/paradox/stream/stream-rate.md
similarity index 71%
rename from akka-docs/src/main/paradox/stream/stream-rate.md
rename to docs/src/main/paradox/stream/stream-rate.md
index 7fc1c728d1..d7a0c6e1f0 100644
--- a/akka-docs/src/main/paradox/stream/stream-rate.md
+++ b/docs/src/main/paradox/stream/stream-rate.md
@@ -28,10 +28,10 @@ asynchronously means that an operator, after handing out an element to its downs
process the next message. To demonstrate what we mean by this, let's take a look at the following example:
Scala
-: @@snip [StreamBuffersRateSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #pipelining }
+: @@snip [StreamBuffersRateSpec.scala](/docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #pipelining }
Java
-: @@snip [StreamBuffersRateDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #pipelining }
+: @@snip [StreamBuffersRateDocTest.java](/docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #pipelining }
Running the above example, one of the possible outputs looks like this:
@@ -83,18 +83,18 @@ of the stream it is possible by defining a separate
@scala[@scaladoc[`Flow`](pekko.stream.scaladsl.Flow)]@java[@javadoc[`Flow`](pekko.stream.javadsl.Flow)] with these attributes:
Scala
-: @@snip [StreamBuffersRateSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #section-buffer }
+: @@snip [StreamBuffersRateSpec.scala](/docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #section-buffer }
Java
-: @@snip [StreamBuffersRateDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #section-buffer }
+: @@snip [StreamBuffersRateDocTest.java](/docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #section-buffer }
Here is an example of a code that demonstrate some of the issues caused by internal buffers:
Scala
-: @@snip [StreamBuffersRateSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #buffering-abstraction-leak }
+: @@snip [StreamBuffersRateSpec.scala](/docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #buffering-abstraction-leak }
Java
-: @@snip [StreamBuffersRateDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #buffering-abstraction-leak }
+: @@snip [StreamBuffersRateDocTest.java](/docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #buffering-abstraction-leak }
Running the above example one would expect the number *3* to be printed in every 3 seconds (the `conflateWithSeed`
step here is configured so that it counts the number of elements received before the downstream @scala[@scaladoc[`ZipWith`](pekko.stream.scaladsl.ZipWith$)]@java[@javadoc[`ZipWith`](pekko.stream.javadsl.ZipWith$)] consumes
@@ -119,10 +119,10 @@ The example below will ensure that 1000 jobs (but not more) are dequeued from an
stored locally in memory - relieving the external system:
Scala
-: @@snip [StreamBuffersRateSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-backpressure }
+: @@snip [StreamBuffersRateSpec.scala](/docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-backpressure }
Java
-: @@snip [StreamBuffersRateDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-backpressure }
+: @@snip [StreamBuffersRateDocTest.java](/docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-backpressure }
The next example will also queue up 1000 jobs locally, but if there are more jobs waiting
@@ -132,19 +132,19 @@ it must be noted that this will drop the *youngest* waiting job. If some "fairne
we want to be nice to jobs that has been waiting for long, then this option can be useful.
Scala
-: @@snip [StreamBuffersRateSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-droptail }
+: @@snip [StreamBuffersRateSpec.scala](/docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-droptail }
Java
-: @@snip [StreamBuffersRateDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-droptail }
+: @@snip [StreamBuffersRateDocTest.java](/docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-droptail }
Instead of dropping the youngest element from the tail of the buffer a new element can be dropped without
enqueueing it to the buffer at all.
Scala
-: @@snip [StreamBuffersRateSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-dropnew }
+: @@snip [StreamBuffersRateSpec.scala](/docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-dropnew }
Java
-: @@snip [StreamBuffersRateDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-dropnew }
+: @@snip [StreamBuffersRateDocTest.java](/docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-dropnew }
Here is another example with a queue of 1000 jobs, but it makes space for the new element by
dropping one element from the *head* of the buffer. This is the *oldest*
@@ -154,20 +154,20 @@ retransmitted soon, (in fact a retransmitted duplicate might be already in the q
so it makes sense to drop it first.
Scala
-: @@snip [StreamBuffersRateSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-drophead }
+: @@snip [StreamBuffersRateSpec.scala](/docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-drophead }
Java
-: @@snip [StreamBuffersRateDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-drophead }
+: @@snip [StreamBuffersRateDocTest.java](/docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-drophead }
Compared to the dropping strategies above, dropBuffer drops all the 1000
jobs it has enqueued once the buffer gets full. This aggressive strategy
is useful when dropping jobs is preferred to delaying jobs.
Scala
-: @@snip [StreamBuffersRateSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-dropbuffer }
+: @@snip [StreamBuffersRateSpec.scala](/docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-dropbuffer }
Java
-: @@snip [StreamBuffersRateDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-dropbuffer }
+: @@snip [StreamBuffersRateDocTest.java](/docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-dropbuffer }
If our imaginary external job provider is a client using our API, we might
want to enforce that the client cannot have more than 1000 queued jobs
@@ -176,10 +176,10 @@ achievable by the error strategy which fails the stream
once the buffer gets full.
Scala
-: @@snip [StreamBuffersRateSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-fail }
+: @@snip [StreamBuffersRateSpec.scala](/docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala) { #explicit-buffers-fail }
Java
-: @@snip [StreamBuffersRateDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-fail }
+: @@snip [StreamBuffersRateDocTest.java](/docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java) { #explicit-buffers-fail }
## Rate transformation
@@ -192,10 +192,10 @@ Below is an example snippet that summarizes fast stream of elements to a standar
that have arrived while the stats have been calculated.
Scala
-: @@snip [RateTransformationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #conflate-summarize }
+: @@snip [RateTransformationDocSpec.scala](/docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #conflate-summarize }
Java
-: @@snip [RateTransformationDocTest.java](/akka-docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #conflate-summarize }
+: @@snip [RateTransformationDocTest.java](/docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #conflate-summarize }
This example demonstrates that such flow's rate is decoupled. The element rate at the start of the flow can be much
higher than the element rate at the end of the flow.
@@ -205,10 +205,10 @@ The example below demonstrates how `conflate` can be used to randomly drop eleme
to keep up with the producer.
Scala
-: @@snip [RateTransformationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #conflate-sample }
+: @@snip [RateTransformationDocSpec.scala](/docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #conflate-sample }
Java
-: @@snip [RateTransformationDocTest.java](/akka-docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #conflate-sample }
+: @@snip [RateTransformationDocTest.java](/docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #conflate-sample }
See also @ref:[`conflate`](operators/Source-or-Flow/conflate.md) and @ref:[conflateWithSeed`](operators/Source-or-Flow/conflateWithSeed.md) for more information and examples.
@@ -223,36 +223,36 @@ As a simple use case of `extrapolate`, here is a flow that repeats the last emit
the consumer signals demand and the producer cannot supply new elements yet.
Scala
-: @@snip [RateTransformationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #extrapolate-last }
+: @@snip [RateTransformationDocSpec.scala](/docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #extrapolate-last }
Java
-: @@snip [RateTransformationDocTest.java](/akka-docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #extrapolate-last }
+: @@snip [RateTransformationDocTest.java](/docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #extrapolate-last }
For situations where there may be downstream demand before any element is emitted from upstream,
you can use the `initial` parameter of `extrapolate` to "seed" the stream.
Scala
-: @@snip [RateTransformationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #extrapolate-seed }
+: @@snip [RateTransformationDocSpec.scala](/docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #extrapolate-seed }
Java
-: @@snip [RateTransformationDocTest.java](/akka-docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #extrapolate-seed }
+: @@snip [RateTransformationDocTest.java](/docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #extrapolate-seed }
`extrapolate` and `expand` also allow to produce meta-information based on demand signalled from the downstream.
Leveraging this, here is a flow that tracks and reports a drift between a fast consumer and a slow producer.
Scala
-: @@snip [RateTransformationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #extrapolate-drift }
+: @@snip [RateTransformationDocSpec.scala](/docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #extrapolate-drift }
Java
-: @@snip [RateTransformationDocTest.java](/akka-docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #extrapolate-drift }
+: @@snip [RateTransformationDocTest.java](/docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #extrapolate-drift }
And here's a more concise representation with `expand`.
Scala
-: @@snip [RateTransformationDocSpec.scala](/akka-docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #expand-drift }
+: @@snip [RateTransformationDocSpec.scala](/docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala) { #expand-drift }
Java
-: @@snip [RateTransformationDocTest.java](/akka-docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #expand-drift }
+: @@snip [RateTransformationDocTest.java](/docs/src/test/java/jdocs/stream/RateTransformationDocTest.java) { #expand-drift }
The difference is due to the different handling of the `Iterator`-generating argument.
diff --git a/akka-docs/src/main/paradox/stream/stream-refs.md b/docs/src/main/paradox/stream/stream-refs.md
similarity index 89%
rename from akka-docs/src/main/paradox/stream/stream-refs.md
rename to docs/src/main/paradox/stream/stream-refs.md
index 9ace473b99..d3244b346b 100644
--- a/akka-docs/src/main/paradox/stream/stream-refs.md
+++ b/docs/src/main/paradox/stream/stream-refs.md
@@ -83,19 +83,19 @@ In order to share a `Source` with a remote endpoint you need to materialize it b
That `Sink` materializes the `SourceRef` that you can then send to other nodes.
Scala
-: @@snip [FlowStreamRefsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala) { #offer-source }
+: @@snip [FlowStreamRefsDocSpec.scala](/docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala) { #offer-source }
Java
-: @@snip [FlowStreamRefsDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java) { #offer-source }
+: @@snip [FlowStreamRefsDocTest.java](/docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java) { #offer-source }
The origin actor which creates and owns the `Source` could also perform some validation or additional setup
when preparing the `Source`. Once it has handed out the `SourceRef`, the remote side can run it like this:
Scala
-: @@snip [FlowStreamRefsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala) { #offer-source-use }
+: @@snip [FlowStreamRefsDocSpec.scala](/docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala) { #offer-source-use }
Java
-: @@snip [FlowStreamRefsDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java) { #offer-source-use }
+: @@snip [FlowStreamRefsDocTest.java](/docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java) { #offer-source-use }
The process of preparing and running a `SourceRef`-powered distributed stream is shown by the animation below:
@@ -124,19 +124,19 @@ into various other systems (e.g., any of the Alpakka-provided `Sink`s).
@@@
Scala
-: @@snip [FlowStreamRefsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala) { #offer-sink }
+: @@snip [FlowStreamRefsDocSpec.scala](/docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala) { #offer-sink }
Java
-: @@snip [FlowStreamRefsDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java) { #offer-sink }
+: @@snip [FlowStreamRefsDocTest.java](/docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java) { #offer-sink }
Using the offered `SinkRef` to send data to the origin of the `Sink` is also simple, as we can treat the
`SinkRef` as any other `Sink` and directly `runWith` or `run` with it.
Scala
-: @@snip [FlowStreamRefsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala) { #offer-sink-use }
+: @@snip [FlowStreamRefsDocSpec.scala](/docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala) { #offer-sink-use }
Java
-: @@snip [FlowStreamRefsDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java) { #offer-sink-use }
+: @@snip [FlowStreamRefsDocTest.java](/docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java) { #offer-sink-use }
The process of preparing and running a `SinkRef`-powered distributed stream is shown by the animation below:
@@ -201,10 +201,10 @@ many different kinds of them in the same application, it is possible to not only
globally (`akka.stream.materializer.stream-ref.subscription-timeout`), but also via attributes:
Scala
-: @@snip [FlowStreamRefsDocSpec.scala](/akka-docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala) { #attr-sub-timeout }
+: @@snip [FlowStreamRefsDocSpec.scala](/docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala) { #attr-sub-timeout }
Java
-: @@snip [FlowStreamRefsDocTest.java](/akka-docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java) { #attr-sub-timeout }
+: @@snip [FlowStreamRefsDocTest.java](/docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java) { #attr-sub-timeout }
### General configuration
diff --git a/akka-docs/src/main/paradox/stream/stream-substream.md b/docs/src/main/paradox/stream/stream-substream.md
similarity index 80%
rename from akka-docs/src/main/paradox/stream/stream-substream.md
rename to docs/src/main/paradox/stream/stream-substream.md
index fda2bb9e9a..9a258c1a76 100644
--- a/akka-docs/src/main/paradox/stream/stream-substream.md
+++ b/docs/src/main/paradox/stream/stream-substream.md
@@ -30,10 +30,10 @@ operators that create substreams are listed on @ref[Nesting and flattening opera
A typical operation that generates substreams is @apidoc[groupBy](stream.*.Source) {scala="#groupBy[K](maxSubstreams:Int,f:Out=%3EK,allowClosedSubstreamRecreation:Boolean):org.apache.pekko.stream.scaladsl.SubFlow[Out,Mat,FlowOps.this.Repr,FlowOps.this.Closed]" java="#groupBy(int,org.apache.pekko.japi.function.Function,boolean)"}.
Scala
-: @@snip [SubstreamDocSpec.scala](/akka-docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #groupBy1 }
+: @@snip [SubstreamDocSpec.scala](/docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #groupBy1 }
Java
-: @@snip [SubstreamDocTest.java](/akka-docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #groupBy1 }
+: @@snip [SubstreamDocTest.java](/docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #groupBy1 }

@@ -49,10 +49,10 @@ all transformations are applied to all encountered substreams in the same fashio
So, if you add the following `Sink`, that is added to each of the substreams as in the below diagram.
Scala
-: @@snip [SubstreamDocSpec.scala](/akka-docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #groupBy2 }
+: @@snip [SubstreamDocSpec.scala](/docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #groupBy2 }
Java
-: @@snip [SubstreamDocTest.java](/akka-docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #groupBy2 }
+: @@snip [SubstreamDocTest.java](/docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #groupBy2 }

@@ -62,10 +62,10 @@ merge or concat substreams into the main stream again.
The @apidoc[mergeSubstreams](stream.*.SubFlow) {scala="#mergeSubstreams:F[Out]" java="#mergeSubstreams()"} method merges an unbounded number of substreams back to the main stream.
Scala
-: @@snip [SubstreamDocSpec.scala](/akka-docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #groupBy3 }
+: @@snip [SubstreamDocSpec.scala](/docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #groupBy3 }
Java
-: @@snip [SubstreamDocTest.java](/akka-docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #groupBy3 }
+: @@snip [SubstreamDocTest.java](/docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #groupBy3 }

@@ -73,10 +73,10 @@ You can limit the number of active substreams running and being merged at a time
with either the @apidoc[mergeSubstreamsWithParallelism](stream.*.SubFlow) {scala="#mergeSubstreamsWithParallelism(parallelism:Int):F[Out]" java="#mergeSubstreamsWithParallelism(int)"} or @apidoc[concatSubstreams](stream.*.SubFlow) {scala="#concatSubstreams:F[Out]" java="#concatSubstreams()"} method.
Scala
-: @@snip [SubstreamDocSpec.scala](/akka-docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #groupBy4 }
+: @@snip [SubstreamDocSpec.scala](/docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #groupBy4 }
Java
-: @@snip [SubstreamDocTest.java](/akka-docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #groupBy4 }
+: @@snip [SubstreamDocTest.java](/docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #groupBy4 }
However, since the number of running (i.e. not yet completed) substreams is capped,
be careful so that these methods do not cause deadlocks with back pressure like in the below diagram.
@@ -98,19 +98,19 @@ a new substream is generated, and the succeeding elements after split will flow
whereas `splitAfter` flows the next element to the new substream after the element on which predicate returned true.
Scala
-: @@snip [SubstreamDocSpec.scala](/akka-docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #splitWhenAfter }
+: @@snip [SubstreamDocSpec.scala](/docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #splitWhenAfter }
Java
-: @@snip [SubstreamDocTest.java](/akka-docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #splitWhenAfter }
+: @@snip [SubstreamDocTest.java](/docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #splitWhenAfter }
These are useful when you scanned over something and you don't need to care about anything behind it.
A typical example is counting the number of characters for each line like below.
Scala
-: @@snip [SubstreamDocSpec.scala](/akka-docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #wordCount }
+: @@snip [SubstreamDocSpec.scala](/docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #wordCount }
Java
-: @@snip [SubstreamDocTest.java](/akka-docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #wordCount }
+: @@snip [SubstreamDocTest.java](/docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #wordCount }
This prints out the following output.
@@ -133,10 +133,10 @@ The function `f` of `flatMapConcat` transforms each input element into a @apidoc
into the output stream by concatenation.
Scala
-: @@snip [SubstreamDocSpec.scala](/akka-docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #flatMapConcat }
+: @@snip [SubstreamDocSpec.scala](/docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #flatMapConcat }
Java
-: @@snip [SubstreamDocTest.java](/akka-docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #flatMapConcat }
+: @@snip [SubstreamDocTest.java](/docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #flatMapConcat }

@@ -154,9 +154,9 @@ Elements from all the substreams are concatenated to the sink.
Instead, up to `breadth` number of streams emit elements at any given time.
Scala
-: @@snip [SubstreamDocSpec.scala](/akka-docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #flatMapMerge }
+: @@snip [SubstreamDocSpec.scala](/docs/src/test/scala/docs/stream/SubstreamDocSpec.scala) { #flatMapMerge }
Java
-: @@snip [SubstreamDocTest.java](/akka-docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #flatMapMerge }
+: @@snip [SubstreamDocTest.java](/docs/src/test/java/jdocs/stream/SubstreamDocTest.java) { #flatMapMerge }

diff --git a/akka-docs/src/main/paradox/stream/stream-testkit.md b/docs/src/main/paradox/stream/stream-testkit.md
similarity index 71%
rename from akka-docs/src/main/paradox/stream/stream-testkit.md
rename to docs/src/main/paradox/stream/stream-testkit.md
index 7610e47fec..21a93238be 100644
--- a/akka-docs/src/main/paradox/stream/stream-testkit.md
+++ b/docs/src/main/paradox/stream/stream-testkit.md
@@ -37,10 +37,10 @@ asserting on the results that sink produced. Here is an example of a test for a
sink:
Scala
-: @@snip [StreamTestKitDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #strict-collection }
+: @@snip [StreamTestKitDocSpec.scala](/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #strict-collection }
Java
-: @@snip [StreamTestKitDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #strict-collection }
+: @@snip [StreamTestKitDocTest.java](/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #strict-collection }
The same strategy can be applied for sources as well. In the next example we
have a source that produces an infinite stream of elements. Such source can be
@@ -48,20 +48,20 @@ tested by asserting that first arbitrary number of elements hold some
condition. Here the @apidoc[take](stream.*.Source) {scala="#take(n:Long):FlowOps.this.Repr[Out]" java="#take(long)"} operator and @apidoc[Sink.seq](stream.*.Sink$) {scala="#seq[T]:org.apache.pekko.stream.scaladsl.Sink[T,scala.concurrent.Future[Seq[T]]]" java="#seq()"} are very useful.
Scala
-: @@snip [StreamTestKitDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #grouped-infinite }
+: @@snip [StreamTestKitDocSpec.scala](/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #grouped-infinite }
Java
-: @@snip [StreamTestKitDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #grouped-infinite }
+: @@snip [StreamTestKitDocTest.java](/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #grouped-infinite }
When testing a flow we need to attach a source and a sink. As both stream ends
are under our control, we can choose sources that tests various edge cases of
the flow and sinks that ease assertions.
Scala
-: @@snip [StreamTestKitDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #folded-stream }
+: @@snip [StreamTestKitDocSpec.scala](/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #folded-stream }
Java
-: @@snip [StreamTestKitDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #folded-stream }
+: @@snip [StreamTestKitDocTest.java](/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #folded-stream }
## TestKit
@@ -74,10 +74,10 @@ One of the more straightforward tests would be to materialize stream to a
to the probe.
Scala
-: @@snip [StreamTestKitDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #pipeto-testprobe }
+: @@snip [StreamTestKitDocSpec.scala](/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #pipeto-testprobe }
Java
-: @@snip [StreamTestKitDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #pipeto-testprobe }
+: @@snip [StreamTestKitDocTest.java](/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #pipeto-testprobe }
Instead of materializing to a future, we can use a @apidoc[Sink.actorRef](stream.*.Sink$) {scala="#actorRef[T](ref:org.apache.pekko.actor.ActorRef,onCompleteMessage:Any,onFailureMessage:Throwable=%3EAny):org.apache.pekko.stream.scaladsl.Sink[T,org.apache.pekko.NotUsed]" java="#actorRef(org.apache.pekko.actor.ActorRef,java.lang.Object)"} that
sends all incoming elements to the given @apidoc[actor.ActorRef]. Now we can use
@@ -86,20 +86,20 @@ arrive. We can also assert stream completion by expecting for
`onCompleteMessage` which was given to `Sink.actorRef`.
Scala
-: @@snip [StreamTestKitDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #sink-actorref }
+: @@snip [StreamTestKitDocSpec.scala](/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #sink-actorref }
Java
-: @@snip [StreamTestKitDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #sink-actorref }
+: @@snip [StreamTestKitDocTest.java](/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #sink-actorref }
Similarly to `Sink.actorRef` that provides control over received
elements, we can use @apidoc[Source.actorRef](stream.*.Source$) {scala="#actorRef[T](completionMatcher:PartialFunction[Any,org.apache.pekko.stream.CompletionStrategy],failureMatcher:PartialFunction[Any,Throwable],bufferSize:Int,overflowStrategy:org.apache.pekko.stream.OverflowStrategy):org.apache.pekko.stream.scaladsl.Source[T,org.apache.pekko.actor.ActorRef]" java="#actorRef(int,org.apache.pekko.stream.OverflowStrategy)"} and have full control over
elements to be sent.
Scala
-: @@snip [StreamTestKitDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #source-actorref }
+: @@snip [StreamTestKitDocSpec.scala](/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #source-actorref }
Java
-: @@snip [StreamTestKitDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #source-actorref }
+: @@snip [StreamTestKitDocTest.java](/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #source-actorref }
## Streams TestKit
@@ -115,35 +115,35 @@ A sink returned by @apidoc[TestSink.probe](stream.testkit.*.TestSink$) {scala="#
assertions over elements coming downstream.
Scala
-: @@snip [StreamTestKitDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #test-sink-probe }
+: @@snip [StreamTestKitDocSpec.scala](/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #test-sink-probe }
Java
-: @@snip [StreamTestKitDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #test-sink-probe }
+: @@snip [StreamTestKitDocTest.java](/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #test-sink-probe }
A source returned by @apidoc[TestSource.probe](stream.testkit.*.TestSource$) {scala="#probe[T](implicitsystem:org.apache.pekko.actor.ActorSystem):org.apache.pekko.stream.scaladsl.Source[T,org.apache.pekko.stream.testkit.TestPublisher.Probe[T]]" java="#probe(org.apache.pekko.actor.ActorSystem)"} can be used for asserting demand or
controlling when stream is completed or ended with an error.
Scala
-: @@snip [StreamTestKitDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #test-source-probe }
+: @@snip [StreamTestKitDocSpec.scala](/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #test-source-probe }
Java
-: @@snip [StreamTestKitDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #test-source-probe }
+: @@snip [StreamTestKitDocTest.java](/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #test-source-probe }
You can also inject exceptions and test sink behavior on error conditions.
Scala
-: @@snip [StreamTestKitDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #injecting-failure }
+: @@snip [StreamTestKitDocSpec.scala](/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #injecting-failure }
Java
-: @@snip [StreamTestKitDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #injecting-failure }
+: @@snip [StreamTestKitDocTest.java](/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #injecting-failure }
Test source and sink can be used together in combination when testing flows.
Scala
-: @@snip [StreamTestKitDocSpec.scala](/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #test-source-and-sink }
+: @@snip [StreamTestKitDocSpec.scala](/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala) { #test-source-and-sink }
Java
-: @@snip [StreamTestKitDocTest.java](/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #test-source-and-sink }
+: @@snip [StreamTestKitDocTest.java](/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java) { #test-source-and-sink }
## Fuzzing Mode
diff --git a/akka-docs/src/main/paradox/supervision-classic.md b/docs/src/main/paradox/supervision-classic.md
similarity index 100%
rename from akka-docs/src/main/paradox/supervision-classic.md
rename to docs/src/main/paradox/supervision-classic.md
diff --git a/akka-docs/src/main/paradox/testing.md b/docs/src/main/paradox/testing.md
similarity index 84%
rename from akka-docs/src/main/paradox/testing.md
rename to docs/src/main/paradox/testing.md
index ad4d0ed121..5064db9c05 100644
--- a/akka-docs/src/main/paradox/testing.md
+++ b/docs/src/main/paradox/testing.md
@@ -47,10 +47,10 @@ The `TestKit` class contains a collection of tools which makes this
common task easy.
Scala
-: @@snip [PlainWordSpec.scala](/akka-docs/src/test/scala/docs/testkit/PlainWordSpec.scala) { #plain-spec }
+: @@snip [PlainWordSpec.scala](/docs/src/test/scala/docs/testkit/PlainWordSpec.scala) { #plain-spec }
Java
-: @@snip [TestKitSampleTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitSampleTest.java) { #fullsample }
+: @@snip [TestKitSampleTest.java](/docs/src/test/java/jdocs/testkit/TestKitSampleTest.java) { #fullsample }
The `TestKit` contains an actor named `testActor` which is the
entry point for messages to be examined with the various `expectMsg...`
@@ -80,10 +80,10 @@ The above-mentioned @scala[`expectMsg`]@java[`expectMsgEquals`] is not the only
assertions concerning received messages, the full set is this:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-expect }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-expect }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-expect }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-expect }
In these examples, the maximum durations you will find mentioned below are left
out, in which case they use the default value from the configuration item
@@ -226,10 +226,10 @@ allows assertions on log messages, including those which are generated by
exceptions:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #event-filter }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #event-filter }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-event-filter }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-event-filter }
If the number of occurrences is specific—as demonstrated above—then `intercept`
will block until that number of matching messages have been received or the
@@ -257,18 +257,18 @@ you want to test timing-sensitive behavior this can come in handy. Say for
instance you want to test an actor that schedules a task:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #timer }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #timer }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #timer }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #timer }
You can override the method that does the scheduling in your test:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #timer-test }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #timer-test }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #timer-test }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #timer-test }
### Timing Assertions
@@ -281,10 +281,10 @@ checked external to the examination, which is facilitated by a new construct
for managing time constraints:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-within }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-within }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-within }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-within }
The block @scala[given to]@java[in] `within` must complete after a duration which
is between `min` and `max`, where the former defaults to zero. The
@@ -327,10 +327,10 @@ You can scale other durations with the same factor by using the @scala[implicit
in `akka.testkit` package object to add dilated function to `Duration`]@java[`dilated` method in `TestKit`].
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #duration-dilation }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #duration-dilation }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #duration-dilation }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #duration-dilation }
@@@ div { .group-scala }
@@ -339,7 +339,7 @@ Java
If you want the sender of messages inside your TestKit-based tests to be the `testActor`
mix in `ImplicitSender` into your test.
-@@snip [PlainWordSpec.scala](/akka-docs/src/test/scala/docs/testkit/PlainWordSpec.scala) { #implicit-sender }
+@@snip [PlainWordSpec.scala](/docs/src/test/scala/docs/testkit/PlainWordSpec.scala) { #implicit-sender }
@@@
@@ -354,12 +354,12 @@ implementation called `TestProbe`.] The functionality is best explained
using a small example:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #imports-test-probe }
-@@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #my-double-echo }
-@@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #imports-test-probe }
+@@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #my-double-echo }
+@@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-probe }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-probe }
@scala[Here the system under test is simulated by `MyDoubleEcho`, which is
supposed to mirror its input to two outputs. Attaching two test probes enables
@@ -374,19 +374,19 @@ If you have many test probes, you can name them to get meaningful actor names
in test logs and assertions:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe-with-custom-name }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe-with-custom-name }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-probe-with-custom-name }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-probe-with-custom-name }
Probes may also be equipped with custom assertions to make your test code even
more concise and clear:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-special-probe }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-special-probe }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-special-probe }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-special-probe }
You have complete flexibility here in mixing and matching the `TestKit`
facilities with your checks and choosing an intuitive name for it. In real
@@ -409,10 +409,10 @@ means that it is dangerous to try watching e.g. `TestActorRef` from a
A @scala[`TestProbe`]@java[`TestKit`] can register itself for DeathWatch of any other actor:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe-watch }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe-watch }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-probe-watch }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-probe-watch }
#### Replying to Messages Received by Probes
@@ -423,10 +423,10 @@ so they can also reply]@java[The probe stores the sender of the last dequeued me
for having the probe reply to the last received message]:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe-reply }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe-reply }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-probe-reply }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-probe-reply }
#### Forwarding Messages Received by Probes
@@ -438,11 +438,11 @@ network functioning]@java[The probe can also forward a received message (i.e. af
reception), retaining the original sender]:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe-forward-actors }
-@@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe-forward }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe-forward-actors }
+@@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-probe-forward }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-probe-forward }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-probe-forward }
@scala[The `dest` actor will receive the same message invocation as if no test probe
had intervened.]
@@ -460,7 +460,7 @@ Scala
: @@snip [TestProbeSpec.scala](/akka-testkit/src/test/scala/org/apache/pekko/testkit/TestProbeSpec.scala) { #autopilot }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-auto-pilot }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-auto-pilot }
The `run` method must return the auto-pilot for the next message, @scala[which
can be `KeepRunning` to retain the current one or `NoAutoPilot`
@@ -476,10 +476,10 @@ do not react to each other's deadlines or the deadline set in an enclosing
`TestKit` instance:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-within-probe }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-within-probe }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-within-probe }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-within-probe }
Here, the @scala[`expectMsg`]@java[`expectMsgEquals`] call will use the default timeout.
@@ -501,10 +501,10 @@ Conversely, a parent's binding to its child can be lessened as follows:
For example, the structure of the code you want to test may follow this pattern:
Scala
-: @@snip [ParentChildSpec.scala](/akka-docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #test-example }
+: @@snip [ParentChildSpec.scala](/docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #test-example }
Java
-: @@snip [ParentChildTest.java](/akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-example }
+: @@snip [ParentChildTest.java](/docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-example }
#### Introduce a child to its parent
@@ -512,10 +512,10 @@ The first option is to avoid the use of the `context.parent` function and create
a child with a custom parent by passing an explicit reference to its parent instead.
Scala
-: @@snip [ParentChildSpec.scala](/akka-docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #test-dependentchild }
+: @@snip [ParentChildSpec.scala](/docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #test-dependentchild }
Java
-: @@snip [ParentChildTest.java](/akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-dependentchild }
+: @@snip [ParentChildTest.java](/docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-dependentchild }
#### Create the child using @scala[TestProbe]@java[TestKit]
@@ -524,10 +524,10 @@ This will cause any messages the child actor sends to @scala[*context.parent*]@j
end up in the test probe.
Scala
-: @@snip [ParentChildSpec.scala](/akka-docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #test-TestProbe-parent }
+: @@snip [ParentChildSpec.scala](/docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #test-TestProbe-parent }
Java
-: @@snip [ParentChildTest.java](/akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-TestProbe-parent }
+: @@snip [ParentChildTest.java](/docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-TestProbe-parent }
#### Using a fabricated parent
@@ -536,11 +536,11 @@ create a fabricated parent in your test. This, however, does not enable you to t
the parent actor in isolation.
Scala
-: @@snip [ParentChildSpec.scala](/akka-docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #test-fabricated-parent }
+: @@snip [ParentChildSpec.scala](/docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #test-fabricated-parent }
Java
-: @@snip [ParentChildTest.java](/akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-fabricated-parent-creator }
-@@snip [ParentChildTest.java](/akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-fabricated-parent }
+: @@snip [ParentChildTest.java](/docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-fabricated-parent-creator }
+@@snip [ParentChildTest.java](/docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-fabricated-parent }
#### Externalize child making from the parent
@@ -548,28 +548,28 @@ Alternatively, you can tell the parent how to create its child. There are two wa
to do this: by giving it a `Props` object or by giving it a function which takes care of creating the child actor:
Scala
-: @@snip [ParentChildSpec.scala](/akka-docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #test-dependentparent }
+: @@snip [ParentChildSpec.scala](/docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #test-dependentparent }
Java
-: @@snip [ParentChildTest.java](/akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-dependentparent }
-@@snip [ParentChildTest.java](/akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-dependentparent-generic }
+: @@snip [ParentChildTest.java](/docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-dependentparent }
+@@snip [ParentChildTest.java](/docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #test-dependentparent-generic }
Creating the @scala[`Props`]@java[`Actor`] is straightforward and the function may look like this in your test code:
Scala
-: @@snip [ParentChildSpec.scala](/akka-docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #child-maker-test }
+: @@snip [ParentChildSpec.scala](/docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #child-maker-test }
Java
-: @@snip [ParentChildTest.java](/akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #child-maker-test }
+: @@snip [ParentChildTest.java](/docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #child-maker-test }
And like this in your application code:
Scala
-: @@snip [ParentChildSpec.scala](/akka-docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #child-maker-prod }
+: @@snip [ParentChildSpec.scala](/docs/src/test/scala/docs/testkit/ParentChildSpec.scala) { #child-maker-prod }
Java
-: @@snip [ParentChildTest.java](/akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #child-maker-prod }
+: @@snip [ParentChildTest.java](/docs/src/test/java/jdocs/testkit/ParentChildTest.java) { #child-maker-prod }
Which of these methods is the best depends on what is most important to test. The
most generic option is to create the parent actor by passing it a function that is
@@ -592,10 +592,10 @@ so long as all intervening actors run on this dispatcher.
Just set the dispatcher as you normally would:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #calling-thread-dispatcher }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #calling-thread-dispatcher }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #calling-thread-dispatcher }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #calling-thread-dispatcher }
### How it works
@@ -718,7 +718,7 @@ options:
`akka.actor.debug.receive` — which enables the `loggable`
statement to be applied to an actor’s `receive` function:
-@@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #logging-receive }
+@@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #logging-receive }
If the aforementioned setting is not given in the @ref:[Configuration](general/configuration-reference.md#config-akka-actor), this method will
pass through the given `Receive` function unmodified, meaning that
@@ -774,7 +774,7 @@ support.
If for some reason it is a problem to inherit from `TestKit` due to it
being a concrete class instead of a trait, there’s `TestKitBase`:
-@@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-kit-base }
+@@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-kit-base }
The `implicit lazy val system` must be declared exactly like that (you can of
course pass arguments to the actor system factory as needed) because trait
@@ -815,7 +815,7 @@ Ray Roestenburg's example code from his blog, which unfortunately is only availa
[web archive](https://web.archive.org/web/20180114133958/http://roestenburg.agilesquad.com/2011/02/unit-testing-akka-actors-with-testkit_12.html),
adapted to work with Akka 2.x.
-@@snip [TestKitUsageSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestKitUsageSpec.scala) { #testkit-usage }
+@@snip [TestKitUsageSpec.scala](/docs/src/test/scala/docs/testkit/TestKitUsageSpec.scala) { #testkit-usage }
@@@
@@ -861,10 +861,10 @@ traditional unit testing techniques on the contained methods. Obtaining a
reference is done like this:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-actor-ref }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-actor-ref }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-actor-ref }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-actor-ref }
Since `TestActorRef` is generic in the actor type it returns the
underlying actor with its proper static type. From this point on you may bring
@@ -880,7 +880,7 @@ If your actor under test is an `FSM`, you may use the special
`TestFSMRef` which offers all features of a normal `TestActorRef`
and besides allows access to the internal state:
-@@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-fsm-ref }
+@@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-fsm-ref }
Due to a limitation in Scala’s type inference, there is only the factory method
shown above, so you will probably write code like `TestFSMRef(new MyFSM)`
@@ -910,10 +910,10 @@ described below (see @ref:[CallingThreadDispatcher](#callingthreaddispatcher));
implicitly for any actor instantiated into a `TestActorRef`.
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-behavior }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-behavior }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-behavior }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-behavior }
As the `TestActorRef` is a subclass of `LocalActorRef` with a few
special extras, also aspects like supervision and restarting work properly, but
@@ -944,10 +944,10 @@ the `receive` method on `TestActorRef`, which will be forwarded to the
underlying actor:
Scala
-: @@snip [TestkitDocSpec.scala](/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-expecting-exceptions }
+: @@snip [TestkitDocSpec.scala](/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala) { #test-expecting-exceptions }
Java
-: @@snip [TestKitDocTest.java](/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-expecting-exceptions }
+: @@snip [TestKitDocTest.java](/docs/src/test/java/jdocs/testkit/TestKitDocTest.java) { #test-expecting-exceptions }
### Use Cases
diff --git a/akka-docs/src/main/paradox/typed/actor-discovery.md b/docs/src/main/paradox/typed/actor-discovery.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/actor-discovery.md
rename to docs/src/main/paradox/typed/actor-discovery.md
diff --git a/akka-docs/src/main/paradox/typed/actor-lifecycle.md b/docs/src/main/paradox/typed/actor-lifecycle.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/actor-lifecycle.md
rename to docs/src/main/paradox/typed/actor-lifecycle.md
diff --git a/akka-docs/src/main/paradox/typed/actors.md b/docs/src/main/paradox/typed/actors.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/actors.md
rename to docs/src/main/paradox/typed/actors.md
diff --git a/akka-docs/src/main/paradox/typed/choosing-cluster.md b/docs/src/main/paradox/typed/choosing-cluster.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/choosing-cluster.md
rename to docs/src/main/paradox/typed/choosing-cluster.md
diff --git a/akka-docs/src/main/paradox/typed/cluster-concepts.md b/docs/src/main/paradox/typed/cluster-concepts.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/cluster-concepts.md
rename to docs/src/main/paradox/typed/cluster-concepts.md
diff --git a/akka-docs/src/main/paradox/typed/cluster-dc.md b/docs/src/main/paradox/typed/cluster-dc.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/cluster-dc.md
rename to docs/src/main/paradox/typed/cluster-dc.md
diff --git a/akka-docs/src/main/paradox/typed/cluster-membership.md b/docs/src/main/paradox/typed/cluster-membership.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/cluster-membership.md
rename to docs/src/main/paradox/typed/cluster-membership.md
diff --git a/akka-docs/src/main/paradox/typed/cluster-sharded-daemon-process.md b/docs/src/main/paradox/typed/cluster-sharded-daemon-process.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/cluster-sharded-daemon-process.md
rename to docs/src/main/paradox/typed/cluster-sharded-daemon-process.md
diff --git a/akka-docs/src/main/paradox/typed/cluster-sharding-concepts.md b/docs/src/main/paradox/typed/cluster-sharding-concepts.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/cluster-sharding-concepts.md
rename to docs/src/main/paradox/typed/cluster-sharding-concepts.md
diff --git a/akka-docs/src/main/paradox/typed/cluster-sharding.md b/docs/src/main/paradox/typed/cluster-sharding.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/cluster-sharding.md
rename to docs/src/main/paradox/typed/cluster-sharding.md
diff --git a/akka-docs/src/main/paradox/typed/cluster-singleton.md b/docs/src/main/paradox/typed/cluster-singleton.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/cluster-singleton.md
rename to docs/src/main/paradox/typed/cluster-singleton.md
diff --git a/akka-docs/src/main/paradox/typed/cluster.md b/docs/src/main/paradox/typed/cluster.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/cluster.md
rename to docs/src/main/paradox/typed/cluster.md
diff --git a/akka-docs/src/main/paradox/typed/coexisting.md b/docs/src/main/paradox/typed/coexisting.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/coexisting.md
rename to docs/src/main/paradox/typed/coexisting.md
diff --git a/akka-docs/src/main/paradox/typed/cqrs.md b/docs/src/main/paradox/typed/cqrs.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/cqrs.md
rename to docs/src/main/paradox/typed/cqrs.md
diff --git a/akka-docs/src/main/paradox/typed/dispatchers.md b/docs/src/main/paradox/typed/dispatchers.md
similarity index 88%
rename from akka-docs/src/main/paradox/typed/dispatchers.md
rename to docs/src/main/paradox/typed/dispatchers.md
index eaeb96af22..baae8db387 100644
--- a/akka-docs/src/main/paradox/typed/dispatchers.md
+++ b/docs/src/main/paradox/typed/dispatchers.md
@@ -44,10 +44,10 @@ be replaced by another dispatcher by making `akka.actor.internal-dispatcher` an
Dispatchers implement the @scala[`ExecutionContext`]@java[`Executor`] interface and can thus be used to run @scala[`Future`]@java[`CompletableFuture`] invocations etc.
Scala
-: @@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/actor/typed/DispatcherDocSpec.scala) { #lookup }
+: @@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/actor/typed/DispatcherDocSpec.scala) { #lookup }
Java
-: @@snip [DispatcherDocTest.java](/akka-docs/src/test/java/jdocs/actor/typed/DispatcherDocTest.java) { #lookup }
+: @@snip [DispatcherDocTest.java](/docs/src/test/java/jdocs/actor/typed/DispatcherDocTest.java) { #lookup }
## Selecting a dispatcher
@@ -104,7 +104,7 @@ There are 2 different types of message dispatchers:
Here is an example configuration of a Fork Join Pool dispatcher:
-@@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #my-dispatcher-config }
+@@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #my-dispatcher-config }
For more configuration options, see the @ref:[More dispatcher configuration examples](#more-dispatcher-configuration-examples)
section and the `default-dispatcher` section of the @ref:[configuration](../general/configuration.md).
@@ -155,10 +155,10 @@ blocking when you cannot avoid it.
Simply adding blocking calls to your actor message processing like this is problematic:
Scala
-: @@snip [BlockingDispatcherSample.scala](/akka-docs/src/test/scala/docs/actor/typed/BlockingActor.scala) { #blocking-in-actor }
+: @@snip [BlockingDispatcherSample.scala](/docs/src/test/scala/docs/actor/typed/BlockingActor.scala) { #blocking-in-actor }
Java
-: @@snip [BlockingActor.java](/akka-docs/src/test/java/jdocs/actor/typed/BlockingActor.java) { #blocking-in-actor }
+: @@snip [BlockingActor.java](/docs/src/test/java/jdocs/actor/typed/BlockingActor.java) { #blocking-in-actor }
Without any further configuration the default dispatcher runs this actor along
with all other actors. This is very efficient when all actor message processing is
@@ -182,17 +182,17 @@ including Streams, HTTP and other reactive libraries built on top of it.
To demonstrate this problem, let's set up an application with the above `BlockingActor` and the following `PrintActor`:
Scala
-: @@snip [PrintActor.scala](/akka-docs/src/test/scala/docs/actor/typed/PrintActor.scala) { #print-actor }
+: @@snip [PrintActor.scala](/docs/src/test/scala/docs/actor/typed/PrintActor.scala) { #print-actor }
Java
-: @@snip [PrintActor.java](/akka-docs/src/test/java/jdocs/actor/typed/PrintActor.java) { #print-actor }
+: @@snip [PrintActor.java](/docs/src/test/java/jdocs/actor/typed/PrintActor.java) { #print-actor }
Scala
-: @@snip [BlockingDispatcherSample.scala](/akka-docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala) { #blocking-main }
+: @@snip [BlockingDispatcherSample.scala](/docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala) { #blocking-main }
Java
-: @@snip [BlockingDispatcherTest.java](/akka-docs/src/test/java/jdocs/actor/typed/BlockingDispatcherTest.java) { #blocking-main }
+: @@snip [BlockingDispatcherTest.java](/docs/src/test/java/jdocs/actor/typed/BlockingDispatcherTest.java) { #blocking-main }
Here the app is sending 100 messages to `BlockingActor`s and `PrintActor`s and large numbers
@@ -259,7 +259,7 @@ find bottlenecks or run out of memory or threads when the application runs
under increased load.
Scala
-: @@snip [BlockingDispatcherSample.scala](/akka-docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala) { #blocking-in-future }
+: @@snip [BlockingDispatcherSample.scala](/docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala) { #blocking-in-future }
The key problematic line here is this:
@@ -283,7 +283,7 @@ In `application.conf`, the dispatcher dedicated to blocking behavior should
be configured as follows:
-@@snip [BlockingDispatcherSample.scala](/akka-docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala) { #my-blocking-dispatcher-config }
+@@snip [BlockingDispatcherSample.scala](/docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala) { #my-blocking-dispatcher-config }
A `thread-pool-executor` based dispatcher allows us to limit the number of threads it will host,
and this way we gain tight control over the maximum number of blocked threads the system may use.
@@ -294,10 +294,10 @@ Whenever blocking has to be done, use the above configured dispatcher
instead of the default one:
Scala
-: @@snip [BlockingDispatcherSample.scala](/akka-docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala) { #separate-dispatcher }
+: @@snip [BlockingDispatcherSample.scala](/docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala) { #separate-dispatcher }
Java
-: @@snip [SeparateDispatcherCompletionStageActor.java](/akka-docs/src/test/java/jdocs/actor/typed/SeparateDispatcherCompletionStageActor.java) { #separate-dispatcher }
+: @@snip [SeparateDispatcherCompletionStageActor.java](/docs/src/test/java/jdocs/actor/typed/SeparateDispatcherCompletionStageActor.java) { #separate-dispatcher }
The thread pool behavior is shown in the below diagram.
@@ -361,14 +361,14 @@ it in `application.conf` and instantiate through an
Configuring a dispatcher with fixed thread pool size, e.g. for actors that perform blocking IO:
-@@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #fixed-pool-size-dispatcher-config }
+@@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) { #fixed-pool-size-dispatcher-config }
### Cores
Another example that uses the thread pool based on the number of cores (e.g. for CPU bound tasks)
-@@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) {#my-thread-pool-dispatcher-config }
+@@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) {#my-thread-pool-dispatcher-config }
### Pinned
@@ -377,7 +377,7 @@ A separate thread is dedicated for each actor that is configured to use the pinn
Configuring a `PinnedDispatcher`:
-@@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) {#my-pinned-dispatcher-config }
+@@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) {#my-pinned-dispatcher-config }
Note that `thread-pool-executor` configuration as per the above `my-thread-pool-dispatcher` example is
NOT applicable. This is because every actor will have its own thread pool when using `PinnedDispatcher`,
@@ -394,7 +394,7 @@ Both the `fork-join-executor` and `thread-pool-executor` may shutdown threads wh
If it's desired to keep the threads alive longer there are some timeout settings that can be adjusted.
-@@snip [DispatcherDocSpec.scala](/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) {#my-dispatcher-with-timeouts-config }
+@@snip [DispatcherDocSpec.scala](/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala) {#my-dispatcher-with-timeouts-config }
When using the dispatcher as an `ExecutionContext` without assigning actors to it the `shutdown-timeout` should
typically be increased, since the default of 1 second may cause too frequent shutdown of the entire thread pool.
diff --git a/akka-docs/src/main/paradox/typed/distributed-data.md b/docs/src/main/paradox/typed/distributed-data.md
similarity index 91%
rename from akka-docs/src/main/paradox/typed/distributed-data.md
rename to docs/src/main/paradox/typed/distributed-data.md
index 9ceca0f085..88a230d9c4 100644
--- a/akka-docs/src/main/paradox/typed/distributed-data.md
+++ b/docs/src/main/paradox/typed/distributed-data.md
@@ -364,10 +364,10 @@ as two internal `GCounter`s. Merge is handled by merging the internal P and N co
The value of the counter is the value of the P counter minus the value of the N counter.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #pncounter }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #pncounter }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #pncounter }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #pncounter }
`GCounter` and `PNCounter` have support for @ref:[delta-CRDT](#delta-crdt) and don't need causal
delivery of deltas.
@@ -378,10 +378,10 @@ values they are guaranteed to be replicated together as one unit, which is somet
related data.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #pncountermap }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #pncountermap }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #pncountermap }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #pncountermap }
### Sets
@@ -390,10 +390,10 @@ the data type to use. The elements can be any type of values that can be seriali
Merge is the union of the two sets.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #gset }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #gset }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #gset }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #gset }
`GSet` has support for @ref:[delta-CRDT](#delta-crdt) and it doesn't require causal delivery of deltas.
@@ -407,10 +407,10 @@ called "birth dot". The version vector and the dots are used by the `merge` func
track causality of the operations and resolve concurrent updates.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #orset }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #orset }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #orset }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #orset }
`ORSet` has support for @ref:[delta-CRDT](#delta-crdt) and it requires causal delivery of deltas.
@@ -452,10 +452,10 @@ uses delta propagation to deliver updates. Effectively, the update for map is th
being the key and full update for the respective value (`ORSet`, `PNCounter` or `LWWRegister`) kept in the map.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #ormultimap }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #ormultimap }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #ormultimap }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #ormultimap }
When a data entry is changed the full state of that entry is replicated to other nodes, i.e.
when you update a map, the whole map is replicated. Therefore, instead of using one `ORMap`
@@ -491,10 +491,10 @@ in the below section about `LWWRegister`.
to `true`. Thereafter it cannot be changed. `true` wins over `false` in merge.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #flag }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #flag }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #flag }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #flag }
`LWWRegister` (last writer wins register) can hold any (serializable) value.
@@ -506,20 +506,20 @@ Merge takes the register updated by the node with lowest address (`UniqueAddress
if the timestamps are exactly the same.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #lwwregister }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #lwwregister }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #lwwregister }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #lwwregister }
Instead of using timestamps based on `System.currentTimeMillis()` time it is possible to
use a timestamp value based on something else, for example an increasing version number
from a database record that is used for optimistic concurrency control.
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #lwwregister-custom-clock }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #lwwregister-custom-clock }
Java
-: @@snip [DistributedDataDocTest.java](/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #lwwregister-custom-clock }
+: @@snip [DistributedDataDocTest.java](/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java) { #lwwregister-custom-clock }
For first-write-wins semantics you can use the `LWWRegister#reverseClock` instead of the
`LWWRegister#defaultClock`.
@@ -577,10 +577,10 @@ to keep track of addition and removals. A `TwoPhaseSet` is a set where an eleme
removed, but never added again thereafter.
Scala
-: @@snip [TwoPhaseSet.scala](/akka-docs/src/test/scala/docs/ddata/TwoPhaseSet.scala) { #twophaseset }
+: @@snip [TwoPhaseSet.scala](/docs/src/test/scala/docs/ddata/TwoPhaseSet.scala) { #twophaseset }
Java
-: @@snip [TwoPhaseSet.java](/akka-docs/src/test/java/jdocs/ddata/TwoPhaseSet.java) { #twophaseset }
+: @@snip [TwoPhaseSet.java](/docs/src/test/java/jdocs/ddata/TwoPhaseSet.java) { #twophaseset }
Data types should be immutable, i.e. "modifying" methods should return a new instance.
@@ -600,40 +600,40 @@ deterministically in the serialization.
This is a protobuf representation of the above `TwoPhaseSet`:
-@@snip [TwoPhaseSetMessages.proto](/akka-docs/src/test/../main/protobuf/TwoPhaseSetMessages.proto) { #twophaseset }
+@@snip [TwoPhaseSetMessages.proto](/docs/src/test/../main/protobuf/TwoPhaseSetMessages.proto) { #twophaseset }
The serializer for the `TwoPhaseSet`:
Scala
-: @@snip [TwoPhaseSetSerializer.scala](/akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala) { #serializer }
+: @@snip [TwoPhaseSetSerializer.scala](/docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala) { #serializer }
Java
-: @@snip [TwoPhaseSetSerializer.java](/akka-docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer.java) { #serializer }
+: @@snip [TwoPhaseSetSerializer.java](/docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer.java) { #serializer }
Note that the elements of the sets are sorted so the SHA-1 digests are the same for the same elements.
You register the serializer in configuration:
Scala
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #serializer-config }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #serializer-config }
Java
-: @@snip [DistributedDataDocSpec.scala](/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #japi-serializer-config }
+: @@snip [DistributedDataDocSpec.scala](/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala) { #japi-serializer-config }
Using compression can sometimes be a good idea to reduce the data size. Gzip compression is
provided by the @scala[`org.apache.pekko.cluster.ddata.protobuf.SerializationSupport` trait]@java[`org.apache.pekko.cluster.ddata.protobuf.AbstractSerializationSupport` interface]:
Scala
-: @@snip [TwoPhaseSetSerializer.scala](/akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala) { #compression }
+: @@snip [TwoPhaseSetSerializer.scala](/docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala) { #compression }
Java
-: @@snip [TwoPhaseSetSerializerWithCompression.java](/akka-docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializerWithCompression.java) { #compression }
+: @@snip [TwoPhaseSetSerializerWithCompression.java](/docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializerWithCompression.java) { #compression }
The two embedded `GSet` can be serialized as illustrated above, but in general when composing
new data types from the existing built in types it is better to make use of the existing
serializer for those types. This can be done by declaring those as bytes fields in protobuf:
-@@snip [TwoPhaseSetMessages.proto](/akka-docs/src/test/../main/protobuf/TwoPhaseSetMessages.proto) { #twophaseset2 }
+@@snip [TwoPhaseSetMessages.proto](/docs/src/test/../main/protobuf/TwoPhaseSetMessages.proto) { #twophaseset2 }
and use the methods `otherMessageToProto` and `otherMessageFromBinary` that are provided
by the `SerializationSupport` trait to serialize and deserialize the `GSet` instances. This
@@ -641,10 +641,10 @@ works with any type that has a registered Akka serializer. This is how such an s
look like for the `TwoPhaseSet`:
Scala
-: @@snip [TwoPhaseSetSerializer2.scala](/akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer2.scala) { #serializer }
+: @@snip [TwoPhaseSetSerializer2.scala](/docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer2.scala) { #serializer }
Java
-: @@snip [TwoPhaseSetSerializer2.java](/akka-docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer2.java) { #serializer }
+: @@snip [TwoPhaseSetSerializer2.java](/docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer2.java) { #serializer }
## Durable Storage
diff --git a/akka-docs/src/main/paradox/typed/distributed-pub-sub.md b/docs/src/main/paradox/typed/distributed-pub-sub.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/distributed-pub-sub.md
rename to docs/src/main/paradox/typed/distributed-pub-sub.md
diff --git a/akka-docs/src/main/paradox/typed/durable-state/cqrs.md b/docs/src/main/paradox/typed/durable-state/cqrs.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/durable-state/cqrs.md
rename to docs/src/main/paradox/typed/durable-state/cqrs.md
diff --git a/akka-docs/src/main/paradox/typed/durable-state/persistence-style.md b/docs/src/main/paradox/typed/durable-state/persistence-style.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/durable-state/persistence-style.md
rename to docs/src/main/paradox/typed/durable-state/persistence-style.md
diff --git a/akka-docs/src/main/paradox/typed/durable-state/persistence.md b/docs/src/main/paradox/typed/durable-state/persistence.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/durable-state/persistence.md
rename to docs/src/main/paradox/typed/durable-state/persistence.md
diff --git a/akka-docs/src/main/paradox/typed/extending.md b/docs/src/main/paradox/typed/extending.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/extending.md
rename to docs/src/main/paradox/typed/extending.md
diff --git a/akka-docs/src/main/paradox/typed/failure-detector.md b/docs/src/main/paradox/typed/failure-detector.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/failure-detector.md
rename to docs/src/main/paradox/typed/failure-detector.md
diff --git a/akka-docs/src/main/paradox/typed/fault-tolerance.md b/docs/src/main/paradox/typed/fault-tolerance.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/fault-tolerance.md
rename to docs/src/main/paradox/typed/fault-tolerance.md
diff --git a/akka-docs/src/main/paradox/typed/from-classic.md b/docs/src/main/paradox/typed/from-classic.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/from-classic.md
rename to docs/src/main/paradox/typed/from-classic.md
diff --git a/akka-docs/src/main/paradox/typed/fsm.md b/docs/src/main/paradox/typed/fsm.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/fsm.md
rename to docs/src/main/paradox/typed/fsm.md
diff --git a/akka-docs/src/main/paradox/typed/guide/actors-intro.md b/docs/src/main/paradox/typed/guide/actors-intro.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/guide/actors-intro.md
rename to docs/src/main/paradox/typed/guide/actors-intro.md
diff --git a/akka-docs/src/main/paradox/typed/guide/actors-motivation.md b/docs/src/main/paradox/typed/guide/actors-motivation.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/guide/actors-motivation.md
rename to docs/src/main/paradox/typed/guide/actors-motivation.md
diff --git a/akka-docs/src/main/paradox/typed/guide/diagrams/actor_graph.png b/docs/src/main/paradox/typed/guide/diagrams/actor_graph.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/guide/diagrams/actor_graph.png
rename to docs/src/main/paradox/typed/guide/diagrams/actor_graph.png
diff --git a/akka-docs/src/main/paradox/typed/guide/diagrams/actor_graph.svg b/docs/src/main/paradox/typed/guide/diagrams/actor_graph.svg
similarity index 98%
rename from akka-docs/src/main/paradox/typed/guide/diagrams/actor_graph.svg
rename to docs/src/main/paradox/typed/guide/diagrams/actor_graph.svg
index 4116f0a6f0..c736b4e284 100644
--- a/akka-docs/src/main/paradox/typed/guide/diagrams/actor_graph.svg
+++ b/docs/src/main/paradox/typed/guide/diagrams/actor_graph.svg
@@ -16,7 +16,7 @@
id="svg5272"
inkscape:version="0.92.1 r15371"
sodipodi:docname="actor_graph.svg"
- inkscape:export-filename="C:\Users\Varga\workspace\akka\akka-docs-new\src\main\paradox\guide\diagrams\actor_graph.png"
+ inkscape:export-filename="C:\Users\Varga\workspace\akka\docs-new\src\main\paradox\guide\diagrams\actor_graph.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
`] that the device actor will use when replying to the request.
@@ -115,20 +115,20 @@ For the full details on delivery guarantees please refer to the @ref:[reference
Our first query protocol was correct, but did not take into account distributed application execution. If we want to implement resends in the actor that queries a device actor (because of timed out requests), or if we want to query multiple actors, we need to be able to correlate requests and responses. Hence, we add one more field to our messages, so that an ID can be provided by the requester (we will add this code to our app in a later step):
Scala
-: @@snip [DeviceInProgress.scala](/akka-docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala) { #read-protocol-2 }
+: @@snip [DeviceInProgress.scala](/docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala) { #read-protocol-2 }
Java
-: @@snip [Device.java](/akka-docs/src/test/java/jdocs/typed/tutorial_3/inprogress2/Device.java) { #read-protocol-2 }
+: @@snip [Device.java](/docs/src/test/java/jdocs/typed/tutorial_3/inprogress2/Device.java) { #read-protocol-2 }
## Implementing the device actor and its read protocol
As we learned in the Hello World example, each actor defines the type of messages it will accept. Our device actor has the responsibility to use the same ID parameter for the response of a given query, which would make it look like the following.
Scala
-: @@snip [DeviceInProgress.scala](/akka-docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala) { #device-with-read }
+: @@snip [DeviceInProgress.scala](/docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala) { #device-with-read }
Java
-: @@snip [DeviceInProgress2.java](/akka-docs/src/test/java/jdocs/typed/tutorial_3/inprogress2/Device.java) { #device-with-read }
+: @@snip [DeviceInProgress2.java](/docs/src/test/java/jdocs/typed/tutorial_3/inprogress2/Device.java) { #device-with-read }
Note in the code that:
@@ -144,10 +144,10 @@ Based on the actor above, we could write a test. In the `com.example` package in
You can run this test @scala[by running `test` at the sbt prompt]@java[by running `mvn test`].
Scala
-: @@snip [DeviceSpec.scala](/akka-docs/src/test/scala/typed/tutorial_3/DeviceSpec.scala) { #device-read-test }
+: @@snip [DeviceSpec.scala](/docs/src/test/scala/typed/tutorial_3/DeviceSpec.scala) { #device-read-test }
Java
-: @@snip [DeviceTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_3/DeviceTest.java) { #device-read-test }
+: @@snip [DeviceTest.java](/docs/src/test/java/jdocs/typed/tutorial_3/DeviceTest.java) { #device-read-test }
Now, the actor needs a way to change the state of the temperature when it receives a message from the sensor.
@@ -156,37 +156,37 @@ Now, the actor needs a way to change the state of the temperature when it receiv
The purpose of the write protocol is to update the `currentTemperature` field when the actor receives a message that contains the temperature. Again, it is tempting to define the write protocol as a very simple message, something like this:
Scala
-: @@snip [DeviceInProgress.scala](/akka-docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala) { #write-protocol-1 }
+: @@snip [DeviceInProgress.scala](/docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala) { #write-protocol-1 }
Java
-: @@snip [Device.java](/akka-docs/src/test/java/jdocs/typed/tutorial_3/inprogress3/Device.java) { #write-protocol-1 }
+: @@snip [Device.java](/docs/src/test/java/jdocs/typed/tutorial_3/inprogress3/Device.java) { #write-protocol-1 }
However, this approach does not take into account that the sender of the record temperature message can never be sure if the message was processed or not. We have seen that Akka does not guarantee delivery of these messages and leaves it to the application to provide success notifications. In our case, we would like to send an acknowledgment to the sender once we have updated our last temperature recording, e.g. replying with a `TemperatureRecorded` message.
Just like in the case of temperature queries and responses, it is also a good idea to include an ID field to provide maximum flexibility.
Scala
-: @@snip [DeviceInProgress.scala](/akka-docs/src/test/scala/typed/tutorial_3/Device.scala) { #write-protocol }
+: @@snip [DeviceInProgress.scala](/docs/src/test/scala/typed/tutorial_3/Device.scala) { #write-protocol }
Java
-: @@snip [Device.java](/akka-docs/src/test/java/jdocs/typed/tutorial_3/Device.java) { #write-protocol }
+: @@snip [Device.java](/docs/src/test/java/jdocs/typed/tutorial_3/Device.java) { #write-protocol }
## Actor with read and write messages
Putting the read and write protocol together, the device actor looks like the following example:
Scala
-: @@snip [Device.scala](/akka-docs/src/test/scala/typed/tutorial_3/Device.scala) { #full-device }
+: @@snip [Device.scala](/docs/src/test/scala/typed/tutorial_3/Device.scala) { #full-device }
Java
-: @@snip [Device.java](/akka-docs/src/test/java/jdocs/typed/tutorial_3/Device.java) { #full-device }
+: @@snip [Device.java](/docs/src/test/java/jdocs/typed/tutorial_3/Device.java) { #full-device }
We should also write a new test case now, exercising both the read/query and write/record functionality together:
Scala:
-: @@snip [DeviceSpec.scala](/akka-docs/src/test/scala/typed/tutorial_3/DeviceSpec.scala) { #device-write-read-test }
+: @@snip [DeviceSpec.scala](/docs/src/test/scala/typed/tutorial_3/DeviceSpec.scala) { #device-write-read-test }
Java:
-: @@snip [DeviceTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_3/DeviceTest.java) { #device-write-read-test }
+: @@snip [DeviceTest.java](/docs/src/test/java/jdocs/typed/tutorial_3/DeviceTest.java) { #device-write-read-test }
## What's Next?
diff --git a/akka-docs/src/main/paradox/typed/guide/tutorial_4.md b/docs/src/main/paradox/typed/guide/tutorial_4.md
similarity index 80%
rename from akka-docs/src/main/paradox/typed/guide/tutorial_4.md
rename to docs/src/main/paradox/typed/guide/tutorial_4.md
index faebe91946..d46b2d0766 100644
--- a/akka-docs/src/main/paradox/typed/guide/tutorial_4.md
+++ b/docs/src/main/paradox/typed/guide/tutorial_4.md
@@ -67,10 +67,10 @@ Looking at registration in more detail, we can outline the necessary functionali
The messages that we will use to communicate registration requests and their acknowledgement have the definition:
Scala
-: @@snip [DeviceManager.scala](/akka-docs/src/test/scala/typed/tutorial_4/DeviceManager.scala) { #device-registration-msgs }
+: @@snip [DeviceManager.scala](/docs/src/test/scala/typed/tutorial_4/DeviceManager.scala) { #device-registration-msgs }
Java
-: @@snip [DeviceManager.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceManager.java) { #device-registration-msgs }
+: @@snip [DeviceManager.java](/docs/src/test/java/jdocs/typed/tutorial_4/DeviceManager.java) { #device-registration-msgs }
In this case we have not included a request ID field in the messages. Since registration happens once, when the component connects the system to some network protocol, the ID is not important. However, it is usually a best practice to include a request ID.
@@ -90,27 +90,27 @@ A device group actor must either reply to the request with the @apidoc[typed.Act
Add the following to your source file:
Scala
-: @@snip [DeviceGroup.scala](/akka-docs/src/test/scala/typed/tutorial_4/DeviceGroup.scala) { #device-group-register }
+: @@snip [DeviceGroup.scala](/docs/src/test/scala/typed/tutorial_4/DeviceGroup.scala) { #device-group-register }
Java
-: @@snip [DeviceGroup.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroup.java) { #device-group-register }
+: @@snip [DeviceGroup.java](/docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroup.java) { #device-group-register }
Just as we did with the device, we test this new functionality. We also test that the actors returned for the two different IDs are actually different, and we also attempt to record a temperature reading for each of the devices to see if the actors are responding.
Scala
-: @@snip [DeviceGroupSpec.scala](/akka-docs/src/test/scala/typed/tutorial_4/DeviceGroupSpec.scala) { #device-group-test-registration }
+: @@snip [DeviceGroupSpec.scala](/docs/src/test/scala/typed/tutorial_4/DeviceGroupSpec.scala) { #device-group-test-registration }
Java
-: @@snip [DeviceGroupTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroupTest.java) { #device-group-test-registration }
+: @@snip [DeviceGroupTest.java](/docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroupTest.java) { #device-group-test-registration }
If a device actor already exists for the registration request, we would like to use
the existing actor instead of a new one. We have not tested this yet, so we need to fix this:
Scala
-: @@snip [DeviceGroupSpec.scala](/akka-docs/src/test/scala/typed/tutorial_4/DeviceGroupSpec.scala) { #device-group-test3 }
+: @@snip [DeviceGroupSpec.scala](/docs/src/test/scala/typed/tutorial_4/DeviceGroupSpec.scala) { #device-group-test3 }
Java
-: @@snip [DeviceGroupTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroupTest.java) { #device-group-test3 }
+: @@snip [DeviceGroupTest.java](/docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroupTest.java) { #device-group-test3 }
### Keeping track of the device actors in the group
@@ -130,25 +130,25 @@ Unfortunately, the `Terminated` signal only contains the `ActorRef` of the child
Adding the functionality to identify the actor results in this:
Scala
-: @@snip [DeviceGroup.scala](/akka-docs/src/test/scala/typed/tutorial_4/DeviceGroup.scala) { #device-group-remove }
+: @@snip [DeviceGroup.scala](/docs/src/test/scala/typed/tutorial_4/DeviceGroup.scala) { #device-group-remove }
Java
-: @@snip [DeviceGroup.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroup.java) { #device-group-remove }
+: @@snip [DeviceGroup.java](/docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroup.java) { #device-group-remove }
So far we have no means to get which devices the group device actor keeps track of and, therefore, we cannot test our new functionality yet. To make it testable, we add a new query capability (message `RequestDeviceList`) that lists the currently active device IDs:
Scala
-: @@snip [DeviceManager.scala](/akka-docs/src/test/scala/typed/tutorial_4/DeviceManager.scala) { #device-list-msgs }
+: @@snip [DeviceManager.scala](/docs/src/test/scala/typed/tutorial_4/DeviceManager.scala) { #device-list-msgs }
Java
-: @@snip [DeviceManager.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceManager.java) { #device-list-msgs }
+: @@snip [DeviceManager.java](/docs/src/test/java/jdocs/typed/tutorial_4/DeviceManager.java) { #device-list-msgs }
Scala
-: @@snip [DeviceGroup.scala](/akka-docs/src/test/scala/typed/tutorial_4/DeviceGroup.scala) { #device-group-full }
+: @@snip [DeviceGroup.scala](/docs/src/test/scala/typed/tutorial_4/DeviceGroup.scala) { #device-group-full }
Java
-: @@snip [DeviceGroup.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroup.java) { #device-group-full }
+: @@snip [DeviceGroup.java](/docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroup.java) { #device-group-full }
We are almost ready to test the removal of devices. But, we still need the following capabilities:
@@ -156,36 +156,36 @@ We are almost ready to test the removal of devices. But, we still need the follo
* To be notified once the device actor is stopped. We can use the _Death Watch_ facility for this purpose, too.
Scala
-: @@snip [Device.scala](/akka-docs/src/test/scala/typed/tutorial_4/Device.scala) { #passivate-msg }
+: @@snip [Device.scala](/docs/src/test/scala/typed/tutorial_4/Device.scala) { #passivate-msg }
Java
-: @@snip [Device.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/Device.java) { #passivate-msg }
+: @@snip [Device.java](/docs/src/test/java/jdocs/typed/tutorial_4/Device.java) { #passivate-msg }
Scala
-: @@snip [Device.scala](/akka-docs/src/test/scala/typed/tutorial_4/Device.scala) { #device-with-passivate }
+: @@snip [Device.scala](/docs/src/test/scala/typed/tutorial_4/Device.scala) { #device-with-passivate }
Java
-: @@snip [Device.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/Device.java) { #device-with-passivate }
+: @@snip [Device.java](/docs/src/test/java/jdocs/typed/tutorial_4/Device.java) { #device-with-passivate }
We add two more test cases now. In the first, we test that we get back the list of proper IDs once we have added a few devices. The second test case makes sure that the device ID is properly removed after the device actor has been stopped. The @apidoc[typed.*.TestProbe] has a `expectTerminated` method that we can easily use to assert that the device actor has been terminated.
Scala
-: @@snip [DeviceGroupSpec.scala](/akka-docs/src/test/scala/typed/tutorial_4/DeviceGroupSpec.scala) { #device-group-list-terminate-test }
+: @@snip [DeviceGroupSpec.scala](/docs/src/test/scala/typed/tutorial_4/DeviceGroupSpec.scala) { #device-group-list-terminate-test }
Java
-: @@snip [DeviceGroupTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroupTest.java) { #device-group-list-terminate-test }
+: @@snip [DeviceGroupTest.java](/docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroupTest.java) { #device-group-list-terminate-test }
## Creating device manager actors
Going up to the next level in our hierarchy, we need to create the entry point for our device manager component in the `DeviceManager` source file. This actor is very similar to the device group actor, but creates device group actors instead of device actors:
Scala
-: @@snip [DeviceManager.scala](/akka-docs/src/test/scala/typed/tutorial_4/DeviceManager.scala) { #device-manager-full }
+: @@snip [DeviceManager.scala](/docs/src/test/scala/typed/tutorial_4/DeviceManager.scala) { #device-manager-full }
Java
-: @@snip [DeviceManager.java](/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceManager.java) { #device-manager-full }
+: @@snip [DeviceManager.java](/docs/src/test/java/jdocs/typed/tutorial_4/DeviceManager.java) { #device-manager-full }
We leave tests of the device manager as an exercise for you since it is very similar to the tests we have already written for the group
actor.
diff --git a/akka-docs/src/main/paradox/typed/guide/tutorial_5.md b/docs/src/main/paradox/typed/guide/tutorial_5.md
similarity index 78%
rename from akka-docs/src/main/paradox/typed/guide/tutorial_5.md
rename to docs/src/main/paradox/typed/guide/tutorial_5.md
index b88c139f98..5721709bfe 100644
--- a/akka-docs/src/main/paradox/typed/guide/tutorial_5.md
+++ b/docs/src/main/paradox/typed/guide/tutorial_5.md
@@ -38,10 +38,10 @@ for each device actor, with respect to a temperature query:
Summarizing these in message types we can add the following to the message protocol:
Scala
-: @@snip [DeviceGroup.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceManager.scala) { #query-protocol }
+: @@snip [DeviceGroup.scala](/docs/src/test/scala/typed/tutorial_5/DeviceManager.scala) { #query-protocol }
Java
-: @@snip [DeviceGroup.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceManager.java) { #query-protocol }
+: @@snip [DeviceGroup.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceManager.java) { #query-protocol }
## Implementing the query
@@ -74,10 +74,10 @@ until the timeout to mark these as not available.
Putting this together, the outline of our `DeviceGroupQuery` actor looks like this:
Scala
-: @@snip [DeviceGroupQuery.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala) { #query-outline }
+: @@snip [DeviceGroupQuery.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala) { #query-outline }
Java
-: @@snip [DeviceGroupQuery.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java) { #query-outline }
+: @@snip [DeviceGroupQuery.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java) { #query-outline }
Note that we have to convert the `RespondTemperature` replies from the device actor to the message protocol that the `DeviceGroupQuery` actor understands, i.e. `DeviceGroupQuery.Command`. For this we use a `messageAdapter` that wraps the `RespondTemperature` in a `WrappedRespondTemperature`, which @scala[extends]@java[implements] `DeviceGroupQuery.Command`.
@@ -98,26 +98,26 @@ For our use case:
To accomplish this, add the following to your `DeviceGroupQuery` source file:
Scala
-: @@snip [DeviceGroupQuery.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala) { #query-state }
+: @@snip [DeviceGroupQuery.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala) { #query-state }
Java
-: @@snip [DeviceGroupQuery.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java) { #query-state }
+: @@snip [DeviceGroupQuery.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java) { #query-state }
For `RespondTemperature` and `DeviceTerminated` we keep track of the replies by updating `repliesSoFar` and remove the actor from `stillWaiting`. For this, we can use the actor's identifier already present in the `DeviceTerminated` message. For our `RespondTemperature` message we will need to add this information as follows:
Scala
-: @@snip [DeviceGroupQuery.scala](/akka-docs/src/test/scala/typed/tutorial_5/Device.scala) { #respond-declare }
+: @@snip [DeviceGroupQuery.scala](/docs/src/test/scala/typed/tutorial_5/Device.scala) { #respond-declare }
Java
-: @@snip [DeviceGroupQuery.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/Device.java) { #respond-declare }
+: @@snip [DeviceGroupQuery.java](/docs/src/test/java/jdocs/typed/tutorial_5/Device.java) { #respond-declare }
And:
Scala
-: @@snip [DeviceGroupQuery.scala](/akka-docs/src/test/scala/typed/tutorial_5/Device.scala) { #respond-reply }
+: @@snip [DeviceGroupQuery.scala](/docs/src/test/scala/typed/tutorial_5/Device.scala) { #respond-reply }
Java
-: @@snip [DeviceGroupQuery.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/Device.java) { #respond-reply }
+: @@snip [DeviceGroupQuery.java](/docs/src/test/java/jdocs/typed/tutorial_5/Device.java) { #respond-reply }
After processing each message we delegate to a method `respondWhenAllCollected`, which we will discuss soon.
@@ -130,18 +130,18 @@ We now have to figure out what to do in `respondWhenAllCollected`. First, we nee
With all this knowledge, we can create the `respondWhenAllCollected` method:
Scala
-: @@snip [DeviceGroupQuery.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala) { #query-collect-reply }
+: @@snip [DeviceGroupQuery.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala) { #query-collect-reply }
Java
-: @@snip [DeviceGroupQuery.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java) { #query-collect-reply }
+: @@snip [DeviceGroupQuery.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java) { #query-collect-reply }
Our query actor is now done:
Scala
-: @@snip [DeviceGroupQuery.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala) { #query-full }
+: @@snip [DeviceGroupQuery.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala) { #query-full }
Java
-: @@snip [DeviceGroupQuery.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java) { #query-full }
+: @@snip [DeviceGroupQuery.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java) { #query-full }
### Testing the query actor
@@ -152,46 +152,46 @@ to the query actor, so we can pass in @apidoc[typed.*.TestProbe] references. In
there are two devices and both report a temperature:
Scala
-: @@snip [DeviceGroupQuerySpec.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala) { #query-test-normal }
+: @@snip [DeviceGroupQuerySpec.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala) { #query-test-normal }
Java
-: @@snip [DeviceGroupQueryTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java) { #query-test-normal }
+: @@snip [DeviceGroupQueryTest.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java) { #query-test-normal }
That was the happy case, but we know that sometimes devices cannot provide a temperature measurement. This
scenario is just slightly different from the previous:
Scala
-: @@snip [DeviceGroupQuerySpec.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala) { #query-test-no-reading }
+: @@snip [DeviceGroupQuerySpec.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala) { #query-test-no-reading }
Java
-: @@snip [DeviceGroupQueryTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java) { #query-test-no-reading }
+: @@snip [DeviceGroupQueryTest.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java) { #query-test-no-reading }
We also know, that sometimes device actors stop before answering:
Scala
-: @@snip [DeviceGroupQuerySpec.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala) { #query-test-stopped }
+: @@snip [DeviceGroupQuerySpec.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala) { #query-test-stopped }
Java
-: @@snip [DeviceGroupQueryTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java) { #query-test-stopped }
+: @@snip [DeviceGroupQueryTest.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java) { #query-test-stopped }
If you remember, there is another case related to device actors stopping. It is possible that we get a normal reply
from a device actor, but then receive a @apidoc[typed.Terminated] for the same actor later. In this case, we would like to keep
the first reply and not mark the device as `DeviceNotAvailable`. We should test this, too:
Scala
-: @@snip [DeviceGroupQuerySpec.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala) { #query-test-stopped-later }
+: @@snip [DeviceGroupQuerySpec.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala) { #query-test-stopped-later }
Java
-: @@snip [DeviceGroupQueryTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java) { #query-test-stopped-later }
+: @@snip [DeviceGroupQueryTest.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java) { #query-test-stopped-later }
The final case is when not all devices respond in time. To keep our test relatively fast, we will construct the
`DeviceGroupQuery` actor with a smaller timeout:
Scala
-: @@snip [DeviceGroupQuerySpec.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala) { #query-test-timeout }
+: @@snip [DeviceGroupQuerySpec.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala) { #query-test-timeout }
Java
-: @@snip [DeviceGroupQueryTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java) { #query-test-timeout }
+: @@snip [DeviceGroupQueryTest.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java) { #query-test-timeout }
Our query works as expected now, it is time to include this new functionality in the `DeviceGroup` actor now.
@@ -201,10 +201,10 @@ Including the query feature in the group actor is fairly simple now. We did all
itself, the group actor only needs to create it with the right initial parameters and nothing else.
Scala
-: @@snip [DeviceGroup.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroup.scala) { #query-added }
+: @@snip [DeviceGroup.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroup.scala) { #query-added }
Java
-: @@snip [DeviceGroup.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroup.java) { #query-added }
+: @@snip [DeviceGroup.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroup.java) { #query-added }
It is probably worth restating what we said at the beginning of the chapter. By keeping the temporary state that is only relevant to the query itself in a separate actor we keep the group actor implementation very simple. It delegates
everything to child actors and therefore does not have to keep state that is not relevant to its core business. Also, multiple queries can now run parallel to each other, in fact, as many as needed. In our case querying an individual device actor is a fast operation, but if this were not the case, for example, because the remote sensors need to be contacted over the network, this design would significantly improve throughput.
@@ -212,10 +212,10 @@ everything to child actors and therefore does not have to keep state that is not
We close this chapter by testing that everything works together. This test is a variant of the previous ones, now exercising the group query feature:
Scala
-: @@snip [DeviceGroupSpec.scala](/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupSpec.scala) { #group-query-integration-test }
+: @@snip [DeviceGroupSpec.scala](/docs/src/test/scala/typed/tutorial_5/DeviceGroupSpec.scala) { #group-query-integration-test }
Java
-: @@snip [DeviceGroupTest.java](/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupTest.java) { #group-query-integration-test }
+: @@snip [DeviceGroupTest.java](/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupTest.java) { #group-query-integration-test }
## Summary
In the context of the IoT system, this guide introduced the following concepts, among others. You can follow the links to review them if necessary:
diff --git a/akka-docs/src/main/paradox/typed/images/adapted-response.png b/docs/src/main/paradox/typed/images/adapted-response.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/adapted-response.png
rename to docs/src/main/paradox/typed/images/adapted-response.png
diff --git a/akka-docs/src/main/paradox/typed/images/aggregator.png b/docs/src/main/paradox/typed/images/aggregator.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/aggregator.png
rename to docs/src/main/paradox/typed/images/aggregator.png
diff --git a/akka-docs/src/main/paradox/typed/images/ask-from-actor.png b/docs/src/main/paradox/typed/images/ask-from-actor.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/ask-from-actor.png
rename to docs/src/main/paradox/typed/images/ask-from-actor.png
diff --git a/akka-docs/src/main/paradox/typed/images/ask-from-outside.png b/docs/src/main/paradox/typed/images/ask-from-outside.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/ask-from-outside.png
rename to docs/src/main/paradox/typed/images/ask-from-outside.png
diff --git a/akka-docs/src/main/paradox/typed/images/causality.png b/docs/src/main/paradox/typed/images/causality.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/causality.png
rename to docs/src/main/paradox/typed/images/causality.png
diff --git a/akka-docs/src/main/paradox/typed/images/chat-room.png b/docs/src/main/paradox/typed/images/chat-room.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/chat-room.png
rename to docs/src/main/paradox/typed/images/chat-room.png
diff --git a/akka-docs/src/main/paradox/typed/images/delivery-p2p-1.png b/docs/src/main/paradox/typed/images/delivery-p2p-1.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/delivery-p2p-1.png
rename to docs/src/main/paradox/typed/images/delivery-p2p-1.png
diff --git a/akka-docs/src/main/paradox/typed/images/delivery-sharding-1.png b/docs/src/main/paradox/typed/images/delivery-sharding-1.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/delivery-sharding-1.png
rename to docs/src/main/paradox/typed/images/delivery-sharding-1.png
diff --git a/akka-docs/src/main/paradox/typed/images/delivery-sharding-2.png b/docs/src/main/paradox/typed/images/delivery-sharding-2.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/delivery-sharding-2.png
rename to docs/src/main/paradox/typed/images/delivery-sharding-2.png
diff --git a/akka-docs/src/main/paradox/typed/images/delivery-sharding-3.png b/docs/src/main/paradox/typed/images/delivery-sharding-3.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/delivery-sharding-3.png
rename to docs/src/main/paradox/typed/images/delivery-sharding-3.png
diff --git a/akka-docs/src/main/paradox/typed/images/delivery-work-pulling-1.png b/docs/src/main/paradox/typed/images/delivery-work-pulling-1.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/delivery-work-pulling-1.png
rename to docs/src/main/paradox/typed/images/delivery-work-pulling-1.png
diff --git a/akka-docs/src/main/paradox/typed/images/delivery-work-pulling-2.png b/docs/src/main/paradox/typed/images/delivery-work-pulling-2.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/delivery-work-pulling-2.png
rename to docs/src/main/paradox/typed/images/delivery-work-pulling-2.png
diff --git a/akka-docs/src/main/paradox/typed/images/fire-forget.png b/docs/src/main/paradox/typed/images/fire-forget.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/fire-forget.png
rename to docs/src/main/paradox/typed/images/fire-forget.png
diff --git a/akka-docs/src/main/paradox/typed/images/hello-world1.png b/docs/src/main/paradox/typed/images/hello-world1.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/hello-world1.png
rename to docs/src/main/paradox/typed/images/hello-world1.png
diff --git a/akka-docs/src/main/paradox/typed/images/hello-world2.png b/docs/src/main/paradox/typed/images/hello-world2.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/hello-world2.png
rename to docs/src/main/paradox/typed/images/hello-world2.png
diff --git a/akka-docs/src/main/paradox/typed/images/lww.png b/docs/src/main/paradox/typed/images/lww.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/lww.png
rename to docs/src/main/paradox/typed/images/lww.png
diff --git a/akka-docs/src/main/paradox/typed/images/per-session-child.png b/docs/src/main/paradox/typed/images/per-session-child.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/per-session-child.png
rename to docs/src/main/paradox/typed/images/per-session-child.png
diff --git a/akka-docs/src/main/paradox/typed/images/pipe-to-self.png b/docs/src/main/paradox/typed/images/pipe-to-self.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/pipe-to-self.png
rename to docs/src/main/paradox/typed/images/pipe-to-self.png
diff --git a/akka-docs/src/main/paradox/typed/images/replicated-events1.png b/docs/src/main/paradox/typed/images/replicated-events1.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/replicated-events1.png
rename to docs/src/main/paradox/typed/images/replicated-events1.png
diff --git a/akka-docs/src/main/paradox/typed/images/replicated-events2.png b/docs/src/main/paradox/typed/images/replicated-events2.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/replicated-events2.png
rename to docs/src/main/paradox/typed/images/replicated-events2.png
diff --git a/akka-docs/src/main/paradox/typed/images/request-response.png b/docs/src/main/paradox/typed/images/request-response.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/request-response.png
rename to docs/src/main/paradox/typed/images/request-response.png
diff --git a/akka-docs/src/main/paradox/typed/images/sharded-response.png b/docs/src/main/paradox/typed/images/sharded-response.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/sharded-response.png
rename to docs/src/main/paradox/typed/images/sharded-response.png
diff --git a/akka-docs/src/main/paradox/typed/images/tail-chopping.png b/docs/src/main/paradox/typed/images/tail-chopping.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/tail-chopping.png
rename to docs/src/main/paradox/typed/images/tail-chopping.png
diff --git a/akka-docs/src/main/paradox/typed/images/timer.png b/docs/src/main/paradox/typed/images/timer.png
similarity index 100%
rename from akka-docs/src/main/paradox/typed/images/timer.png
rename to docs/src/main/paradox/typed/images/timer.png
diff --git a/akka-docs/src/main/paradox/typed/index-cluster.md b/docs/src/main/paradox/typed/index-cluster.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/index-cluster.md
rename to docs/src/main/paradox/typed/index-cluster.md
diff --git a/akka-docs/src/main/paradox/typed/index-persistence-durable-state.md b/docs/src/main/paradox/typed/index-persistence-durable-state.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/index-persistence-durable-state.md
rename to docs/src/main/paradox/typed/index-persistence-durable-state.md
diff --git a/akka-docs/src/main/paradox/typed/index-persistence.md b/docs/src/main/paradox/typed/index-persistence.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/index-persistence.md
rename to docs/src/main/paradox/typed/index-persistence.md
diff --git a/akka-docs/src/main/paradox/typed/index.md b/docs/src/main/paradox/typed/index.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/index.md
rename to docs/src/main/paradox/typed/index.md
diff --git a/akka-docs/src/main/paradox/typed/interaction-patterns.md b/docs/src/main/paradox/typed/interaction-patterns.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/interaction-patterns.md
rename to docs/src/main/paradox/typed/interaction-patterns.md
diff --git a/akka-docs/src/main/paradox/typed/logging.md b/docs/src/main/paradox/typed/logging.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/logging.md
rename to docs/src/main/paradox/typed/logging.md
diff --git a/akka-docs/src/main/paradox/typed/mailboxes.md b/docs/src/main/paradox/typed/mailboxes.md
similarity index 93%
rename from akka-docs/src/main/paradox/typed/mailboxes.md
rename to docs/src/main/paradox/typed/mailboxes.md
index 180001aa02..c881c9704e 100644
--- a/akka-docs/src/main/paradox/typed/mailboxes.md
+++ b/docs/src/main/paradox/typed/mailboxes.md
@@ -142,17 +142,17 @@ The following mailboxes should only be used with zero `mailbox-push-timeout-time
The best way to show how to create your own Mailbox type is by example:
Scala
-: @@snip [MyUnboundedMailbox.scala](/akka-docs/src/test/scala/docs/dispatcher/MyUnboundedMailbox.scala) { #mailbox-marker-interface }
+: @@snip [MyUnboundedMailbox.scala](/docs/src/test/scala/docs/dispatcher/MyUnboundedMailbox.scala) { #mailbox-marker-interface }
Java
-: @@snip [MyUnboundedMessageQueueSemantics.java](/akka-docs/src/test/java/jdocs/dispatcher/MyUnboundedMessageQueueSemantics.java) { #mailbox-marker-interface }
+: @@snip [MyUnboundedMessageQueueSemantics.java](/docs/src/test/java/jdocs/dispatcher/MyUnboundedMessageQueueSemantics.java) { #mailbox-marker-interface }
Scala
-: @@snip [MyUnboundedMailbox.scala](/akka-docs/src/test/scala/docs/dispatcher/MyUnboundedMailbox.scala) { #mailbox-implementation-example }
+: @@snip [MyUnboundedMailbox.scala](/docs/src/test/scala/docs/dispatcher/MyUnboundedMailbox.scala) { #mailbox-implementation-example }
Java
-: @@snip [MyUnboundedMailbox.java](/akka-docs/src/test/java/jdocs/dispatcher/MyUnboundedMailbox.java) { #mailbox-implementation-example }
+: @@snip [MyUnboundedMailbox.java](/docs/src/test/java/jdocs/dispatcher/MyUnboundedMailbox.java) { #mailbox-implementation-example }
And then you specify the FQCN of your MailboxType as the value of the "mailbox-type" in the dispatcher
configuration, or the mailbox configuration.
diff --git a/akka-docs/src/main/paradox/typed/persistence-fsm.md b/docs/src/main/paradox/typed/persistence-fsm.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/persistence-fsm.md
rename to docs/src/main/paradox/typed/persistence-fsm.md
diff --git a/akka-docs/src/main/paradox/typed/persistence-snapshot.md b/docs/src/main/paradox/typed/persistence-snapshot.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/persistence-snapshot.md
rename to docs/src/main/paradox/typed/persistence-snapshot.md
diff --git a/akka-docs/src/main/paradox/typed/persistence-style.md b/docs/src/main/paradox/typed/persistence-style.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/persistence-style.md
rename to docs/src/main/paradox/typed/persistence-style.md
diff --git a/akka-docs/src/main/paradox/typed/persistence-testing.md b/docs/src/main/paradox/typed/persistence-testing.md
similarity index 82%
rename from akka-docs/src/main/paradox/typed/persistence-testing.md
rename to docs/src/main/paradox/typed/persistence-testing.md
index 02891c7f5d..16d6496cd2 100644
--- a/akka-docs/src/main/paradox/typed/persistence-testing.md
+++ b/docs/src/main/paradox/typed/persistence-testing.md
@@ -84,26 +84,26 @@ The testkit classes have two corresponding plugins which emulate the behavior of
**Note!** The corresponding plugins **must** be configured in the actor system which is used to initialize the particular testkit class:
Scala
-: @@snip [Configuration.scala](/akka-docs/src/test/scala/docs/persistence/testkit/Configuration.scala) { #testkit-typed-conf }
+: @@snip [Configuration.scala](/docs/src/test/scala/docs/persistence/testkit/Configuration.scala) { #testkit-typed-conf }
Java
-: @@snip [Configuration.java](/akka-docs/src/test/java/jdocs/persistence/testkit/Configuration.java) { #testkit-typed-conf }
+: @@snip [Configuration.java](/docs/src/test/java/jdocs/persistence/testkit/Configuration.java) { #testkit-typed-conf }
and
Scala
-: @@snip [Configuration.scala](/akka-docs/src/test/scala/docs/persistence/testkit/Configuration.scala) { #snapshot-typed-conf }
+: @@snip [Configuration.scala](/docs/src/test/scala/docs/persistence/testkit/Configuration.scala) { #snapshot-typed-conf }
Java
-: @@snip [Configuration.java](/akka-docs/src/test/java/jdocs/persistence/testkit/Configuration.java) { #snapshot-typed-conf }
+: @@snip [Configuration.java](/docs/src/test/java/jdocs/persistence/testkit/Configuration.java) { #snapshot-typed-conf }
A typical scenario is to create a persistent actor, send commands to it and check that it persists events as it is expected:
Scala
-: @@snip [TestKitExamples.scala](/akka-docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala) { #test }
+: @@snip [TestKitExamples.scala](/docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala) { #test }
Java
-: @@snip [PersistenceTestKitSampleTest.java](/akka-docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitSampleTest.java) { #test }
+: @@snip [PersistenceTestKitSampleTest.java](/docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitSampleTest.java) { #test }
You can safely use persistence testkit in combination with main akka testkit.
@@ -128,10 +128,10 @@ or @apidoc[ProcessingPolicy[SnapshotStorage.SnapshotOperation]] @scala[trait]@ja
and set it with `withPolicy()` method.
Scala
-: @@snip [TestKitExamples.scala](/akka-docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala) { #policy-test }
+: @@snip [TestKitExamples.scala](/docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala) { #policy-test }
Java
-: @@snip [PersistenceTestKitPolicySampleTest.java](/akka-docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitPolicySampleTest.java) { #policy-test }
+: @@snip [PersistenceTestKitPolicySampleTest.java](/docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitPolicySampleTest.java) { #policy-test }
`tryProcess()` method of the @apidoc[ProcessingPolicy] has two arguments: persistence id and the storage operation.
@@ -160,18 +160,18 @@ The `tryProcess()` method must return one of the processing results:
Here is an example of the policy for an event storage:
Scala
-: @@snip [TestKitExamples.scala](/akka-docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala) { #set-event-storage-policy }
+: @@snip [TestKitExamples.scala](/docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala) { #set-event-storage-policy }
Java
-: @@snip [TestKitExamples.java](/akka-docs/src/test/java/jdocs/persistence/testkit/TestKitExamples.java) { #set-event-storage-policy }
+: @@snip [TestKitExamples.java](/docs/src/test/java/jdocs/persistence/testkit/TestKitExamples.java) { #set-event-storage-policy }
Here is an example of the policy for a snapshot storage:
Scala
-: @@snip [TestKitExamples.scala](/akka-docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala) { #set-snapshot-storage-policy }
+: @@snip [TestKitExamples.scala](/docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala) { #set-snapshot-storage-policy }
Java
-: @@snip [TestKitExamples.java](/akka-docs/src/test/java/jdocs/persistence/testkit/TestKitExamples.java) { #set-snapshot-storage-policy }
+: @@snip [TestKitExamples.java](/docs/src/test/java/jdocs/persistence/testkit/TestKitExamples.java) { #set-snapshot-storage-policy }
### Configuration of Persistence TestKit
@@ -209,8 +209,8 @@ the plugins at the same time. To coordinate initialization you can use the `Pers
}
Scala
-: @@snip [PersistenceInitSpec.scala](/akka-docs/src/test/scala/docs/persistence/testkit/PersistenceInitSpec.scala) { #imports #init }
+: @@snip [PersistenceInitSpec.scala](/docs/src/test/scala/docs/persistence/testkit/PersistenceInitSpec.scala) { #imports #init }
Java
-: @@snip [PersistenceInitTest.java](/akka-docs/src/test/java/jdocs/persistence/testkit/PersistenceInitTest.java) { #imports #init }
+: @@snip [PersistenceInitTest.java](/docs/src/test/java/jdocs/persistence/testkit/PersistenceInitTest.java) { #imports #init }
diff --git a/akka-docs/src/main/paradox/typed/persistence.md b/docs/src/main/paradox/typed/persistence.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/persistence.md
rename to docs/src/main/paradox/typed/persistence.md
diff --git a/akka-docs/src/main/paradox/typed/reliable-delivery.md b/docs/src/main/paradox/typed/reliable-delivery.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/reliable-delivery.md
rename to docs/src/main/paradox/typed/reliable-delivery.md
diff --git a/akka-docs/src/main/paradox/typed/replicated-eventsourcing-auction.md b/docs/src/main/paradox/typed/replicated-eventsourcing-auction.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/replicated-eventsourcing-auction.md
rename to docs/src/main/paradox/typed/replicated-eventsourcing-auction.md
diff --git a/akka-docs/src/main/paradox/typed/replicated-eventsourcing-cart.md b/docs/src/main/paradox/typed/replicated-eventsourcing-cart.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/replicated-eventsourcing-cart.md
rename to docs/src/main/paradox/typed/replicated-eventsourcing-cart.md
diff --git a/akka-docs/src/main/paradox/typed/replicated-eventsourcing-examples.md b/docs/src/main/paradox/typed/replicated-eventsourcing-examples.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/replicated-eventsourcing-examples.md
rename to docs/src/main/paradox/typed/replicated-eventsourcing-examples.md
diff --git a/akka-docs/src/main/paradox/typed/replicated-eventsourcing.md b/docs/src/main/paradox/typed/replicated-eventsourcing.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/replicated-eventsourcing.md
rename to docs/src/main/paradox/typed/replicated-eventsourcing.md
diff --git a/akka-docs/src/main/paradox/typed/routers.md b/docs/src/main/paradox/typed/routers.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/routers.md
rename to docs/src/main/paradox/typed/routers.md
diff --git a/akka-docs/src/main/paradox/typed/stash.md b/docs/src/main/paradox/typed/stash.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/stash.md
rename to docs/src/main/paradox/typed/stash.md
diff --git a/akka-docs/src/main/paradox/typed/style-guide.md b/docs/src/main/paradox/typed/style-guide.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/style-guide.md
rename to docs/src/main/paradox/typed/style-guide.md
diff --git a/akka-docs/src/main/paradox/typed/testing-async.md b/docs/src/main/paradox/typed/testing-async.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/testing-async.md
rename to docs/src/main/paradox/typed/testing-async.md
diff --git a/akka-docs/src/main/paradox/typed/testing-sync.md b/docs/src/main/paradox/typed/testing-sync.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/testing-sync.md
rename to docs/src/main/paradox/typed/testing-sync.md
diff --git a/akka-docs/src/main/paradox/typed/testing.md b/docs/src/main/paradox/typed/testing.md
similarity index 100%
rename from akka-docs/src/main/paradox/typed/testing.md
rename to docs/src/main/paradox/typed/testing.md
diff --git a/akka-docs/src/main/protobuf/FlightAppModels.proto b/docs/src/main/protobuf/FlightAppModels.proto
similarity index 100%
rename from akka-docs/src/main/protobuf/FlightAppModels.proto
rename to docs/src/main/protobuf/FlightAppModels.proto
diff --git a/akka-docs/src/main/protobuf/TwoPhaseSetMessages.proto b/docs/src/main/protobuf/TwoPhaseSetMessages.proto
similarity index 100%
rename from akka-docs/src/main/protobuf/TwoPhaseSetMessages.proto
rename to docs/src/main/protobuf/TwoPhaseSetMessages.proto
diff --git a/akka-docs/src/test/java-jdk9-only/jdocs/stream/operators/source/AsSubscriber.java b/docs/src/test/java-jdk9-only/jdocs/stream/operators/source/AsSubscriber.java
similarity index 100%
rename from akka-docs/src/test/java-jdk9-only/jdocs/stream/operators/source/AsSubscriber.java
rename to docs/src/test/java-jdk9-only/jdocs/stream/operators/source/AsSubscriber.java
diff --git a/akka-docs/src/test/java-jdk9-only/jdocs/stream/operators/source/FromPublisher.java b/docs/src/test/java-jdk9-only/jdocs/stream/operators/source/FromPublisher.java
similarity index 100%
rename from akka-docs/src/test/java-jdk9-only/jdocs/stream/operators/source/FromPublisher.java
rename to docs/src/test/java-jdk9-only/jdocs/stream/operators/source/FromPublisher.java
diff --git a/akka-docs/src/test/java/jdocs/AbstractJavaTest.java b/docs/src/test/java/jdocs/AbstractJavaTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/AbstractJavaTest.java
rename to docs/src/test/java/jdocs/AbstractJavaTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/ActorDocTest.java b/docs/src/test/java/jdocs/actor/ActorDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/ActorDocTest.java
rename to docs/src/test/java/jdocs/actor/ActorDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/ByteBufferSerializerDocTest.java b/docs/src/test/java/jdocs/actor/ByteBufferSerializerDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/ByteBufferSerializerDocTest.java
rename to docs/src/test/java/jdocs/actor/ByteBufferSerializerDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/DependencyInjectionDocTest.java b/docs/src/test/java/jdocs/actor/DependencyInjectionDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/DependencyInjectionDocTest.java
rename to docs/src/test/java/jdocs/actor/DependencyInjectionDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/FaultHandlingDocSample.java b/docs/src/test/java/jdocs/actor/FaultHandlingDocSample.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/FaultHandlingDocSample.java
rename to docs/src/test/java/jdocs/actor/FaultHandlingDocSample.java
diff --git a/akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java b/docs/src/test/java/jdocs/actor/FaultHandlingTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/FaultHandlingTest.java
rename to docs/src/test/java/jdocs/actor/FaultHandlingTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/GraduallyBuiltActor.java b/docs/src/test/java/jdocs/actor/GraduallyBuiltActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/GraduallyBuiltActor.java
rename to docs/src/test/java/jdocs/actor/GraduallyBuiltActor.java
diff --git a/akka-docs/src/test/java/jdocs/actor/ImmutableMessage.java b/docs/src/test/java/jdocs/actor/ImmutableMessage.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/ImmutableMessage.java
rename to docs/src/test/java/jdocs/actor/ImmutableMessage.java
diff --git a/akka-docs/src/test/java/jdocs/actor/InitializationDocTest.java b/docs/src/test/java/jdocs/actor/InitializationDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/InitializationDocTest.java
rename to docs/src/test/java/jdocs/actor/InitializationDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/Messages.java b/docs/src/test/java/jdocs/actor/Messages.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/Messages.java
rename to docs/src/test/java/jdocs/actor/Messages.java
diff --git a/akka-docs/src/test/java/jdocs/actor/MyActor.java b/docs/src/test/java/jdocs/actor/MyActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/MyActor.java
rename to docs/src/test/java/jdocs/actor/MyActor.java
diff --git a/akka-docs/src/test/java/jdocs/actor/MyBoundedActor.java b/docs/src/test/java/jdocs/actor/MyBoundedActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/MyBoundedActor.java
rename to docs/src/test/java/jdocs/actor/MyBoundedActor.java
diff --git a/akka-docs/src/test/java/jdocs/actor/MyStoppingActor.java b/docs/src/test/java/jdocs/actor/MyStoppingActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/MyStoppingActor.java
rename to docs/src/test/java/jdocs/actor/MyStoppingActor.java
diff --git a/akka-docs/src/test/java/jdocs/actor/SampleActor.java b/docs/src/test/java/jdocs/actor/SampleActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/SampleActor.java
rename to docs/src/test/java/jdocs/actor/SampleActor.java
diff --git a/akka-docs/src/test/java/jdocs/actor/SampleActorTest.java b/docs/src/test/java/jdocs/actor/SampleActorTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/SampleActorTest.java
rename to docs/src/test/java/jdocs/actor/SampleActorTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/SchedulerDocTest.java b/docs/src/test/java/jdocs/actor/SchedulerDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/SchedulerDocTest.java
rename to docs/src/test/java/jdocs/actor/SchedulerDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/TimerDocTest.java b/docs/src/test/java/jdocs/actor/TimerDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/TimerDocTest.java
rename to docs/src/test/java/jdocs/actor/TimerDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/fsm/Buncher.java b/docs/src/test/java/jdocs/actor/fsm/Buncher.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/fsm/Buncher.java
rename to docs/src/test/java/jdocs/actor/fsm/Buncher.java
diff --git a/akka-docs/src/test/java/jdocs/actor/fsm/BuncherTest.java b/docs/src/test/java/jdocs/actor/fsm/BuncherTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/fsm/BuncherTest.java
rename to docs/src/test/java/jdocs/actor/fsm/BuncherTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/fsm/Events.java b/docs/src/test/java/jdocs/actor/fsm/Events.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/fsm/Events.java
rename to docs/src/test/java/jdocs/actor/fsm/Events.java
diff --git a/akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java b/docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java
rename to docs/src/test/java/jdocs/actor/fsm/FSMDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/io/dns/DnsCompileOnlyDocTest.java b/docs/src/test/java/jdocs/actor/io/dns/DnsCompileOnlyDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/io/dns/DnsCompileOnlyDocTest.java
rename to docs/src/test/java/jdocs/actor/io/dns/DnsCompileOnlyDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/typed/BlockingActor.java b/docs/src/test/java/jdocs/actor/typed/BlockingActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/typed/BlockingActor.java
rename to docs/src/test/java/jdocs/actor/typed/BlockingActor.java
diff --git a/akka-docs/src/test/java/jdocs/actor/typed/BlockingDispatcherTest.java b/docs/src/test/java/jdocs/actor/typed/BlockingDispatcherTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/typed/BlockingDispatcherTest.java
rename to docs/src/test/java/jdocs/actor/typed/BlockingDispatcherTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java b/docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java
rename to docs/src/test/java/jdocs/actor/typed/CoordinatedActorShutdownTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/typed/DispatcherDocTest.java b/docs/src/test/java/jdocs/actor/typed/DispatcherDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/typed/DispatcherDocTest.java
rename to docs/src/test/java/jdocs/actor/typed/DispatcherDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/actor/typed/PrintActor.java b/docs/src/test/java/jdocs/actor/typed/PrintActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/typed/PrintActor.java
rename to docs/src/test/java/jdocs/actor/typed/PrintActor.java
diff --git a/akka-docs/src/test/java/jdocs/actor/typed/SeparateDispatcherCompletionStageActor.java b/docs/src/test/java/jdocs/actor/typed/SeparateDispatcherCompletionStageActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/typed/SeparateDispatcherCompletionStageActor.java
rename to docs/src/test/java/jdocs/actor/typed/SeparateDispatcherCompletionStageActor.java
diff --git a/akka-docs/src/test/java/jdocs/actor/typed/SharedMutableStateDocTest.java b/docs/src/test/java/jdocs/actor/typed/SharedMutableStateDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/actor/typed/SharedMutableStateDocTest.java
rename to docs/src/test/java/jdocs/actor/typed/SharedMutableStateDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/circuitbreaker/DangerousJavaActor.java b/docs/src/test/java/jdocs/circuitbreaker/DangerousJavaActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/circuitbreaker/DangerousJavaActor.java
rename to docs/src/test/java/jdocs/circuitbreaker/DangerousJavaActor.java
diff --git a/akka-docs/src/test/java/jdocs/circuitbreaker/EvenNoFailureJavaExample.java b/docs/src/test/java/jdocs/circuitbreaker/EvenNoFailureJavaExample.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/circuitbreaker/EvenNoFailureJavaExample.java
rename to docs/src/test/java/jdocs/circuitbreaker/EvenNoFailureJavaExample.java
diff --git a/akka-docs/src/test/java/jdocs/circuitbreaker/TellPatternJavaActor.java b/docs/src/test/java/jdocs/circuitbreaker/TellPatternJavaActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/circuitbreaker/TellPatternJavaActor.java
rename to docs/src/test/java/jdocs/circuitbreaker/TellPatternJavaActor.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/ClusterDocTest.java b/docs/src/test/java/jdocs/cluster/ClusterDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/ClusterDocTest.java
rename to docs/src/test/java/jdocs/cluster/ClusterDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/FactorialBackend.java b/docs/src/test/java/jdocs/cluster/FactorialBackend.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/FactorialBackend.java
rename to docs/src/test/java/jdocs/cluster/FactorialBackend.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/FactorialFrontend.java b/docs/src/test/java/jdocs/cluster/FactorialFrontend.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/FactorialFrontend.java
rename to docs/src/test/java/jdocs/cluster/FactorialFrontend.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/FactorialFrontendMain.java b/docs/src/test/java/jdocs/cluster/FactorialFrontendMain.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/FactorialFrontendMain.java
rename to docs/src/test/java/jdocs/cluster/FactorialFrontendMain.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/FactorialResult.java b/docs/src/test/java/jdocs/cluster/FactorialResult.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/FactorialResult.java
rename to docs/src/test/java/jdocs/cluster/FactorialResult.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/MetricsListener.java b/docs/src/test/java/jdocs/cluster/MetricsListener.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/MetricsListener.java
rename to docs/src/test/java/jdocs/cluster/MetricsListener.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/SimpleClusterListener.java b/docs/src/test/java/jdocs/cluster/SimpleClusterListener.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/SimpleClusterListener.java
rename to docs/src/test/java/jdocs/cluster/SimpleClusterListener.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java b/docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java
rename to docs/src/test/java/jdocs/cluster/SimpleClusterListener2.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/StatsAggregator.java b/docs/src/test/java/jdocs/cluster/StatsAggregator.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/StatsAggregator.java
rename to docs/src/test/java/jdocs/cluster/StatsAggregator.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/StatsMessages.java b/docs/src/test/java/jdocs/cluster/StatsMessages.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/StatsMessages.java
rename to docs/src/test/java/jdocs/cluster/StatsMessages.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/StatsSampleClient.java b/docs/src/test/java/jdocs/cluster/StatsSampleClient.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/StatsSampleClient.java
rename to docs/src/test/java/jdocs/cluster/StatsSampleClient.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/StatsSampleOneMasterClientMain.java b/docs/src/test/java/jdocs/cluster/StatsSampleOneMasterClientMain.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/StatsSampleOneMasterClientMain.java
rename to docs/src/test/java/jdocs/cluster/StatsSampleOneMasterClientMain.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/StatsSampleOneMasterMain.java b/docs/src/test/java/jdocs/cluster/StatsSampleOneMasterMain.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/StatsSampleOneMasterMain.java
rename to docs/src/test/java/jdocs/cluster/StatsSampleOneMasterMain.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/StatsService.java b/docs/src/test/java/jdocs/cluster/StatsService.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/StatsService.java
rename to docs/src/test/java/jdocs/cluster/StatsService.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/StatsWorker.java b/docs/src/test/java/jdocs/cluster/StatsWorker.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/StatsWorker.java
rename to docs/src/test/java/jdocs/cluster/StatsWorker.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/TransformationBackend.java b/docs/src/test/java/jdocs/cluster/TransformationBackend.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/TransformationBackend.java
rename to docs/src/test/java/jdocs/cluster/TransformationBackend.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/TransformationFrontend.java b/docs/src/test/java/jdocs/cluster/TransformationFrontend.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/TransformationFrontend.java
rename to docs/src/test/java/jdocs/cluster/TransformationFrontend.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/TransformationMessages.java b/docs/src/test/java/jdocs/cluster/TransformationMessages.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/TransformationMessages.java
rename to docs/src/test/java/jdocs/cluster/TransformationMessages.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/singleton/ClusterSingletonSupervision.java b/docs/src/test/java/jdocs/cluster/singleton/ClusterSingletonSupervision.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/singleton/ClusterSingletonSupervision.java
rename to docs/src/test/java/jdocs/cluster/singleton/ClusterSingletonSupervision.java
diff --git a/akka-docs/src/test/java/jdocs/cluster/singleton/SupervisorActor.java b/docs/src/test/java/jdocs/cluster/singleton/SupervisorActor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/cluster/singleton/SupervisorActor.java
rename to docs/src/test/java/jdocs/cluster/singleton/SupervisorActor.java
diff --git a/akka-docs/src/test/java/jdocs/config/ConfigDocTest.java b/docs/src/test/java/jdocs/config/ConfigDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/config/ConfigDocTest.java
rename to docs/src/test/java/jdocs/config/ConfigDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/coordination/LeaseDocTest.java b/docs/src/test/java/jdocs/coordination/LeaseDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/coordination/LeaseDocTest.java
rename to docs/src/test/java/jdocs/coordination/LeaseDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/ddata/DataBot.java b/docs/src/test/java/jdocs/ddata/DataBot.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/ddata/DataBot.java
rename to docs/src/test/java/jdocs/ddata/DataBot.java
diff --git a/akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java b/docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java
rename to docs/src/test/java/jdocs/ddata/DistributedDataDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/ddata/ShoppingCart.java b/docs/src/test/java/jdocs/ddata/ShoppingCart.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/ddata/ShoppingCart.java
rename to docs/src/test/java/jdocs/ddata/ShoppingCart.java
diff --git a/akka-docs/src/test/java/jdocs/ddata/TwoPhaseSet.java b/docs/src/test/java/jdocs/ddata/TwoPhaseSet.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/ddata/TwoPhaseSet.java
rename to docs/src/test/java/jdocs/ddata/TwoPhaseSet.java
diff --git a/akka-docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer.java b/docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer.java
rename to docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer.java
diff --git a/akka-docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer2.java b/docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer2.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer2.java
rename to docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializer2.java
diff --git a/akka-docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializerWithCompression.java b/docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializerWithCompression.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializerWithCompression.java
rename to docs/src/test/java/jdocs/ddata/protobuf/TwoPhaseSetSerializerWithCompression.java
diff --git a/akka-docs/src/test/java/jdocs/discovery/DnsDiscoveryDocTest.java b/docs/src/test/java/jdocs/discovery/DnsDiscoveryDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/discovery/DnsDiscoveryDocTest.java
rename to docs/src/test/java/jdocs/discovery/DnsDiscoveryDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/dispatcher/DispatcherDocTest.java b/docs/src/test/java/jdocs/dispatcher/DispatcherDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/dispatcher/DispatcherDocTest.java
rename to docs/src/test/java/jdocs/dispatcher/DispatcherDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/dispatcher/MyUnboundedMailbox.java b/docs/src/test/java/jdocs/dispatcher/MyUnboundedMailbox.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/dispatcher/MyUnboundedMailbox.java
rename to docs/src/test/java/jdocs/dispatcher/MyUnboundedMailbox.java
diff --git a/akka-docs/src/test/java/jdocs/dispatcher/MyUnboundedMessageQueueSemantics.java b/docs/src/test/java/jdocs/dispatcher/MyUnboundedMessageQueueSemantics.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/dispatcher/MyUnboundedMessageQueueSemantics.java
rename to docs/src/test/java/jdocs/dispatcher/MyUnboundedMessageQueueSemantics.java
diff --git a/akka-docs/src/test/java/jdocs/duration/Java.java b/docs/src/test/java/jdocs/duration/Java.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/duration/Java.java
rename to docs/src/test/java/jdocs/duration/Java.java
diff --git a/akka-docs/src/test/java/jdocs/event/EventBusDocTest.java b/docs/src/test/java/jdocs/event/EventBusDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/event/EventBusDocTest.java
rename to docs/src/test/java/jdocs/event/EventBusDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/event/LoggingDocTest.java b/docs/src/test/java/jdocs/event/LoggingDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/event/LoggingDocTest.java
rename to docs/src/test/java/jdocs/event/LoggingDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/extension/ExtensionDocTest.java b/docs/src/test/java/jdocs/extension/ExtensionDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/extension/ExtensionDocTest.java
rename to docs/src/test/java/jdocs/extension/ExtensionDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/extension/SettingsExtensionDocTest.java b/docs/src/test/java/jdocs/extension/SettingsExtensionDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/extension/SettingsExtensionDocTest.java
rename to docs/src/test/java/jdocs/extension/SettingsExtensionDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/future/ActorWithFuture.java b/docs/src/test/java/jdocs/future/ActorWithFuture.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/future/ActorWithFuture.java
rename to docs/src/test/java/jdocs/future/ActorWithFuture.java
diff --git a/akka-docs/src/test/java/jdocs/future/FutureDocTest.java b/docs/src/test/java/jdocs/future/FutureDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/future/FutureDocTest.java
rename to docs/src/test/java/jdocs/future/FutureDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/io/IODocTest.java b/docs/src/test/java/jdocs/io/IODocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/IODocTest.java
rename to docs/src/test/java/jdocs/io/IODocTest.java
diff --git a/akka-docs/src/test/java/jdocs/io/JavaReadBackPressure.java b/docs/src/test/java/jdocs/io/JavaReadBackPressure.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/JavaReadBackPressure.java
rename to docs/src/test/java/jdocs/io/JavaReadBackPressure.java
diff --git a/akka-docs/src/test/java/jdocs/io/JavaUdpMulticast.java b/docs/src/test/java/jdocs/io/JavaUdpMulticast.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/JavaUdpMulticast.java
rename to docs/src/test/java/jdocs/io/JavaUdpMulticast.java
diff --git a/akka-docs/src/test/java/jdocs/io/JavaUdpMulticastTest.java b/docs/src/test/java/jdocs/io/JavaUdpMulticastTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/JavaUdpMulticastTest.java
rename to docs/src/test/java/jdocs/io/JavaUdpMulticastTest.java
diff --git a/akka-docs/src/test/java/jdocs/io/UdpConnectedDocTest.java b/docs/src/test/java/jdocs/io/UdpConnectedDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/UdpConnectedDocTest.java
rename to docs/src/test/java/jdocs/io/UdpConnectedDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/io/UdpDocTest.java b/docs/src/test/java/jdocs/io/UdpDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/UdpDocTest.java
rename to docs/src/test/java/jdocs/io/UdpDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/io/japi/EchoHandler.java b/docs/src/test/java/jdocs/io/japi/EchoHandler.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/japi/EchoHandler.java
rename to docs/src/test/java/jdocs/io/japi/EchoHandler.java
diff --git a/akka-docs/src/test/java/jdocs/io/japi/EchoManager.java b/docs/src/test/java/jdocs/io/japi/EchoManager.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/japi/EchoManager.java
rename to docs/src/test/java/jdocs/io/japi/EchoManager.java
diff --git a/akka-docs/src/test/java/jdocs/io/japi/EchoServer.java b/docs/src/test/java/jdocs/io/japi/EchoServer.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/japi/EchoServer.java
rename to docs/src/test/java/jdocs/io/japi/EchoServer.java
diff --git a/akka-docs/src/test/java/jdocs/io/japi/IODocTest.java b/docs/src/test/java/jdocs/io/japi/IODocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/japi/IODocTest.java
rename to docs/src/test/java/jdocs/io/japi/IODocTest.java
diff --git a/akka-docs/src/test/java/jdocs/io/japi/Message.java b/docs/src/test/java/jdocs/io/japi/Message.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/japi/Message.java
rename to docs/src/test/java/jdocs/io/japi/Message.java
diff --git a/akka-docs/src/test/java/jdocs/io/japi/SimpleEchoHandler.java b/docs/src/test/java/jdocs/io/japi/SimpleEchoHandler.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/japi/SimpleEchoHandler.java
rename to docs/src/test/java/jdocs/io/japi/SimpleEchoHandler.java
diff --git a/akka-docs/src/test/java/jdocs/io/japi/Watcher.java b/docs/src/test/java/jdocs/io/japi/Watcher.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/io/japi/Watcher.java
rename to docs/src/test/java/jdocs/io/japi/Watcher.java
diff --git a/akka-docs/src/test/java/jdocs/pattern/BackoffSupervisorDocTest.java b/docs/src/test/java/jdocs/pattern/BackoffSupervisorDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/pattern/BackoffSupervisorDocTest.java
rename to docs/src/test/java/jdocs/pattern/BackoffSupervisorDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/pattern/SupervisedAsk.java b/docs/src/test/java/jdocs/pattern/SupervisedAsk.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/pattern/SupervisedAsk.java
rename to docs/src/test/java/jdocs/pattern/SupervisedAsk.java
diff --git a/akka-docs/src/test/java/jdocs/pattern/SupervisedAskSpec.java b/docs/src/test/java/jdocs/pattern/SupervisedAskSpec.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/pattern/SupervisedAskSpec.java
rename to docs/src/test/java/jdocs/pattern/SupervisedAskSpec.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java b/docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java
rename to docs/src/test/java/jdocs/persistence/LambdaPersistenceDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/LambdaPersistencePluginDocTest.java b/docs/src/test/java/jdocs/persistence/LambdaPersistencePluginDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/LambdaPersistencePluginDocTest.java
rename to docs/src/test/java/jdocs/persistence/LambdaPersistencePluginDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/PersistenceEventAdapterDocTest.java b/docs/src/test/java/jdocs/persistence/PersistenceEventAdapterDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/PersistenceEventAdapterDocTest.java
rename to docs/src/test/java/jdocs/persistence/PersistenceEventAdapterDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/PersistenceMultiDocTest.java b/docs/src/test/java/jdocs/persistence/PersistenceMultiDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/PersistenceMultiDocTest.java
rename to docs/src/test/java/jdocs/persistence/PersistenceMultiDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/PersistenceQueryDocTest.java b/docs/src/test/java/jdocs/persistence/PersistenceQueryDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/PersistenceQueryDocTest.java
rename to docs/src/test/java/jdocs/persistence/PersistenceQueryDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java b/docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java
rename to docs/src/test/java/jdocs/persistence/PersistenceSchemaEvolutionDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/PersistentActorExample.java b/docs/src/test/java/jdocs/persistence/PersistentActorExample.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/PersistentActorExample.java
rename to docs/src/test/java/jdocs/persistence/PersistentActorExample.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/query/LeveldbPersistenceQueryDocTest.java b/docs/src/test/java/jdocs/persistence/query/LeveldbPersistenceQueryDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/query/LeveldbPersistenceQueryDocTest.java
rename to docs/src/test/java/jdocs/persistence/query/LeveldbPersistenceQueryDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/query/MyEventsByTagSource.java b/docs/src/test/java/jdocs/persistence/query/MyEventsByTagSource.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/query/MyEventsByTagSource.java
rename to docs/src/test/java/jdocs/persistence/query/MyEventsByTagSource.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/testkit/Configuration.java b/docs/src/test/java/jdocs/persistence/testkit/Configuration.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/testkit/Configuration.java
rename to docs/src/test/java/jdocs/persistence/testkit/Configuration.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/testkit/PersistenceInitTest.java b/docs/src/test/java/jdocs/persistence/testkit/PersistenceInitTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/testkit/PersistenceInitTest.java
rename to docs/src/test/java/jdocs/persistence/testkit/PersistenceInitTest.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitPolicySampleTest.java b/docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitPolicySampleTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitPolicySampleTest.java
rename to docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitPolicySampleTest.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitSampleTest.java b/docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitSampleTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitSampleTest.java
rename to docs/src/test/java/jdocs/persistence/testkit/PersistenceTestKitSampleTest.java
diff --git a/akka-docs/src/test/java/jdocs/persistence/testkit/TestKitExamples.java b/docs/src/test/java/jdocs/persistence/testkit/TestKitExamples.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/persistence/testkit/TestKitExamples.java
rename to docs/src/test/java/jdocs/persistence/testkit/TestKitExamples.java
diff --git a/akka-docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java b/docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java
rename to docs/src/test/java/jdocs/remoting/RemoteDeploymentDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/routing/ConsistentHashingRouterDocTest.java b/docs/src/test/java/jdocs/routing/ConsistentHashingRouterDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/routing/ConsistentHashingRouterDocTest.java
rename to docs/src/test/java/jdocs/routing/ConsistentHashingRouterDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/routing/CustomRouterDocTest.java b/docs/src/test/java/jdocs/routing/CustomRouterDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/routing/CustomRouterDocTest.java
rename to docs/src/test/java/jdocs/routing/CustomRouterDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/routing/RedundancyGroup.java b/docs/src/test/java/jdocs/routing/RedundancyGroup.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/routing/RedundancyGroup.java
rename to docs/src/test/java/jdocs/routing/RedundancyGroup.java
diff --git a/akka-docs/src/test/java/jdocs/routing/RouterDocTest.java b/docs/src/test/java/jdocs/routing/RouterDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/routing/RouterDocTest.java
rename to docs/src/test/java/jdocs/routing/RouterDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java b/docs/src/test/java/jdocs/serialization/SerializationDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/serialization/SerializationDocTest.java
rename to docs/src/test/java/jdocs/serialization/SerializationDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/sharding/ClusterShardingTest.java b/docs/src/test/java/jdocs/sharding/ClusterShardingTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/sharding/ClusterShardingTest.java
rename to docs/src/test/java/jdocs/sharding/ClusterShardingTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/BidiFlowDocTest.java b/docs/src/test/java/jdocs/stream/BidiFlowDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/BidiFlowDocTest.java
rename to docs/src/test/java/jdocs/stream/BidiFlowDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java b/docs/src/test/java/jdocs/stream/CompositionDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/CompositionDocTest.java
rename to docs/src/test/java/jdocs/stream/CompositionDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/FlowDocTest.java b/docs/src/test/java/jdocs/stream/FlowDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/FlowDocTest.java
rename to docs/src/test/java/jdocs/stream/FlowDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java b/docs/src/test/java/jdocs/stream/FlowErrorDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/FlowErrorDocTest.java
rename to docs/src/test/java/jdocs/stream/FlowErrorDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java b/docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java
rename to docs/src/test/java/jdocs/stream/FlowParallelismDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java b/docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java
rename to docs/src/test/java/jdocs/stream/FlowStreamRefsDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java b/docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java
rename to docs/src/test/java/jdocs/stream/GraphCyclesDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java b/docs/src/test/java/jdocs/stream/GraphStageDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/GraphStageDocTest.java
rename to docs/src/test/java/jdocs/stream/GraphStageDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/GraphStageLoggingDocTest.java b/docs/src/test/java/jdocs/stream/GraphStageLoggingDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/GraphStageLoggingDocTest.java
rename to docs/src/test/java/jdocs/stream/GraphStageLoggingDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/HubDocTest.java b/docs/src/test/java/jdocs/stream/HubDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/HubDocTest.java
rename to docs/src/test/java/jdocs/stream/HubDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java b/docs/src/test/java/jdocs/stream/IntegrationDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/IntegrationDocTest.java
rename to docs/src/test/java/jdocs/stream/IntegrationDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/KillSwitchDocTest.java b/docs/src/test/java/jdocs/stream/KillSwitchDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/KillSwitchDocTest.java
rename to docs/src/test/java/jdocs/stream/KillSwitchDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/Main.java b/docs/src/test/java/jdocs/stream/Main.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/Main.java
rename to docs/src/test/java/jdocs/stream/Main.java
diff --git a/akka-docs/src/test/java/jdocs/stream/MigrationsJava.java b/docs/src/test/java/jdocs/stream/MigrationsJava.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/MigrationsJava.java
rename to docs/src/test/java/jdocs/stream/MigrationsJava.java
diff --git a/akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java b/docs/src/test/java/jdocs/stream/QuickStartDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/QuickStartDocTest.java
rename to docs/src/test/java/jdocs/stream/QuickStartDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/RateTransformationDocTest.java b/docs/src/test/java/jdocs/stream/RateTransformationDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/RateTransformationDocTest.java
rename to docs/src/test/java/jdocs/stream/RateTransformationDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java b/docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java
rename to docs/src/test/java/jdocs/stream/ReactiveStreamsDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/RestartDocTest.java b/docs/src/test/java/jdocs/stream/RestartDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/RestartDocTest.java
rename to docs/src/test/java/jdocs/stream/RestartDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/SilenceSystemOut.java b/docs/src/test/java/jdocs/stream/SilenceSystemOut.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/SilenceSystemOut.java
rename to docs/src/test/java/jdocs/stream/SilenceSystemOut.java
diff --git a/akka-docs/src/test/java/jdocs/stream/SinkRecipeDocTest.java b/docs/src/test/java/jdocs/stream/SinkRecipeDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/SinkRecipeDocTest.java
rename to docs/src/test/java/jdocs/stream/SinkRecipeDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java b/docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java
rename to docs/src/test/java/jdocs/stream/StreamBuffersRateDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java b/docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java
rename to docs/src/test/java/jdocs/stream/StreamPartialGraphDSLDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java b/docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java
rename to docs/src/test/java/jdocs/stream/StreamTestKitDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/SubstreamDocTest.java b/docs/src/test/java/jdocs/stream/SubstreamDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/SubstreamDocTest.java
rename to docs/src/test/java/jdocs/stream/SubstreamDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java b/docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java
rename to docs/src/test/java/jdocs/stream/TwitterStreamQuickstartDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java b/docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java
rename to docs/src/test/java/jdocs/stream/io/StreamFileDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java b/docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java
rename to docs/src/test/java/jdocs/stream/io/StreamTcpDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeAdhocSourceTest.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeAdhocSourceTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeAdhocSourceTest.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeAdhocSourceTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeByteStrings.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDecompress.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDecompress.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDecompress.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDecompress.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDigest.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDigest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDigest.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDigest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDroppyBroadcast.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDroppyBroadcast.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDroppyBroadcast.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDroppyBroadcast.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeFlattenList.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeFlattenList.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeFlattenList.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeFlattenList.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeGlobalRateLimit.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeGlobalRateLimit.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeGlobalRateLimit.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeGlobalRateLimit.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeHold.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeHold.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeHold.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeHold.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeKeepAlive.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeKeepAlive.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeKeepAlive.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeKeepAlive.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeLoggingElements.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeLoggingElements.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeLoggingElements.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeLoggingElements.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeManualTrigger.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeManualTrigger.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeManualTrigger.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeManualTrigger.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMissedTicks.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMissedTicks.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMissedTicks.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMissedTicks.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMultiGroupByTest.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMultiGroupByTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMultiGroupByTest.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeMultiGroupByTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeParseLines.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeParseLines.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeParseLines.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeParseLines.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeReduceByKeyTest.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeReduceByKeyTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeReduceByKeyTest.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeReduceByKeyTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSeq.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSeq.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSeq.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSeq.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSimpleDrop.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSimpleDrop.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSimpleDrop.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSimpleDrop.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSourceFromFunction.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSourceFromFunction.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSourceFromFunction.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSourceFromFunction.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSplitter.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSplitter.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSplitter.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeSplitter.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeTest.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeTest.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeWorkerPool.java b/docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeWorkerPool.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeWorkerPool.java
rename to docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeWorkerPool.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/BroadcastDocExample.java b/docs/src/test/java/jdocs/stream/operators/BroadcastDocExample.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/BroadcastDocExample.java
rename to docs/src/test/java/jdocs/stream/operators/BroadcastDocExample.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/MergeSequenceDocExample.java b/docs/src/test/java/jdocs/stream/operators/MergeSequenceDocExample.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/MergeSequenceDocExample.java
rename to docs/src/test/java/jdocs/stream/operators/MergeSequenceDocExample.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/PartitionDocExample.java b/docs/src/test/java/jdocs/stream/operators/PartitionDocExample.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/PartitionDocExample.java
rename to docs/src/test/java/jdocs/stream/operators/PartitionDocExample.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java b/docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java
rename to docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java b/docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java
rename to docs/src/test/java/jdocs/stream/operators/SourceDocExamples.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java b/docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java
rename to docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/WithContextTest.java b/docs/src/test/java/jdocs/stream/operators/WithContextTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/WithContextTest.java
rename to docs/src/test/java/jdocs/stream/operators/WithContextTest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/converters/StreamConvertersToJava.java b/docs/src/test/java/jdocs/stream/operators/converters/StreamConvertersToJava.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/converters/StreamConvertersToJava.java
rename to docs/src/test/java/jdocs/stream/operators/converters/StreamConvertersToJava.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java b/docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java
rename to docs/src/test/java/jdocs/stream/operators/converters/ToFromJavaIOStreams.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/flow/FromSinkAndSource.java b/docs/src/test/java/jdocs/stream/operators/flow/FromSinkAndSource.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/flow/FromSinkAndSource.java
rename to docs/src/test/java/jdocs/stream/operators/flow/FromSinkAndSource.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/flow/FutureFlow.java b/docs/src/test/java/jdocs/stream/operators/flow/FutureFlow.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/flow/FutureFlow.java
rename to docs/src/test/java/jdocs/stream/operators/flow/FutureFlow.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/flow/Lazy.java b/docs/src/test/java/jdocs/stream/operators/flow/Lazy.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/flow/Lazy.java
rename to docs/src/test/java/jdocs/stream/operators/flow/Lazy.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java b/docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java
rename to docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMapConcat.java b/docs/src/test/java/jdocs/stream/operators/flow/StatefulMapConcat.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/flow/StatefulMapConcat.java
rename to docs/src/test/java/jdocs/stream/operators/flow/StatefulMapConcat.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sink/Lazy.java b/docs/src/test/java/jdocs/stream/operators/sink/Lazy.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sink/Lazy.java
rename to docs/src/test/java/jdocs/stream/operators/sink/Lazy.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/Combine.java b/docs/src/test/java/jdocs/stream/operators/source/Combine.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/Combine.java
rename to docs/src/test/java/jdocs/stream/operators/source/Combine.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/CompletionStageSource.java b/docs/src/test/java/jdocs/stream/operators/source/CompletionStageSource.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/CompletionStageSource.java
rename to docs/src/test/java/jdocs/stream/operators/source/CompletionStageSource.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/From.java b/docs/src/test/java/jdocs/stream/operators/source/From.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/From.java
rename to docs/src/test/java/jdocs/stream/operators/source/From.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/FromCompletionStage.java b/docs/src/test/java/jdocs/stream/operators/source/FromCompletionStage.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/FromCompletionStage.java
rename to docs/src/test/java/jdocs/stream/operators/source/FromCompletionStage.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/Lazy.java b/docs/src/test/java/jdocs/stream/operators/source/Lazy.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/Lazy.java
rename to docs/src/test/java/jdocs/stream/operators/source/Lazy.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/Restart.java b/docs/src/test/java/jdocs/stream/operators/source/Restart.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/Restart.java
rename to docs/src/test/java/jdocs/stream/operators/source/Restart.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/Tick.java b/docs/src/test/java/jdocs/stream/operators/source/Tick.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/Tick.java
rename to docs/src/test/java/jdocs/stream/operators/source/Tick.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/Unfold.java b/docs/src/test/java/jdocs/stream/operators/source/Unfold.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/Unfold.java
rename to docs/src/test/java/jdocs/stream/operators/source/Unfold.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldAsync.java b/docs/src/test/java/jdocs/stream/operators/source/UnfoldAsync.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldAsync.java
rename to docs/src/test/java/jdocs/stream/operators/source/UnfoldAsync.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldResource.java b/docs/src/test/java/jdocs/stream/operators/source/UnfoldResource.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldResource.java
rename to docs/src/test/java/jdocs/stream/operators/source/UnfoldResource.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldResourceAsync.java b/docs/src/test/java/jdocs/stream/operators/source/UnfoldResourceAsync.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/UnfoldResourceAsync.java
rename to docs/src/test/java/jdocs/stream/operators/source/UnfoldResourceAsync.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/source/Zip.java b/docs/src/test/java/jdocs/stream/operators/source/Zip.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/source/Zip.java
rename to docs/src/test/java/jdocs/stream/operators/source/Zip.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/ExtrapolateAndExpand.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/ExtrapolateAndExpand.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/ExtrapolateAndExpand.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/ExtrapolateAndExpand.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapConcat.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapConcat.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapConcat.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapConcat.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapMerge.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapMerge.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapMerge.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/FlatMapMerge.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Intersperse.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/Intersperse.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Intersperse.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/Intersperse.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Limit.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/Limit.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Limit.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/Limit.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/LimitWeighted.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/LimitWeighted.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/LimitWeighted.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/LimitWeighted.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapAsyncs.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/MapAsyncs.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapAsyncs.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/MapAsyncs.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapConcat.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/MapConcat.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapConcat.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/MapConcat.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapError.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/MapError.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MapError.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/MapError.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MergeLatest.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/MergeLatest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/MergeLatest.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/MergeLatest.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Monitor.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/Monitor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Monitor.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/Monitor.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Sliding.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/Sliding.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Sliding.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/Sliding.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Split.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/Split.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Split.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/Split.java
diff --git a/akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Throttle.java b/docs/src/test/java/jdocs/stream/operators/sourceorflow/Throttle.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/stream/operators/sourceorflow/Throttle.java
rename to docs/src/test/java/jdocs/stream/operators/sourceorflow/Throttle.java
diff --git a/akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java b/docs/src/test/java/jdocs/testkit/ParentChildTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/testkit/ParentChildTest.java
rename to docs/src/test/java/jdocs/testkit/ParentChildTest.java
diff --git a/akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java b/docs/src/test/java/jdocs/testkit/TestKitDocTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/testkit/TestKitDocTest.java
rename to docs/src/test/java/jdocs/testkit/TestKitDocTest.java
diff --git a/akka-docs/src/test/java/jdocs/testkit/TestKitSampleTest.java b/docs/src/test/java/jdocs/testkit/TestKitSampleTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/testkit/TestKitSampleTest.java
rename to docs/src/test/java/jdocs/testkit/TestKitSampleTest.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_1/ActorHierarchyExperiments.java b/docs/src/test/java/jdocs/typed/tutorial_1/ActorHierarchyExperiments.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_1/ActorHierarchyExperiments.java
rename to docs/src/test/java/jdocs/typed/tutorial_1/ActorHierarchyExperiments.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_2/IotMain.java b/docs/src/test/java/jdocs/typed/tutorial_2/IotMain.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_2/IotMain.java
rename to docs/src/test/java/jdocs/typed/tutorial_2/IotMain.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_2/IotSupervisor.java b/docs/src/test/java/jdocs/typed/tutorial_2/IotSupervisor.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_2/IotSupervisor.java
rename to docs/src/test/java/jdocs/typed/tutorial_2/IotSupervisor.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_3/Device.java b/docs/src/test/java/jdocs/typed/tutorial_3/Device.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_3/Device.java
rename to docs/src/test/java/jdocs/typed/tutorial_3/Device.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_3/DeviceTest.java b/docs/src/test/java/jdocs/typed/tutorial_3/DeviceTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_3/DeviceTest.java
rename to docs/src/test/java/jdocs/typed/tutorial_3/DeviceTest.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_3/inprogress1/Device.java b/docs/src/test/java/jdocs/typed/tutorial_3/inprogress1/Device.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_3/inprogress1/Device.java
rename to docs/src/test/java/jdocs/typed/tutorial_3/inprogress1/Device.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_3/inprogress2/Device.java b/docs/src/test/java/jdocs/typed/tutorial_3/inprogress2/Device.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_3/inprogress2/Device.java
rename to docs/src/test/java/jdocs/typed/tutorial_3/inprogress2/Device.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_3/inprogress3/Device.java b/docs/src/test/java/jdocs/typed/tutorial_3/inprogress3/Device.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_3/inprogress3/Device.java
rename to docs/src/test/java/jdocs/typed/tutorial_3/inprogress3/Device.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_4/Device.java b/docs/src/test/java/jdocs/typed/tutorial_4/Device.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_4/Device.java
rename to docs/src/test/java/jdocs/typed/tutorial_4/Device.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroup.java b/docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroup.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroup.java
rename to docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroup.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroupTest.java b/docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroupTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroupTest.java
rename to docs/src/test/java/jdocs/typed/tutorial_4/DeviceGroupTest.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceManager.java b/docs/src/test/java/jdocs/typed/tutorial_4/DeviceManager.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceManager.java
rename to docs/src/test/java/jdocs/typed/tutorial_4/DeviceManager.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceManagerTest.java b/docs/src/test/java/jdocs/typed/tutorial_4/DeviceManagerTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceManagerTest.java
rename to docs/src/test/java/jdocs/typed/tutorial_4/DeviceManagerTest.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceTest.java b/docs/src/test/java/jdocs/typed/tutorial_4/DeviceTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_4/DeviceTest.java
rename to docs/src/test/java/jdocs/typed/tutorial_4/DeviceTest.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_5/Device.java b/docs/src/test/java/jdocs/typed/tutorial_5/Device.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_5/Device.java
rename to docs/src/test/java/jdocs/typed/tutorial_5/Device.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroup.java b/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroup.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroup.java
rename to docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroup.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java b/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java
rename to docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQuery.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java b/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java
rename to docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupQueryTest.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupTest.java b/docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupTest.java
rename to docs/src/test/java/jdocs/typed/tutorial_5/DeviceGroupTest.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceManager.java b/docs/src/test/java/jdocs/typed/tutorial_5/DeviceManager.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceManager.java
rename to docs/src/test/java/jdocs/typed/tutorial_5/DeviceManager.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceManagerTest.java b/docs/src/test/java/jdocs/typed/tutorial_5/DeviceManagerTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceManagerTest.java
rename to docs/src/test/java/jdocs/typed/tutorial_5/DeviceManagerTest.java
diff --git a/akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceTest.java b/docs/src/test/java/jdocs/typed/tutorial_5/DeviceTest.java
similarity index 100%
rename from akka-docs/src/test/java/jdocs/typed/tutorial_5/DeviceTest.java
rename to docs/src/test/java/jdocs/typed/tutorial_5/DeviceTest.java
diff --git a/akka-docs/src/test/resources/application.conf b/docs/src/test/resources/application.conf
similarity index 100%
rename from akka-docs/src/test/resources/application.conf
rename to docs/src/test/resources/application.conf
diff --git a/akka-docs/src/test/resources/logback-test.xml b/docs/src/test/resources/logback-test.xml
similarity index 100%
rename from akka-docs/src/test/resources/logback-test.xml
rename to docs/src/test/resources/logback-test.xml
diff --git a/akka-docs/src/test/scala-jdk9-only/docs/stream/operators/source/AsSubscriber.scala b/docs/src/test/scala-jdk9-only/docs/stream/operators/source/AsSubscriber.scala
similarity index 100%
rename from akka-docs/src/test/scala-jdk9-only/docs/stream/operators/source/AsSubscriber.scala
rename to docs/src/test/scala-jdk9-only/docs/stream/operators/source/AsSubscriber.scala
diff --git a/akka-docs/src/test/scala-jdk9-only/docs/stream/operators/source/FromPublisher.scala b/docs/src/test/scala-jdk9-only/docs/stream/operators/source/FromPublisher.scala
similarity index 100%
rename from akka-docs/src/test/scala-jdk9-only/docs/stream/operators/source/FromPublisher.scala
rename to docs/src/test/scala-jdk9-only/docs/stream/operators/source/FromPublisher.scala
diff --git a/akka-docs/src/test/scala/docs/CompileOnlySpec.scala b/docs/src/test/scala/docs/CompileOnlySpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/CompileOnlySpec.scala
rename to docs/src/test/scala/docs/CompileOnlySpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala b/docs/src/test/scala/docs/actor/ActorDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/ActorDocSpec.scala
rename to docs/src/test/scala/docs/actor/ActorDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/ByteBufferSerializerDocSpec.scala b/docs/src/test/scala/docs/actor/ByteBufferSerializerDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/ByteBufferSerializerDocSpec.scala
rename to docs/src/test/scala/docs/actor/ByteBufferSerializerDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala b/docs/src/test/scala/docs/actor/FSMDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/FSMDocSpec.scala
rename to docs/src/test/scala/docs/actor/FSMDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSample.scala b/docs/src/test/scala/docs/actor/FaultHandlingDocSample.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/FaultHandlingDocSample.scala
rename to docs/src/test/scala/docs/actor/FaultHandlingDocSample.scala
diff --git a/akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala b/docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala
rename to docs/src/test/scala/docs/actor/FaultHandlingDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/InitializationDocSpec.scala b/docs/src/test/scala/docs/actor/InitializationDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/InitializationDocSpec.scala
rename to docs/src/test/scala/docs/actor/InitializationDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/PropsEdgeCaseSpec.scala b/docs/src/test/scala/docs/actor/PropsEdgeCaseSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/PropsEdgeCaseSpec.scala
rename to docs/src/test/scala/docs/actor/PropsEdgeCaseSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/SchedulerDocSpec.scala b/docs/src/test/scala/docs/actor/SchedulerDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/SchedulerDocSpec.scala
rename to docs/src/test/scala/docs/actor/SchedulerDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/SharedMutableStateDocSpec.scala b/docs/src/test/scala/docs/actor/SharedMutableStateDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/SharedMutableStateDocSpec.scala
rename to docs/src/test/scala/docs/actor/SharedMutableStateDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/TimerDocSpec.scala b/docs/src/test/scala/docs/actor/TimerDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/TimerDocSpec.scala
rename to docs/src/test/scala/docs/actor/TimerDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/UnnestedReceives.scala b/docs/src/test/scala/docs/actor/UnnestedReceives.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/UnnestedReceives.scala
rename to docs/src/test/scala/docs/actor/UnnestedReceives.scala
diff --git a/akka-docs/src/test/scala/docs/actor/io/dns/DnsCompileOnlyDocSpec.scala b/docs/src/test/scala/docs/actor/io/dns/DnsCompileOnlyDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/io/dns/DnsCompileOnlyDocSpec.scala
rename to docs/src/test/scala/docs/actor/io/dns/DnsCompileOnlyDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/typed/BlockingActor.scala b/docs/src/test/scala/docs/actor/typed/BlockingActor.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/typed/BlockingActor.scala
rename to docs/src/test/scala/docs/actor/typed/BlockingActor.scala
diff --git a/akka-docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala b/docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala
rename to docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala
diff --git a/akka-docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala b/docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala
rename to docs/src/test/scala/docs/actor/typed/CoordinatedActorShutdownSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/typed/DispatcherDocSpec.scala b/docs/src/test/scala/docs/actor/typed/DispatcherDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/typed/DispatcherDocSpec.scala
rename to docs/src/test/scala/docs/actor/typed/DispatcherDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/actor/typed/PrintActor.scala b/docs/src/test/scala/docs/actor/typed/PrintActor.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/typed/PrintActor.scala
rename to docs/src/test/scala/docs/actor/typed/PrintActor.scala
diff --git a/akka-docs/src/test/scala/docs/actor/typed/SharedMutableStateDocSpec.scala b/docs/src/test/scala/docs/actor/typed/SharedMutableStateDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/actor/typed/SharedMutableStateDocSpec.scala
rename to docs/src/test/scala/docs/actor/typed/SharedMutableStateDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala b/docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala
rename to docs/src/test/scala/docs/circuitbreaker/CircuitBreakerDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/cluster/ClusterDocSpec.scala b/docs/src/test/scala/docs/cluster/ClusterDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/cluster/ClusterDocSpec.scala
rename to docs/src/test/scala/docs/cluster/ClusterDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/cluster/FactorialBackend.scala b/docs/src/test/scala/docs/cluster/FactorialBackend.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/cluster/FactorialBackend.scala
rename to docs/src/test/scala/docs/cluster/FactorialBackend.scala
diff --git a/akka-docs/src/test/scala/docs/cluster/FactorialFrontend.scala b/docs/src/test/scala/docs/cluster/FactorialFrontend.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/cluster/FactorialFrontend.scala
rename to docs/src/test/scala/docs/cluster/FactorialFrontend.scala
diff --git a/akka-docs/src/test/scala/docs/cluster/MetricsListener.scala b/docs/src/test/scala/docs/cluster/MetricsListener.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/cluster/MetricsListener.scala
rename to docs/src/test/scala/docs/cluster/MetricsListener.scala
diff --git a/akka-docs/src/test/scala/docs/cluster/SimpleClusterListener.scala b/docs/src/test/scala/docs/cluster/SimpleClusterListener.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/cluster/SimpleClusterListener.scala
rename to docs/src/test/scala/docs/cluster/SimpleClusterListener.scala
diff --git a/akka-docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala b/docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala
rename to docs/src/test/scala/docs/cluster/SimpleClusterListener2.scala
diff --git a/akka-docs/src/test/scala/docs/cluster/TransformationBackend.scala b/docs/src/test/scala/docs/cluster/TransformationBackend.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/cluster/TransformationBackend.scala
rename to docs/src/test/scala/docs/cluster/TransformationBackend.scala
diff --git a/akka-docs/src/test/scala/docs/cluster/TransformationFrontend.scala b/docs/src/test/scala/docs/cluster/TransformationFrontend.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/cluster/TransformationFrontend.scala
rename to docs/src/test/scala/docs/cluster/TransformationFrontend.scala
diff --git a/akka-docs/src/test/scala/docs/cluster/TransformationMessages.scala b/docs/src/test/scala/docs/cluster/TransformationMessages.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/cluster/TransformationMessages.scala
rename to docs/src/test/scala/docs/cluster/TransformationMessages.scala
diff --git a/akka-docs/src/test/scala/docs/cluster/singleton/ClusterSingletonSupervision.scala b/docs/src/test/scala/docs/cluster/singleton/ClusterSingletonSupervision.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/cluster/singleton/ClusterSingletonSupervision.scala
rename to docs/src/test/scala/docs/cluster/singleton/ClusterSingletonSupervision.scala
diff --git a/akka-docs/src/test/scala/docs/config/ConfigDocSpec.scala b/docs/src/test/scala/docs/config/ConfigDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/config/ConfigDocSpec.scala
rename to docs/src/test/scala/docs/config/ConfigDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/coordination/LeaseDocSpec.scala b/docs/src/test/scala/docs/coordination/LeaseDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/coordination/LeaseDocSpec.scala
rename to docs/src/test/scala/docs/coordination/LeaseDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala b/docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala
rename to docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/ddata/ShoppingCart.scala b/docs/src/test/scala/docs/ddata/ShoppingCart.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/ddata/ShoppingCart.scala
rename to docs/src/test/scala/docs/ddata/ShoppingCart.scala
diff --git a/akka-docs/src/test/scala/docs/ddata/TwoPhaseSet.scala b/docs/src/test/scala/docs/ddata/TwoPhaseSet.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/ddata/TwoPhaseSet.scala
rename to docs/src/test/scala/docs/ddata/TwoPhaseSet.scala
diff --git a/akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala b/docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala
rename to docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala
diff --git a/akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer2.scala b/docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer2.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer2.scala
rename to docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer2.scala
diff --git a/akka-docs/src/test/scala/docs/discovery/DnsDiscoveryDocSpec.scala b/docs/src/test/scala/docs/discovery/DnsDiscoveryDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/discovery/DnsDiscoveryDocSpec.scala
rename to docs/src/test/scala/docs/discovery/DnsDiscoveryDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala b/docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala
rename to docs/src/test/scala/docs/dispatcher/DispatcherDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/dispatcher/MyUnboundedMailbox.scala b/docs/src/test/scala/docs/dispatcher/MyUnboundedMailbox.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/dispatcher/MyUnboundedMailbox.scala
rename to docs/src/test/scala/docs/dispatcher/MyUnboundedMailbox.scala
diff --git a/akka-docs/src/test/scala/docs/duration/Sample.scala b/docs/src/test/scala/docs/duration/Sample.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/duration/Sample.scala
rename to docs/src/test/scala/docs/duration/Sample.scala
diff --git a/akka-docs/src/test/scala/docs/event/EventBusDocSpec.scala b/docs/src/test/scala/docs/event/EventBusDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/event/EventBusDocSpec.scala
rename to docs/src/test/scala/docs/event/EventBusDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/event/LoggingDocSpec.scala b/docs/src/test/scala/docs/event/LoggingDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/event/LoggingDocSpec.scala
rename to docs/src/test/scala/docs/event/LoggingDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/extension/ExtensionDocSpec.scala b/docs/src/test/scala/docs/extension/ExtensionDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/extension/ExtensionDocSpec.scala
rename to docs/src/test/scala/docs/extension/ExtensionDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/extension/SettingsExtensionDocSpec.scala b/docs/src/test/scala/docs/extension/SettingsExtensionDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/extension/SettingsExtensionDocSpec.scala
rename to docs/src/test/scala/docs/extension/SettingsExtensionDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/faq/Faq.scala b/docs/src/test/scala/docs/faq/Faq.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/faq/Faq.scala
rename to docs/src/test/scala/docs/faq/Faq.scala
diff --git a/akka-docs/src/test/scala/docs/future/FutureDocSpec.scala b/docs/src/test/scala/docs/future/FutureDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/future/FutureDocSpec.scala
rename to docs/src/test/scala/docs/future/FutureDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/io/EchoServer.scala b/docs/src/test/scala/docs/io/EchoServer.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/io/EchoServer.scala
rename to docs/src/test/scala/docs/io/EchoServer.scala
diff --git a/akka-docs/src/test/scala/docs/io/IODocSpec.scala b/docs/src/test/scala/docs/io/IODocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/io/IODocSpec.scala
rename to docs/src/test/scala/docs/io/IODocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/io/ReadBackPressure.scala b/docs/src/test/scala/docs/io/ReadBackPressure.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/io/ReadBackPressure.scala
rename to docs/src/test/scala/docs/io/ReadBackPressure.scala
diff --git a/akka-docs/src/test/scala/docs/io/ScalaUdpMulticast.scala b/docs/src/test/scala/docs/io/ScalaUdpMulticast.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/io/ScalaUdpMulticast.scala
rename to docs/src/test/scala/docs/io/ScalaUdpMulticast.scala
diff --git a/akka-docs/src/test/scala/docs/io/ScalaUdpMulticastSpec.scala b/docs/src/test/scala/docs/io/ScalaUdpMulticastSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/io/ScalaUdpMulticastSpec.scala
rename to docs/src/test/scala/docs/io/ScalaUdpMulticastSpec.scala
diff --git a/akka-docs/src/test/scala/docs/io/UdpDocSpec.scala b/docs/src/test/scala/docs/io/UdpDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/io/UdpDocSpec.scala
rename to docs/src/test/scala/docs/io/UdpDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala b/docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala
rename to docs/src/test/scala/docs/pattern/BackoffSupervisorDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala b/docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala
rename to docs/src/test/scala/docs/persistence/PersistenceDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/PersistenceEventAdapterDocSpec.scala b/docs/src/test/scala/docs/persistence/PersistenceEventAdapterDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/PersistenceEventAdapterDocSpec.scala
rename to docs/src/test/scala/docs/persistence/PersistenceEventAdapterDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala b/docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala
rename to docs/src/test/scala/docs/persistence/PersistenceMultiDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/PersistencePluginDocSpec.scala b/docs/src/test/scala/docs/persistence/PersistencePluginDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/PersistencePluginDocSpec.scala
rename to docs/src/test/scala/docs/persistence/PersistencePluginDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala b/docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala
rename to docs/src/test/scala/docs/persistence/PersistenceSchemaEvolutionDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/PersistenceSerializerDocSpec.scala b/docs/src/test/scala/docs/persistence/PersistenceSerializerDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/PersistenceSerializerDocSpec.scala
rename to docs/src/test/scala/docs/persistence/PersistenceSerializerDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/PersistentActorExample.scala b/docs/src/test/scala/docs/persistence/PersistentActorExample.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/PersistentActorExample.scala
rename to docs/src/test/scala/docs/persistence/PersistentActorExample.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/query/LeveldbPersistenceQueryDocSpec.scala b/docs/src/test/scala/docs/persistence/query/LeveldbPersistenceQueryDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/query/LeveldbPersistenceQueryDocSpec.scala
rename to docs/src/test/scala/docs/persistence/query/LeveldbPersistenceQueryDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/query/MyEventsByTagSource.scala b/docs/src/test/scala/docs/persistence/query/MyEventsByTagSource.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/query/MyEventsByTagSource.scala
rename to docs/src/test/scala/docs/persistence/query/MyEventsByTagSource.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/query/PersistenceQueryDocSpec.scala b/docs/src/test/scala/docs/persistence/query/PersistenceQueryDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/query/PersistenceQueryDocSpec.scala
rename to docs/src/test/scala/docs/persistence/query/PersistenceQueryDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/testkit/Configuration.scala b/docs/src/test/scala/docs/persistence/testkit/Configuration.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/testkit/Configuration.scala
rename to docs/src/test/scala/docs/persistence/testkit/Configuration.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/testkit/PersistenceInitSpec.scala b/docs/src/test/scala/docs/persistence/testkit/PersistenceInitSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/testkit/PersistenceInitSpec.scala
rename to docs/src/test/scala/docs/persistence/testkit/PersistenceInitSpec.scala
diff --git a/akka-docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala b/docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala
rename to docs/src/test/scala/docs/persistence/testkit/TestKitExamples.scala
diff --git a/akka-docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala b/docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala
rename to docs/src/test/scala/docs/remoting/RemoteDeploymentDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/routing/ConsistentHashingRouterDocSpec.scala b/docs/src/test/scala/docs/routing/ConsistentHashingRouterDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/routing/ConsistentHashingRouterDocSpec.scala
rename to docs/src/test/scala/docs/routing/ConsistentHashingRouterDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala b/docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala
rename to docs/src/test/scala/docs/routing/CustomRouterDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala b/docs/src/test/scala/docs/routing/RouterDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala
rename to docs/src/test/scala/docs/routing/RouterDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala b/docs/src/test/scala/docs/serialization/SerializationDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/serialization/SerializationDocSpec.scala
rename to docs/src/test/scala/docs/serialization/SerializationDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala b/docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala
rename to docs/src/test/scala/docs/stream/BidiFlowDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala b/docs/src/test/scala/docs/stream/CompositionDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/CompositionDocSpec.scala
rename to docs/src/test/scala/docs/stream/CompositionDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala b/docs/src/test/scala/docs/stream/FlowDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/FlowDocSpec.scala
rename to docs/src/test/scala/docs/stream/FlowDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala b/docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala
rename to docs/src/test/scala/docs/stream/FlowErrorDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala b/docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala
rename to docs/src/test/scala/docs/stream/FlowParallelismDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala b/docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala
rename to docs/src/test/scala/docs/stream/FlowStreamRefsDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/GraphCyclesSpec.scala b/docs/src/test/scala/docs/stream/GraphCyclesSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/GraphCyclesSpec.scala
rename to docs/src/test/scala/docs/stream/GraphCyclesSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala b/docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala
rename to docs/src/test/scala/docs/stream/GraphDSLDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala b/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala
rename to docs/src/test/scala/docs/stream/GraphStageDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/GraphStageLoggingDocSpec.scala b/docs/src/test/scala/docs/stream/GraphStageLoggingDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/GraphStageLoggingDocSpec.scala
rename to docs/src/test/scala/docs/stream/GraphStageLoggingDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala b/docs/src/test/scala/docs/stream/HubsDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/HubsDocSpec.scala
rename to docs/src/test/scala/docs/stream/HubsDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala b/docs/src/test/scala/docs/stream/IntegrationDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/IntegrationDocSpec.scala
rename to docs/src/test/scala/docs/stream/IntegrationDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala b/docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala
rename to docs/src/test/scala/docs/stream/KillSwitchDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/MigrationsScala.scala b/docs/src/test/scala/docs/stream/MigrationsScala.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/MigrationsScala.scala
rename to docs/src/test/scala/docs/stream/MigrationsScala.scala
diff --git a/akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala b/docs/src/test/scala/docs/stream/QuickStartDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/QuickStartDocSpec.scala
rename to docs/src/test/scala/docs/stream/QuickStartDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala b/docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala
rename to docs/src/test/scala/docs/stream/RateTransformationDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala b/docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala
rename to docs/src/test/scala/docs/stream/ReactiveStreamsDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/RestartDocSpec.scala b/docs/src/test/scala/docs/stream/RestartDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/RestartDocSpec.scala
rename to docs/src/test/scala/docs/stream/RestartDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/SinkRecipeDocSpec.scala b/docs/src/test/scala/docs/stream/SinkRecipeDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/SinkRecipeDocSpec.scala
rename to docs/src/test/scala/docs/stream/SinkRecipeDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala b/docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala
rename to docs/src/test/scala/docs/stream/StreamBuffersRateSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala b/docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala
rename to docs/src/test/scala/docs/stream/StreamPartialGraphDSLDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala b/docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala
rename to docs/src/test/scala/docs/stream/StreamTestKitDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/SubstreamDocSpec.scala b/docs/src/test/scala/docs/stream/SubstreamDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/SubstreamDocSpec.scala
rename to docs/src/test/scala/docs/stream/SubstreamDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala b/docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala
rename to docs/src/test/scala/docs/stream/TwitterStreamQuickstartDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeAdhocSource.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeAdhocSource.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeAdhocSource.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeAdhocSource.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeByteStrings.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeByteStrings.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeByteStrings.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeByteStrings.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeCollectingMetrics.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeCollectingMetrics.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeCollectingMetrics.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeCollectingMetrics.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeDecompress.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeDecompress.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeDecompress.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeDecompress.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeDigest.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeDigest.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeDigest.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeDigest.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeDroppyBroadcast.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeDroppyBroadcast.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeDroppyBroadcast.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeDroppyBroadcast.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeFlattenSeq.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeFlattenSeq.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeFlattenSeq.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeFlattenSeq.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeGlobalRateLimit.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeGlobalRateLimit.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeGlobalRateLimit.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeGlobalRateLimit.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeHold.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeHold.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeHold.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeHold.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeKeepAlive.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeKeepAlive.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeKeepAlive.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeKeepAlive.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeLoggingElements.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeLoggingElements.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeLoggingElements.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeLoggingElements.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeManualTrigger.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeManualTrigger.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeManualTrigger.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeManualTrigger.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeMissedTicks.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeMissedTicks.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeMissedTicks.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeMissedTicks.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeMultiGroupBy.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeMultiGroupBy.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeMultiGroupBy.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeMultiGroupBy.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeParseLines.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeParseLines.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeParseLines.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeParseLines.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeReduceByKey.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeReduceByKey.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeReduceByKey.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeReduceByKey.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSeq.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeSeq.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeSeq.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeSeq.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSimpleDrop.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeSimpleDrop.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeSimpleDrop.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeSimpleDrop.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSourceFromFunction.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeSourceFromFunction.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeSourceFromFunction.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeSourceFromFunction.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSpec.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeSpec.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeSplitter.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeSplitter.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeSplitter.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeSplitter.scala
diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeWorkerPool.scala b/docs/src/test/scala/docs/stream/cookbook/RecipeWorkerPool.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/cookbook/RecipeWorkerPool.scala
rename to docs/src/test/scala/docs/stream/cookbook/RecipeWorkerPool.scala
diff --git a/akka-docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala b/docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala
rename to docs/src/test/scala/docs/stream/io/StreamFileDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala b/docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala
rename to docs/src/test/scala/docs/stream/io/StreamTcpDocSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/BroadcastDocExample.scala b/docs/src/test/scala/docs/stream/operators/BroadcastDocExample.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/BroadcastDocExample.scala
rename to docs/src/test/scala/docs/stream/operators/BroadcastDocExample.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/Map.scala b/docs/src/test/scala/docs/stream/operators/Map.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/Map.scala
rename to docs/src/test/scala/docs/stream/operators/Map.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/MergeSequenceDocExample.scala b/docs/src/test/scala/docs/stream/operators/MergeSequenceDocExample.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/MergeSequenceDocExample.scala
rename to docs/src/test/scala/docs/stream/operators/MergeSequenceDocExample.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/PartitionDocExample.scala b/docs/src/test/scala/docs/stream/operators/PartitionDocExample.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/PartitionDocExample.scala
rename to docs/src/test/scala/docs/stream/operators/PartitionDocExample.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/SourceOperators.scala b/docs/src/test/scala/docs/stream/operators/SourceOperators.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/SourceOperators.scala
rename to docs/src/test/scala/docs/stream/operators/SourceOperators.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/WithContextSpec.scala b/docs/src/test/scala/docs/stream/operators/WithContextSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/WithContextSpec.scala
rename to docs/src/test/scala/docs/stream/operators/WithContextSpec.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/converters/StreamConvertersToJava.scala b/docs/src/test/scala/docs/stream/operators/converters/StreamConvertersToJava.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/converters/StreamConvertersToJava.scala
rename to docs/src/test/scala/docs/stream/operators/converters/StreamConvertersToJava.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala b/docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala
rename to docs/src/test/scala/docs/stream/operators/converters/ToFromJavaIOStreams.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/flow/FromSinkAndSource.scala b/docs/src/test/scala/docs/stream/operators/flow/FromSinkAndSource.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/flow/FromSinkAndSource.scala
rename to docs/src/test/scala/docs/stream/operators/flow/FromSinkAndSource.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/flow/FutureFlow.scala b/docs/src/test/scala/docs/stream/operators/flow/FutureFlow.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/flow/FutureFlow.scala
rename to docs/src/test/scala/docs/stream/operators/flow/FutureFlow.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/flow/Lazy.scala b/docs/src/test/scala/docs/stream/operators/flow/Lazy.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/flow/Lazy.scala
rename to docs/src/test/scala/docs/stream/operators/flow/Lazy.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala b/docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala
rename to docs/src/test/scala/docs/stream/operators/flow/StatefulMap.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMapConcat.scala b/docs/src/test/scala/docs/stream/operators/flow/StatefulMapConcat.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/flow/StatefulMapConcat.scala
rename to docs/src/test/scala/docs/stream/operators/flow/StatefulMapConcat.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sink/AsPublisher.scala b/docs/src/test/scala/docs/stream/operators/sink/AsPublisher.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sink/AsPublisher.scala
rename to docs/src/test/scala/docs/stream/operators/sink/AsPublisher.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sink/Cancelled.scala b/docs/src/test/scala/docs/stream/operators/sink/Cancelled.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sink/Cancelled.scala
rename to docs/src/test/scala/docs/stream/operators/sink/Cancelled.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sink/Collection.scala b/docs/src/test/scala/docs/stream/operators/sink/Collection.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sink/Collection.scala
rename to docs/src/test/scala/docs/stream/operators/sink/Collection.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sink/Fold.scala b/docs/src/test/scala/docs/stream/operators/sink/Fold.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sink/Fold.scala
rename to docs/src/test/scala/docs/stream/operators/sink/Fold.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sink/HeadOption.scala b/docs/src/test/scala/docs/stream/operators/sink/HeadOption.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sink/HeadOption.scala
rename to docs/src/test/scala/docs/stream/operators/sink/HeadOption.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sink/Ignore.scala b/docs/src/test/scala/docs/stream/operators/sink/Ignore.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sink/Ignore.scala
rename to docs/src/test/scala/docs/stream/operators/sink/Ignore.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sink/Lazy.scala b/docs/src/test/scala/docs/stream/operators/sink/Lazy.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sink/Lazy.scala
rename to docs/src/test/scala/docs/stream/operators/sink/Lazy.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/Combine.scala b/docs/src/test/scala/docs/stream/operators/source/Combine.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/Combine.scala
rename to docs/src/test/scala/docs/stream/operators/source/Combine.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/From.scala b/docs/src/test/scala/docs/stream/operators/source/From.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/From.scala
rename to docs/src/test/scala/docs/stream/operators/source/From.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/FutureSource.scala b/docs/src/test/scala/docs/stream/operators/source/FutureSource.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/FutureSource.scala
rename to docs/src/test/scala/docs/stream/operators/source/FutureSource.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/Lazy.scala b/docs/src/test/scala/docs/stream/operators/source/Lazy.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/Lazy.scala
rename to docs/src/test/scala/docs/stream/operators/source/Lazy.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/Restart.scala b/docs/src/test/scala/docs/stream/operators/source/Restart.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/Restart.scala
rename to docs/src/test/scala/docs/stream/operators/source/Restart.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/Tick.scala b/docs/src/test/scala/docs/stream/operators/source/Tick.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/Tick.scala
rename to docs/src/test/scala/docs/stream/operators/source/Tick.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/Unfold.scala b/docs/src/test/scala/docs/stream/operators/source/Unfold.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/Unfold.scala
rename to docs/src/test/scala/docs/stream/operators/source/Unfold.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/UnfoldAsync.scala b/docs/src/test/scala/docs/stream/operators/source/UnfoldAsync.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/UnfoldAsync.scala
rename to docs/src/test/scala/docs/stream/operators/source/UnfoldAsync.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/UnfoldResource.scala b/docs/src/test/scala/docs/stream/operators/source/UnfoldResource.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/UnfoldResource.scala
rename to docs/src/test/scala/docs/stream/operators/source/UnfoldResource.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/UnfoldResourceAsync.scala b/docs/src/test/scala/docs/stream/operators/source/UnfoldResourceAsync.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/UnfoldResourceAsync.scala
rename to docs/src/test/scala/docs/stream/operators/source/UnfoldResourceAsync.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/source/Zip.scala b/docs/src/test/scala/docs/stream/operators/source/Zip.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/source/Zip.scala
rename to docs/src/test/scala/docs/stream/operators/source/Zip.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Collect.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/CompletionTimeout.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/CompletionTimeout.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/CompletionTimeout.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/CompletionTimeout.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Conflate.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Conflate.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Conflate.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Conflate.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Drop.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Drop.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Drop.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Drop.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/ExtrapolateAndExpand.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/ExtrapolateAndExpand.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/ExtrapolateAndExpand.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/ExtrapolateAndExpand.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Filter.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Filter.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Filter.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Filter.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapConcat.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapConcat.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapConcat.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapConcat.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapMerge.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapMerge.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapMerge.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/FlatMapMerge.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Fold.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Fold.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Fold.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Fold.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/FoldAsync.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/FoldAsync.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/FoldAsync.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/FoldAsync.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/GroupBy.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/GroupBy.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/GroupBy.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/GroupBy.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Grouped.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Grouped.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Grouped.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Grouped.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/GroupedWeighted.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/GroupedWeighted.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/GroupedWeighted.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/GroupedWeighted.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Intersperse.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Intersperse.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Intersperse.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Intersperse.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Limit.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Limit.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Limit.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Limit.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/LimitWeighted.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/LimitWeighted.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/LimitWeighted.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/LimitWeighted.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Log.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Log.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Log.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Log.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/LogWithMarker.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/LogWithMarker.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/LogWithMarker.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/LogWithMarker.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapAsyncs.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/MapAsyncs.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapAsyncs.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/MapAsyncs.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapConcat.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/MapConcat.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapConcat.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/MapConcat.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapError.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/MapError.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MapError.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/MapError.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MergeLatest.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/MergeLatest.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/MergeLatest.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/MergeLatest.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Monitor.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Monitor.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Monitor.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Monitor.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Reduce.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Reduce.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Reduce.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Reduce.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Scan.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Scan.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Scan.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Scan.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/ScanAsync.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/ScanAsync.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/ScanAsync.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/ScanAsync.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Sliding.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Sliding.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Sliding.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Sliding.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Split.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Split.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Split.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Split.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Take.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Take.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Take.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Take.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/TakeWhile.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/TakeWhile.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/TakeWhile.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/TakeWhile.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Throttle.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Throttle.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Throttle.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Throttle.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Watch.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/Watch.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Watch.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/Watch.scala
diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/WatchTermination.scala b/docs/src/test/scala/docs/stream/operators/sourceorflow/WatchTermination.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/stream/operators/sourceorflow/WatchTermination.scala
rename to docs/src/test/scala/docs/stream/operators/sourceorflow/WatchTermination.scala
diff --git a/akka-docs/src/test/scala/docs/testkit/ParentChildSpec.scala b/docs/src/test/scala/docs/testkit/ParentChildSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/testkit/ParentChildSpec.scala
rename to docs/src/test/scala/docs/testkit/ParentChildSpec.scala
diff --git a/akka-docs/src/test/scala/docs/testkit/PlainWordSpec.scala b/docs/src/test/scala/docs/testkit/PlainWordSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/testkit/PlainWordSpec.scala
rename to docs/src/test/scala/docs/testkit/PlainWordSpec.scala
diff --git a/akka-docs/src/test/scala/docs/testkit/TestKitUsageSpec.scala b/docs/src/test/scala/docs/testkit/TestKitUsageSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/testkit/TestKitUsageSpec.scala
rename to docs/src/test/scala/docs/testkit/TestKitUsageSpec.scala
diff --git a/akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala b/docs/src/test/scala/docs/testkit/TestkitDocSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/docs/testkit/TestkitDocSpec.scala
rename to docs/src/test/scala/docs/testkit/TestkitDocSpec.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_1/ActorHierarchyExperiments.scala b/docs/src/test/scala/typed/tutorial_1/ActorHierarchyExperiments.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_1/ActorHierarchyExperiments.scala
rename to docs/src/test/scala/typed/tutorial_1/ActorHierarchyExperiments.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_2/IotApp.scala b/docs/src/test/scala/typed/tutorial_2/IotApp.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_2/IotApp.scala
rename to docs/src/test/scala/typed/tutorial_2/IotApp.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_2/IotSupervisor.scala b/docs/src/test/scala/typed/tutorial_2/IotSupervisor.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_2/IotSupervisor.scala
rename to docs/src/test/scala/typed/tutorial_2/IotSupervisor.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_3/Device.scala b/docs/src/test/scala/typed/tutorial_3/Device.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_3/Device.scala
rename to docs/src/test/scala/typed/tutorial_3/Device.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala b/docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala
rename to docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_3/DeviceSpec.scala b/docs/src/test/scala/typed/tutorial_3/DeviceSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_3/DeviceSpec.scala
rename to docs/src/test/scala/typed/tutorial_3/DeviceSpec.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_4/Device.scala b/docs/src/test/scala/typed/tutorial_4/Device.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_4/Device.scala
rename to docs/src/test/scala/typed/tutorial_4/Device.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_4/DeviceGroup.scala b/docs/src/test/scala/typed/tutorial_4/DeviceGroup.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_4/DeviceGroup.scala
rename to docs/src/test/scala/typed/tutorial_4/DeviceGroup.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_4/DeviceGroupSpec.scala b/docs/src/test/scala/typed/tutorial_4/DeviceGroupSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_4/DeviceGroupSpec.scala
rename to docs/src/test/scala/typed/tutorial_4/DeviceGroupSpec.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_4/DeviceManager.scala b/docs/src/test/scala/typed/tutorial_4/DeviceManager.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_4/DeviceManager.scala
rename to docs/src/test/scala/typed/tutorial_4/DeviceManager.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_4/DeviceManagerSpec.scala b/docs/src/test/scala/typed/tutorial_4/DeviceManagerSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_4/DeviceManagerSpec.scala
rename to docs/src/test/scala/typed/tutorial_4/DeviceManagerSpec.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_4/DeviceSpec.scala b/docs/src/test/scala/typed/tutorial_4/DeviceSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_4/DeviceSpec.scala
rename to docs/src/test/scala/typed/tutorial_4/DeviceSpec.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_5/Device.scala b/docs/src/test/scala/typed/tutorial_5/Device.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_5/Device.scala
rename to docs/src/test/scala/typed/tutorial_5/Device.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroup.scala b/docs/src/test/scala/typed/tutorial_5/DeviceGroup.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_5/DeviceGroup.scala
rename to docs/src/test/scala/typed/tutorial_5/DeviceGroup.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala b/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala
rename to docs/src/test/scala/typed/tutorial_5/DeviceGroupQuery.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala b/docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala
rename to docs/src/test/scala/typed/tutorial_5/DeviceGroupQuerySpec.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupSpec.scala b/docs/src/test/scala/typed/tutorial_5/DeviceGroupSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_5/DeviceGroupSpec.scala
rename to docs/src/test/scala/typed/tutorial_5/DeviceGroupSpec.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_5/DeviceManager.scala b/docs/src/test/scala/typed/tutorial_5/DeviceManager.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_5/DeviceManager.scala
rename to docs/src/test/scala/typed/tutorial_5/DeviceManager.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_5/DeviceManagerSpec.scala b/docs/src/test/scala/typed/tutorial_5/DeviceManagerSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_5/DeviceManagerSpec.scala
rename to docs/src/test/scala/typed/tutorial_5/DeviceManagerSpec.scala
diff --git a/akka-docs/src/test/scala/typed/tutorial_5/DeviceSpec.scala b/docs/src/test/scala/typed/tutorial_5/DeviceSpec.scala
similarity index 100%
rename from akka-docs/src/test/scala/typed/tutorial_5/DeviceSpec.scala
rename to docs/src/test/scala/typed/tutorial_5/DeviceSpec.scala
diff --git a/project/AkkaBuild.scala b/project/AkkaBuild.scala
index 3e44381ca6..2b2ea3b5c0 100644
--- a/project/AkkaBuild.scala
+++ b/project/AkkaBuild.scala
@@ -163,20 +163,20 @@ object AkkaBuild {
ThisBuild / ivyLoggingLevel := UpdateLogging.Quiet,
licenses := Seq(("Apache-2.0", url("https://www.apache.org/licenses/LICENSE-2.0.html"))),
homepage := Some(url("https://akka.io/")),
- description := "Akka is a toolkit for building highly concurrent, distributed, and resilient message-driven applications for Java and Scala.",
+ description := "Apache Pekko is a toolkit for building highly concurrent, distributed, and resilient message-driven applications for Java and Scala.",
scmInfo := Some(
ScmInfo(
- url("https://github.com/akka/akka"),
- "scm:git:https://github.com/akka/akka.git",
- "scm:git:git@github.com:akka/akka.git")),
+ url("https://github.com/apache/incubator-pekko"),
+ "scm:git:https://github.com/apache/incubator-pekko.git",
+ "scm:git:git@github.com:apache/incubator-pekko.git")),
apiURL := Some(url(s"https://doc.akka.io/api/akka/${version.value}")),
initialCommands :=
"""|import language.postfixOps
- |import akka.actor._
+ |import org.apache.pekko.actor._
|import scala.concurrent._
|import com.typesafe.config.ConfigFactory
|import scala.concurrent.duration._
- |import akka.util.Timeout
+ |import org.apache.pekko.util.Timeout
|var config = ConfigFactory.parseString("akka.stdout-loglevel=INFO,akka.loglevel=DEBUG,pinned{type=PinnedDispatcher,executor=thread-pool-executor,throughput=1000}")
|var remoteConfig = ConfigFactory.parseString("akka.remote.classic.netty{port=0,use-dispatcher-for-io=akka.actor.default-dispatcher,execution-pool-size=0},akka.actor.provider=remote").withFallback(config)
|var system: ActorSystem = null
@@ -286,10 +286,10 @@ object AkkaBuild {
UsefulTask("", "sortImports", "Sort the imports"),
UsefulTask("", "mimaReportBinaryIssues ", "Check binary issues"),
UsefulTask("", "validatePullRequest ", "Validate pull request"),
- UsefulTask("", "akka-docs/paradox", "Build documentation"),
- UsefulTask("", "akka-docs/paradoxBrowse", "Browse the generated documentation"),
+ UsefulTask("", "docs/paradox", "Build documentation"),
+ UsefulTask("", "docs/paradoxBrowse", "Browse the generated documentation"),
UsefulTask("", "tips:", "prefix commands with `+` to run against cross Scala versions."),
- UsefulTask("", "Contributing guide:", "https://github.com/akka/akka/blob/main/CONTRIBUTING.md")))
+ UsefulTask("", "Contributing guide:", "https://github.com/apache/incubator-pekko/blob/main/CONTRIBUTING.md")))
}
private def optionalDir(path: String): Option[File] =
diff --git a/project/AkkaDisciplinePlugin.scala b/project/AkkaDisciplinePlugin.scala
index d7d5fb729f..336ed93f9d 100644
--- a/project/AkkaDisciplinePlugin.scala
+++ b/project/AkkaDisciplinePlugin.scala
@@ -38,7 +38,7 @@ object AkkaDisciplinePlugin extends AutoPlugin {
"akka-persistence-typed",
// references to deprecated PARSER fields in generated message formats?
"akka-persistence-query",
- "akka-docs",
+ "docs",
// use varargs of `Graph` in alsoTo and etc operators
"akka-stream-tests")
@@ -54,7 +54,7 @@ object AkkaDisciplinePlugin extends AutoPlugin {
"akka-cluster-sharding",
"akka-cluster-sharding-typed",
"akka-distributed-data",
- "akka-docs",
+ "docs",
"akka-persistence",
"akka-persistence-tck",
"akka-persistence-typed",
diff --git a/scripts/link-validator.conf b/scripts/link-validator.conf
index 7bf765718a..df938c521f 100644
--- a/scripts/link-validator.conf
+++ b/scripts/link-validator.conf
@@ -1,6 +1,6 @@
// config for https://github.com/ennru/site-link-validator/
site-link-validator {
- root-dir = "akka-docs/target/paradox/site/main/"
+ root-dir = "docs/target/paradox/site/main/"
# relative to `root-dir`
start-file = "index.html"