From 93e5e6050649afe2b035ec98fb68b5636a421574 Mon Sep 17 00:00:00 2001 From: Richard Summerhayes Date: Mon, 25 Nov 2024 15:24:48 -0800 Subject: [PATCH 01/16] Add pendo back to the docs site --- .../js/vendor/js.cookie.min.js | 2 + .../partials/footer-scripts-supplemental.hbs | 86 ++++++++++++++++++- 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 docs/supplemental_ui/js/vendor/js.cookie.min.js diff --git a/docs/supplemental_ui/js/vendor/js.cookie.min.js b/docs/supplemental_ui/js/vendor/js.cookie.min.js new file mode 100644 index 000000000..90a767223 --- /dev/null +++ b/docs/supplemental_ui/js/vendor/js.cookie.min.js @@ -0,0 +1,2 @@ +/*! js-cookie v3.0.1 | MIT */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t + \ No newline at end of file From 78cddd253282a5b1a10a64652dc133ac836bc951 Mon Sep 17 00:00:00 2001 From: Richard Summerhayes Date: Mon, 25 Nov 2024 15:27:06 -0800 Subject: [PATCH 02/16] doc.akka not docs.akka --- .../partials/footer-scripts-supplemental.hbs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/supplemental_ui/partials/footer-scripts-supplemental.hbs b/docs/supplemental_ui/partials/footer-scripts-supplemental.hbs index dd1341635..3487aabc1 100644 --- a/docs/supplemental_ui/partials/footer-scripts-supplemental.hbs +++ b/docs/supplemental_ui/partials/footer-scripts-supplemental.hbs @@ -12,11 +12,11 @@ switch (hostname) { case "localhost": return "localhost"; - case "docs.akka.dev": + case "doc.akka.dev": return "dev"; - case "docs.akka.st": + case "doc.akka.st": return "staging"; - case "docs.akka.io": + case "doc.akka.io": return "prod"; default: if (hostname.includes("akka.work")) { @@ -32,11 +32,11 @@ switch (hostname) { case "localhost": return "localhost"; - case "docs.akka.dev": + case "doc.akka.dev": return ".akka.dev"; - case "docs.akka.st": + case "doc.akka.st": return ".akka.st"; - case "docs.akka.io": + case "doc.akka.io": return ".akka.io"; default: if (hostname.includes("akka.work")) { From 5b54ff9b2e79cf5583e45aa188dbe23137a8c550 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 14:20:35 +0100 Subject: [PATCH 03/16] docs: akka CLI 3.0.7 (#62) --- Makefile | 2 +- .../reference/pages/cli/akka-cli/akka_local_console.adoc | 2 +- docs/src/modules/reference/pages/release-notes.adoc | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 38433e4da..a21360a34 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ attributes: prepare > "${managed_partials}/attributes.adoc" docs/bin/version.sh | xargs -0 printf ":akka-javasdk-version: %s" \ > "${managed_partials}/attributes.adoc" - echo ":akka-cli-version: 3.0.6" >> "${managed_partials}/attributes.adoc" + echo ":akka-cli-version: 3.0.7" >> "${managed_partials}/attributes.adoc" echo ":akka-cli-min-version: 3.0.4" >> "${managed_partials}/attributes.adoc" # see https://adoptium.net/marketplace/ echo ":java-version: 21" \ diff --git a/docs/src/modules/reference/pages/cli/akka-cli/akka_local_console.adoc b/docs/src/modules/reference/pages/cli/akka-cli/akka_local_console.adoc index 6a4087f5d..cd590cd09 100644 --- a/docs/src/modules/reference/pages/cli/akka-cli/akka_local_console.adoc +++ b/docs/src/modules/reference/pages/cli/akka-cli/akka_local_console.adoc @@ -14,7 +14,7 @@ akka local console [flags] ---- -h, --help help for console - --local-console-image string Override the local console image. (default "gcr.io/kalix-public/akka-local-console:d0ed8e0") + --local-console-image string Override the local console image. (default "gcr.io/kalix-public/akka-local-console:e349ebdc") ---- == Options inherited from parent commands diff --git a/docs/src/modules/reference/pages/release-notes.adoc b/docs/src/modules/reference/pages/release-notes.adoc index 0ea50e466..35cddf42c 100644 --- a/docs/src/modules/reference/pages/release-notes.adoc +++ b/docs/src/modules/reference/pages/release-notes.adoc @@ -12,6 +12,9 @@ Current versions == December 2024 +* Akka CLI 3.0.7 + - Improvements to the Local Console + * https://github.com/akka/akka-sdk/releases/tag/v3.0.1[Akka SDK 3.0.1] - Minor improvements From 8750d29560cddb2c2a1178412ec63f41f6e6871d Mon Sep 17 00:00:00 2001 From: Brent Eritou Date: Fri, 6 Dec 2024 03:26:14 -0500 Subject: [PATCH 04/16] docs: add local console to getting started guide (#58) --- .../ROOT/partials/cli-install-short.adoc | 42 ++++++ .../java/images/hello-world-local-console.png | Bin 0 -> 53937 bytes .../java/pages/author-your-first-service.adoc | 123 ++++++++++++------ .../reference/pages/cli/installation.adoc | 11 +- 4 files changed, 134 insertions(+), 42 deletions(-) create mode 100644 docs/src/modules/ROOT/partials/cli-install-short.adoc create mode 100644 docs/src/modules/java/images/hello-world-local-console.png diff --git a/docs/src/modules/ROOT/partials/cli-install-short.adoc b/docs/src/modules/ROOT/partials/cli-install-short.adoc new file mode 100644 index 000000000..1eed185f0 --- /dev/null +++ b/docs/src/modules/ROOT/partials/cli-install-short.adoc @@ -0,0 +1,42 @@ +Install the Akka CLI: + +NOTE: In case there is any trouble with installing the CLI when following these instructions, please check xref:reference:cli/installation.adoc[]. + +[.tabset] +Linux:: ++ +-- +Download and install the latest version of `akka`: +[source,bash] +.... +curl -sL https://doc.akka.io/install-cli.sh | bash +.... + +-- +macOS:: ++ +-- +The recommended approach to install `akka` on macOS, is using https://brew.sh[brew, window="new"] + +[source,bash] +---- +brew install akka/brew/akka +---- + +-- +Windows:: ++ +-- + +. Download the latest version of `akka` from https://downloads.akka.io/latest/akka_windows_amd64.zip[https://downloads.akka.io/latest/akka_windows_amd64.zip] + +. Extract the zip file and move `akka.exe` to a location on your `%PATH%`. + +-- + +Verify that the Akka CLI has been installed successfully by running the following to list all available commands: + +[source, command window] +---- +akka help +---- diff --git a/docs/src/modules/java/images/hello-world-local-console.png b/docs/src/modules/java/images/hello-world-local-console.png new file mode 100644 index 0000000000000000000000000000000000000000..7d99973409969f03feed9ba5cc8bbffb652ad04f GIT binary patch literal 53937 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 When there are multiple parameters <4> The method must accept all the same names in the same order as in the path expression. -Path parameter can be of types `String`, `int`, `long`, `boolean`, `float`, `double`, `short` and `char` as well -as their `java.lang` class counterparts. - -If you add this code above to `HelloWorldEndpoint.java` and restart the service, you can now curl these commands: +Restart the service and curl these commands: [source, command line] ---- @@ -150,9 +153,9 @@ curl localhost:9000/hello/hello/Bob curl localhost:9000/hello/hello/Bob/30 ---- -=== Request body === +=== Add a request body -To accept an HTTP JSON body, specify a parameter that is a Java record. +Modify the Endpoint to accept an HTTP JSON body using the code shown below: [source,java] .HelloWorldEndpoint.java @@ -164,16 +167,17 @@ include::example$doc-snippets/src/main/java/com/example/api/ExampleEndpoint.java <3> When combining request body with path variables <4> The body must come last in the parameter list -You can now call these commands as well +Restart the service and curl this command: + [source, command line] ---- curl -i -XPOST -H "Content-Type: application/json" localhost:9000/hello/hello -d ' {"age":"30", "name":"Bob"}' ---- -=== Response body === +=== Add a response body -To return response with JSON, the return value can be a record that gets serialized as JSON: +Modify the Endpoint to return a response body using the code shown below: [source,java] .HelloWorldEndpoint.java @@ -182,10 +186,55 @@ include::example$doc-snippets/src/main/java/com/example/api/ExampleEndpoint.java ---- <1> Returning a record that gets serialized as JSON +Restart the service and curl this command: + [source, command line] ---- curl localhost:9000/hello/hello/Bob/30 ---- +== Explore the local console + +The Akka local console is a web-based tool that provides a convenient way to view and interact with your running service. + +=== Install the Akka CLI + +Starting the local console requires using the Akka CLI and Docker. + +include::ROOT:partial$cli-install-short.adoc[] + + +=== Start the local console + +. Start the local console. It will launch a Docker container: ++ +[source,bash] +---- +akka local console + +Pulling local console image, please wait... +---- + +. Once the console is running, you will see a message like this: + ++ +[source,bash] +---- +- helloworld is running at: localhost:9000 +----------------------------------------------------- +(use Ctrl+C to quit) +---- + +. You can then access the local console in your browser at: ++ +http://localhost:3000 + +. Navigate to your service's Endpoint, which will be available http://localhost:3000/services/akka-javasdk-archetype/components/io.akka.api.HelloWorldEndpoint[here, window="new"]. + +image:hello-world-local-console.png[] + +This is a simple Hello World service, so there isn't much to see here yet. However, as you build more complex services, the console will become a more valuable tool for monitoring and debugging. + == Next steps + Now that you have a basic service running, it's time to learn more about building real services in Akka. See the xref:java:shopping-cart-quickstart.adoc[] to build a more realistic application and learn how to deploy it to https://console.akka.io[akka.io]. diff --git a/docs/src/modules/reference/pages/cli/installation.adoc b/docs/src/modules/reference/pages/cli/installation.adoc index 92657ffd3..c0cd65534 100644 --- a/docs/src/modules/reference/pages/cli/installation.adoc +++ b/docs/src/modules/reference/pages/cli/installation.adoc @@ -24,10 +24,10 @@ curl -sL https://doc.akka.io/install-cli.sh | bash -s -- --prefix /tmp && \ You can pass options to the installer script with `-s --` e.g.: -[source,bash] +[source,bash,subs="attributes"] .... -curl -sL https://doc.akka.io/install-cli.sh | bash -s -- --prefix=$HOME --version=2.0.22 --verbose -curl -sL https://doc.akka.io/install-cli.sh | bash -s -- -P $HOME -v 2.0.22 -V +curl -sL https://doc.akka.io/install-cli.sh | bash -s -- --prefix=$HOME --version={akka-cli-version} --verbose +curl -sL https://doc.akka.io/install-cli.sh | bash -s -- -P $HOME -v {akka-cli-version} -V .... -- @@ -59,9 +59,10 @@ curl -sL https://doc.akka.io/install-cli.sh | bash You can pass options to the installer script with `-s --` e.g.: +[source,bash,subs="attributes"] .... -curl -sL https://doc.akka.io/install-cli.sh | bash -s -- --prefix=$HOME --version=2.0.22 --verbose -curl -sL https://doc.akka.io/install-cli.sh | bash -s -- -P $HOME -v 2.0.22 -V +curl -sL https://doc.akka.io/install-cli.sh | bash -s -- --prefix=$HOME --version={akka-cli-version} --verbose +curl -sL https://doc.akka.io/install-cli.sh | bash -s -- -P $HOME -v {akka-cli-version} -V .... -- Windows:: From 150bff30d6a7f448a047e6087ebdffa6f951bf80 Mon Sep 17 00:00:00 2001 From: Enno Runne <458526+ennru@users.noreply.github.com> Date: Fri, 6 Dec 2024 11:58:00 +0100 Subject: [PATCH 05/16] docs: review support pages (#64) --- .../pages/projects/container-registries.adoc | 2 +- docs/src/modules/support/nav.adoc | 6 +++++- docs/src/modules/support/pages/community-forum.adoc | 2 +- docs/src/modules/support/pages/email.adoc | 2 +- .../support/pages/frequently-asked-questions.adoc | 10 +++------- docs/src/modules/support/pages/paid-plans.adoc | 4 ++-- docs/src/modules/support/pages/request-a-demo.adoc | 2 +- docs/src/modules/support/pages/troubleshooting.adoc | 7 ++++--- 8 files changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/src/modules/operations/pages/projects/container-registries.adoc b/docs/src/modules/operations/pages/projects/container-registries.adoc index abcb36d9b..1bc8892a3 100644 --- a/docs/src/modules/operations/pages/projects/container-registries.adoc +++ b/docs/src/modules/operations/pages/projects/container-registries.adoc @@ -9,7 +9,7 @@ Akka provides a built-in _Akka Container Registry (ACR)_ which is pre-configured == Akka Container Registry -The _Akka Container Registry (ACR)_ is available to all Akka users and supported across all Akka regions, allowing for easy, integrated deployments without dependency on external registry connectivity. Authentication is built-in, so deployments, restarts, and scaling operate independently from external networks. +The _Akka Container Registry (ACR)_ is available to all Akka users and supported across all Akka regions, allowing for easy, integrated deployments without dependency on external registry connectivity. Authentication is built-in, so deployments, restarts, and scaling operate independently of external networks. == Prerequisites diff --git a/docs/src/modules/support/nav.adoc b/docs/src/modules/support/nav.adoc index dcb24ff79..6fbe263f9 100644 --- a/docs/src/modules/support/nav.adoc +++ b/docs/src/modules/support/nav.adoc @@ -3,4 +3,8 @@ * xref:support:index.adoc[] ** xref:support:community-forum.adoc[] ** xref:support:email.adoc[] -** xref:support:platform-status.adoc[] \ No newline at end of file +** xref:support:frequently-asked-questions.adoc[] +** xref:support:paid-plans.adoc[] +** xref:support:platform-status.adoc[] +** xref:support:request-a-demo.adoc[] +** xref:support:troubleshooting.adoc[] diff --git a/docs/src/modules/support/pages/community-forum.adoc b/docs/src/modules/support/pages/community-forum.adoc index 1367e91ef..65536a2fe 100644 --- a/docs/src/modules/support/pages/community-forum.adoc +++ b/docs/src/modules/support/pages/community-forum.adoc @@ -12,4 +12,4 @@ include::ROOT:partial$include.adoc[] [sidebar] -https://discuss.akka.io/[Join the Akka Community Forum] \ No newline at end of file +https://discuss.akka.io/c/akka-sdk/43[Join the Akka Community Forum] diff --git a/docs/src/modules/support/pages/email.adoc b/docs/src/modules/support/pages/email.adoc index 9e9e19a61..569d45a1b 100644 --- a/docs/src/modules/support/pages/email.adoc +++ b/docs/src/modules/support/pages/email.adoc @@ -6,4 +6,4 @@ include::ROOT:partial$include.adoc[] Connect with a member of the Akka team for advice and support on your project. -Browse to https://www.akka.io/contact[https://www.akka.io/contact,window="new"], provide the necessary details and submit the form. A team member will reach out to you shortly. \ No newline at end of file +Browse to https://akka.io/contact-us[akka.io/contact-us,window="new"], provide the necessary details and submit the form. A team member will reach out to you shortly. diff --git a/docs/src/modules/support/pages/frequently-asked-questions.adoc b/docs/src/modules/support/pages/frequently-asked-questions.adoc index 616c8b06e..c8f4493e9 100644 --- a/docs/src/modules/support/pages/frequently-asked-questions.adoc +++ b/docs/src/modules/support/pages/frequently-asked-questions.adoc @@ -43,8 +43,8 @@ In one sentence: "High performance and very low latency in an extremely cost-eff In a few more words, with Akka, companies can: -- Provide higher agility to ever changing market demands: Legacy infrastructure and architectures make it very expensive to deliver scalable solutions quickly. Akka let's you circumvent all those technical limitations. -- Increase the speed to innovation: Distributed compute and data have long been purview of expert engineers proficient in narrow scope of programming languages. Akka makes building these kinds of applications straight-forward in languages you already know and use. +- Provide higher agility to ever-changing market demands: Legacy infrastructure and architectures make it very expensive to deliver scalable solutions quickly. Akka lets you circumvent all those technical limitations. +- Increase the speed to innovation: Distributed compute and data have long been purview of expert engineers proficient in narrow scope of programming languages. Akka makes building these kinds of applications straight-forward. - Lower infrastructure costs: Scalable cloud architectures are difficult to operate, require large teams of costly resources and run significant risk of unexpected budget overages. Akka will charge for what you use, not what you might need (when generally available). == What are the benefits for developers? @@ -63,10 +63,6 @@ Yes! Akka is a single globally distributed state model. Teams anywhere in the wo Akka leverages the proven Akka reactive architecture for building stateful, high-performance, business-critical systems, without the developer needing to understand the complexities of Akka itself or distributed systems architecture in general. -== What languages are supported? - -Akka supports Java and Scala. For a detailed overview of supported features see xref:reference:feature-matrix[Feature Matrix] section. - == What are the resource limits of an Akka service? Individual requests and responses, states and events can in general have a payload size up to 12 Mb. @@ -117,7 +113,7 @@ The short answer is no. Please see the documentation on xref:support:paid-plans. === How do I purchase a paid plan? -https://www.akka.io/contact[Contact Lightbend] to purchase a paid plan. See the https://www.akka.io/pricing[pricing page] for purchase options. +https://akka.io/contact-us[Contact Akka] to purchase a paid plan. See the https://akka.io/pricing[pricing page] for purchase options. == What if I have additional questions or want to provide feedback? diff --git a/docs/src/modules/support/pages/paid-plans.adoc b/docs/src/modules/support/pages/paid-plans.adoc index 341829ea2..7d5e7708e 100644 --- a/docs/src/modules/support/pages/paid-plans.adoc +++ b/docs/src/modules/support/pages/paid-plans.adoc @@ -15,7 +15,7 @@ Upgrading to a paid plan offer several benefits: == Upgrading to a paid plan -To upgrade, please https://www.akka.io/contact[contact Akka,window="new"]. +To upgrade, please https://akka.io/contact-us[contact Akka,window="new"]. You will be required to provide: @@ -27,4 +27,4 @@ You will be required to provide: == Billing models -Please see the https://www.akka.io/pricing[Akka Pricing] page for more details on billing models, features and pricing. +Please see the https://akka.io/pricing[Akka Pricing] page for more details on billing models, features and pricing. diff --git a/docs/src/modules/support/pages/request-a-demo.adoc b/docs/src/modules/support/pages/request-a-demo.adoc index c24e30bc4..350b248c4 100644 --- a/docs/src/modules/support/pages/request-a-demo.adoc +++ b/docs/src/modules/support/pages/request-a-demo.adoc @@ -6,4 +6,4 @@ include::ROOT:partial$include.adoc[] We'd love to learn about your requirements, answer your unique questions, and review ways that Akka can help you and your organization. -Browse to https://www.akka.io/contact[https://www.akka.io/contact,window="new"], provide the necessary details and submit the form. A team member will reach out to you shortly. \ No newline at end of file +Browse to https://akka.io/contact-us[akka.io/contact-us,window="new"], provide the necessary details and submit the form. A team member will reach out to you shortly. diff --git a/docs/src/modules/support/pages/troubleshooting.adoc b/docs/src/modules/support/pages/troubleshooting.adoc index 58ef9b9b0..504cf0276 100644 --- a/docs/src/modules/support/pages/troubleshooting.adoc +++ b/docs/src/modules/support/pages/troubleshooting.adoc @@ -22,7 +22,8 @@ NOTE: You can check the version of the Akka CLI you have by running `akka versio When you see the following error: -``` +[source] +---- [ERROR] /path/to/file.proto [0:0]: --akka-grpc_out: protoc-gen-akka-grpc: Plugin output is unparseable: [0.001s][warning][os,container] Duplicate cpuset controllers detected. Picking /sys/fs/cgroup/cpuset, skipping /host/sys/fs/cgroup/cpuset. (...) [INFO] ------------------------------------------------------------------------ @@ -32,7 +33,7 @@ When you see the following error: [INFO] Finished at: 2022-03-07T15:31:49Z [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.6.1:compile (protobuf) on project customer-registry: protoc did not exit cleanly. Review output for more information. -> [Help 1] -``` +---- This problem is caused by JDK17 https://bugs.openjdk.java.net/browse/JDK-8270087[reporting some warnings to `stdout` instead of `stderr`, window="new"]. The easiest way to resolve this is to avoid the situation leading to the warning, or switching to a JDK version without this bug, like JDK11. @@ -67,7 +68,7 @@ The same status message will appear within the System Lifecycle events window. *Options to resolve this issue include:* * Use a public repository -* Supply your xref:operations:projects/container-registries.adoc#_a_private_container_registry[credentials], and validate that they are correct. +* Supply your xref:operations:projects/external-container-registries.adoc[credentials], and validate that they are correct. == How to resolve errors when my deployment cannot start From dc8956c735188942638f70515933568710a7fe62 Mon Sep 17 00:00:00 2001 From: Richard Summerhayes Date: Tue, 10 Dec 2024 10:57:58 -0800 Subject: [PATCH 06/16] remove un-needed environments --- .../partials/footer-scripts-supplemental.hbs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/supplemental_ui/partials/footer-scripts-supplemental.hbs b/docs/supplemental_ui/partials/footer-scripts-supplemental.hbs index 3487aabc1..47ea07cd6 100644 --- a/docs/supplemental_ui/partials/footer-scripts-supplemental.hbs +++ b/docs/supplemental_ui/partials/footer-scripts-supplemental.hbs @@ -12,10 +12,6 @@ switch (hostname) { case "localhost": return "localhost"; - case "doc.akka.dev": - return "dev"; - case "doc.akka.st": - return "staging"; case "doc.akka.io": return "prod"; default: @@ -32,10 +28,6 @@ switch (hostname) { case "localhost": return "localhost"; - case "doc.akka.dev": - return ".akka.dev"; - case "doc.akka.st": - return ".akka.st"; case "doc.akka.io": return ".akka.io"; default: From ed4bded14ed0aa4eb4b253951d0739cfdcacc61d Mon Sep 17 00:00:00 2001 From: Francisco Lopez-Sancho Date: Wed, 11 Dec 2024 20:23:04 +0800 Subject: [PATCH 07/16] chore: removing it profile (#63) * chore: removing 'it' profile ci, parent pom and moving samples 'it' to 'test' * renaming '*IntegrationTest' to * updating docs and updating class names (updating file names wan't enough) * adding missing failsafe plugin * Update akka-javasdk-maven/akka-javasdk-parent/pom.xml Co-authored-by: Renato Cavalcanti * Update akka-javasdk-maven/akka-javasdk-parent/pom.xml Co-authored-by: Renato Cavalcanti * Update docs/src/modules/java/pages/event-sourced-entities.adoc Co-authored-by: Renato Cavalcanti * Update docs/src/modules/java/pages/key-value-entities.adoc Co-authored-by: Renato Cavalcanti * Update .github/workflows/ci.yml Co-authored-by: Renato Cavalcanti * docs: add local console to getting started guide (#58) * docs: review support pages (#64) * addressing comments .+ back to IntegrationTest suffix * Revert "docs: review support pages (#64)" This reverts commit 493648d97920299d78957c95539d39650a6b2fdf. * Revert "docs: add local console to getting started guide (#58)" This reverts commit 29311bf2064ee9a18198d0f498f93634b50e713a. * fixing import * removing snapshot version used when testing * renaming class --------- Co-authored-by: Renato Cavalcanti Co-authored-by: Brent Eritou Co-authored-by: Enno Runne <458526+ennru@users.noreply.github.com> --- .github/workflows/ci.yml | 4 +- .../META-INF/maven/archetype-metadata.xml | 2 +- .../IntegrationTest.java | 0 .../akka-javasdk-parent/pom.xml | 57 ++++++++++++------- .../modules/java/pages/access-control.adoc | 4 +- .../modules/java/pages/auth-with-jwts.adoc | 4 +- .../java/pages/consuming-producing.adoc | 20 +++---- .../java/pages/event-sourced-entities.adoc | 7 +-- .../java/pages/key-value-entities.adoc | 6 +- .../pages/setup-and-dependency-injection.adoc | 4 +- docs/src/modules/java/pages/views.adoc | 4 +- .../registry/UserCreationIntegrationTest.java | 0 .../{it => test}/resources/application.conf | 0 .../java/com/example/MyIntegrationTest.java | 0 .../acl/UserEndpointIntegrationTest.java | 0 .../com/example/jwt/JwtIntegrationTest.java | 0 .../hellojwt/api/HelloJwtIntegrationTest.java | 0 .../event-sourced-counter-brokers/README.md | 2 +- .../application/CounterIntegrationTest.java | 0 .../CounterWithRealKafkaIntegrationTest.java | 1 - .../CounterWithRealPubSubIntegrationTest.java | 1 - .../customer/api/CustomerIntegrationTest.java | 0 .../api/CustomerRegistryIntegrationTest.java | 0 .../CustomersByNameViewIntegrationTest.java | 0 .../customer/api/CustomerIntegrationTest.java | 0 .../com/example/CounterIntegrationTest.java | 0 .../customer/CustomerIntegrationTest.java | 0 .../CustomersByCityIntegrationTest.java | 0 .../example/ShoppingCartIntegrationTest.java} | 2 +- .../example/OrderEndpointIntegrationTest.java | 0 .../ShoppingCartIntegrationTest.java} | 2 +- .../com/example/CounterIntegrationTest.java | 0 .../java/com/example/FixedClock.java | 0 .../java/com/example/TestEmailSender.java | 0 .../resources/application.properties | 0 .../com/example/TracingIntegrationTest.java} | 2 +- .../transfer-workflow-compensation/README.md | 4 +- .../TransferWorkflowIntegrationTest.java | 0 .../WalletEntityIntegrationTest.java | 0 .../com/example/wallet/domain/WalletTest.java | 0 samples/transfer-workflow/README.md | 4 +- .../TransferWorkflowIntegrationTest.java | 0 .../store/view/StoreViewIntegrationTest.java | 0 ...inedCustomerOrdersViewIntegrationTest.java | 0 ...stedCustomerOrdersViewIntegrationTest.java | 0 ...uredCustomerOrdersViewIntegrationTest.java | 0 46 files changed, 70 insertions(+), 60 deletions(-) rename akka-javasdk-maven/akka-javasdk-archetype/src/main/resources/archetype-resources/src/{it => test}/java/__packageInPathFormat__/IntegrationTest.java (100%) rename samples/choreography-saga-quickstart/src/{it => test}/java/user/registry/UserCreationIntegrationTest.java (100%) rename samples/choreography-saga-quickstart/src/{it => test}/resources/application.conf (100%) rename samples/doc-snippets/src/{it => test}/java/com/example/MyIntegrationTest.java (100%) rename samples/doc-snippets/src/{it => test}/java/com/example/acl/UserEndpointIntegrationTest.java (100%) rename samples/doc-snippets/src/{it => test}/java/com/example/jwt/JwtIntegrationTest.java (100%) rename samples/endpoint-jwt/src/{it => test}/java/hellojwt/api/HelloJwtIntegrationTest.java (100%) rename samples/event-sourced-counter-brokers/src/{it => test}/java/counter/application/CounterIntegrationTest.java (100%) rename samples/event-sourced-counter-brokers/src/{it => test}/java/counter/application/CounterWithRealKafkaIntegrationTest.java (98%) rename samples/event-sourced-counter-brokers/src/{it => test}/java/counter/application/CounterWithRealPubSubIntegrationTest.java (98%) rename samples/event-sourced-customer-registry-subscriber/src/{it => test}/java/customer/api/CustomerIntegrationTest.java (100%) rename samples/event-sourced-customer-registry-subscriber/src/{it => test}/java/customer/api/CustomerRegistryIntegrationTest.java (100%) rename samples/event-sourced-customer-registry-subscriber/src/{it => test}/java/customer/api/CustomersByNameViewIntegrationTest.java (100%) rename samples/event-sourced-customer-registry/src/{it => test}/java/customer/api/CustomerIntegrationTest.java (100%) rename samples/key-value-counter/src/{it => test}/java/com/example/CounterIntegrationTest.java (100%) rename samples/key-value-customer-registry/src/{it => test}/java/customer/CustomerIntegrationTest.java (100%) rename samples/key-value-customer-registry/src/{it => test}/java/customer/application/CustomersByCityIntegrationTest.java (100%) rename samples/key-value-shopping-cart/src/{it/java/com/example/IntegrationTest.java => test/java/com/example/ShoppingCartIntegrationTest.java} (98%) rename samples/reliable-timers/src/{it => test}/java/com/example/OrderEndpointIntegrationTest.java (100%) rename samples/shopping-cart-quickstart/src/{it/java/shoppingcart/IntegrationTest.java => test/java/shoppingcart/ShoppingCartIntegrationTest.java} (96%) rename samples/spring-dependency-injection/src/{it => test}/java/com/example/CounterIntegrationTest.java (100%) rename samples/spring-dependency-injection/src/{it => test}/java/com/example/FixedClock.java (100%) rename samples/spring-dependency-injection/src/{it => test}/java/com/example/TestEmailSender.java (100%) rename samples/spring-dependency-injection/src/{it => test}/resources/application.properties (100%) rename samples/tracing/src/{it/java/com/example/IntegrationTest.java => test/java/com/example/TracingIntegrationTest.java} (86%) rename samples/transfer-workflow-compensation/src/{it => test}/java/com/example/transfer/TransferWorkflowIntegrationTest.java (100%) rename samples/transfer-workflow-compensation/src/{it => test}/java/com/example/wallet/application/WalletEntityIntegrationTest.java (100%) rename samples/transfer-workflow-compensation/src/{it => test}/java/com/example/wallet/domain/WalletTest.java (100%) rename samples/transfer-workflow/src/{it => test}/java/com/example/transfer/TransferWorkflowIntegrationTest.java (100%) rename samples/view-store/src/{it => test}/java/store/view/StoreViewIntegrationTest.java (100%) rename samples/view-store/src/{it => test}/java/store/view/joined/JoinedCustomerOrdersViewIntegrationTest.java (100%) rename samples/view-store/src/{it => test}/java/store/view/nested/NestedCustomerOrdersViewIntegrationTest.java (100%) rename samples/view-store/src/{it => test}/java/store/view/structured/StructuredCustomerOrdersViewIntegrationTest.java (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d5081ee4b..a5c074b68 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -440,7 +440,7 @@ jobs: fi if [ true == '${{matrix.it}}' ]; then ${PRE_CMD} - KALIX_TESTKIT_DEBUG=true mvn verify -Pit --no-transfer-progress + KALIX_TESTKIT_DEBUG=true mvn integration-test --no-transfer-progress fi - name: ${{ matrix.sample }} rm & test-compile @@ -450,5 +450,5 @@ jobs: export SDK_VERSION=$(cat ~/akka-javasdk-version.txt) cd samples/${DIR} echo "==== Verifying that generated unmanaged sources compile ====" - rm -rf src/main/java src/test/java src/it/java + rm -rf src/main/java src/test/java mvn test-compile --no-transfer-progress diff --git a/akka-javasdk-maven/akka-javasdk-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml b/akka-javasdk-maven/akka-javasdk-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml index 0f2c3e0ee..37a5c24c7 100644 --- a/akka-javasdk-maven/akka-javasdk-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml +++ b/akka-javasdk-maven/akka-javasdk-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml @@ -13,7 +13,7 @@ - src/it/java + src/test/java **/* diff --git a/akka-javasdk-maven/akka-javasdk-archetype/src/main/resources/archetype-resources/src/it/java/__packageInPathFormat__/IntegrationTest.java b/akka-javasdk-maven/akka-javasdk-archetype/src/main/resources/archetype-resources/src/test/java/__packageInPathFormat__/IntegrationTest.java similarity index 100% rename from akka-javasdk-maven/akka-javasdk-archetype/src/main/resources/archetype-resources/src/it/java/__packageInPathFormat__/IntegrationTest.java rename to akka-javasdk-maven/akka-javasdk-archetype/src/main/resources/archetype-resources/src/test/java/__packageInPathFormat__/IntegrationTest.java diff --git a/akka-javasdk-maven/akka-javasdk-parent/pom.xml b/akka-javasdk-maven/akka-javasdk-parent/pom.xml index aea13d67b..088cae285 100644 --- a/akka-javasdk-maven/akka-javasdk-parent/pom.xml +++ b/akka-javasdk-maven/akka-javasdk-parent/pom.xml @@ -73,12 +73,6 @@ - - - ${basedir}/src/main/resources - - - kr.motd.maven @@ -284,7 +278,27 @@ - + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + + + integration-test + + + + **/*IntegrationTest.java + **/*IT.java + **/IT*.java + **/*ITCase.java + + -Dlogback.configurationFile=${logback.configurationFile} -Dakka.javasdk.dev-mode.project-artifact-id=${project.artifactId} + + + + org.apache.maven.plugins maven-deploy-plugin @@ -334,6 +348,11 @@ org.apache.maven.plugins maven-surefire-plugin + + + org.apache.maven.plugins + maven-failsafe-plugin + org.apache.maven.plugins @@ -359,36 +378,30 @@ - it - - org.apache.maven.plugins - maven-failsafe-plugin - ${maven-failsafe-plugin.version} + org.codehaus.gmaven + groovy-maven-plugin + 2.1.1 + integration-test - integration-test - verify + execute - - **/*IntegrationTest - - -Dlogback.configurationFile=${logback.configurationFile} -Dakka.javasdk.dev-mode.project-artifact-id=${project.artifactId} + + log.warn('The 'it' profile is deprecated. It will be removed in future versions. Integration tests only need `mvn integration-test` to run.') + - - ${project.build.outputDirectory} - - + clean-on-missing-descriptor diff --git a/docs/src/modules/java/pages/access-control.adoc b/docs/src/modules/java/pages/access-control.adoc index 45569d03f..47bbe650b 100644 --- a/docs/src/modules/java/pages/access-control.adoc +++ b/docs/src/modules/java/pages/access-control.adoc @@ -225,9 +225,9 @@ ACL rules will be applied whenever a call is made using testkit's `HttpClient`. originating from the internet. You can disable the ACL checks by overriding the `testKitSettings()` method. [source, java, indent=0] -.{sample-base-url}/doc-snippets/src/it/java/com/example/acl/UserEndpointIntegrationTest.java[UserEndpointIntegrationTest.java] +.{sample-base-url}/doc-snippets/src/test/java/com/example/acl/UserEndpointIntegrationTest.java[UserEndpointIntegrationTest.java] ---- -include::example$doc-snippets/src/it/java/com/example/acl/UserEndpointIntegrationTest.java[tag=disable-acl-in-it] +include::example$doc-snippets/src/test/java/com/example/acl/UserEndpointIntegrationTest.java[tag=disable-acl-in-it] ---- Calls made through the `ComponentClient` are internal to the service and therefore no ACL rule is applied. diff --git a/docs/src/modules/java/pages/auth-with-jwts.adoc b/docs/src/modules/java/pages/auth-with-jwts.adoc index a5901e741..d6ad73346 100644 --- a/docs/src/modules/java/pages/auth-with-jwts.adoc +++ b/docs/src/modules/java/pages/auth-with-jwts.adoc @@ -109,9 +109,9 @@ When running locally, by default, a dev key with id `dev` is configured for use. When running integration tests, JWTs will still be enforced but its signature will not be validated, similarly to what is described above for when running locally. Thus, when making calls in the context of integration testing, make sure to inject a proper token with the required claims, as shown below: [source, java, indent=0] -.{sample-base-url}/endpoint-jwt/src/it/java/hellojwt/api/HelloJwtIntegrationTest.java[HelloJwtIntegrationTest.java] +.{sample-base-url}/endpoint-jwt/src/test/java/hellojwt/api/HelloJwtIntegrationTest.java[HelloJwtIntegrationTest.java] ---- -include::example$endpoint-jwt/src/it/java/hellojwt/api/HelloJwtIntegrationTest.java[tag=bearer-token-claims-test] +include::example$endpoint-jwt/src/test/java/hellojwt/api/HelloJwtIntegrationTest.java[tag=bearer-token-claims-test] ---- <1> Use a helper method to create a JWT token with 2 claims: issuer and subject. <2> Inject the bearer token as header with the key `Authorization`. diff --git a/docs/src/modules/java/pages/consuming-producing.adoc b/docs/src/modules/java/pages/consuming-producing.adoc index e1aa74a96..348c70aa1 100644 --- a/docs/src/modules/java/pages/consuming-producing.adoc +++ b/docs/src/modules/java/pages/consuming-producing.adoc @@ -234,9 +234,9 @@ In this example: To test this flow, we will take advantage of the TestKit to be able to push commands into the `event-commands` topic and check what messages are produced to topic `counter-events`. [source,java] -.{sample-base-url}/event-sourced-counter-brokers/src/it/java/counter/application/CounterIntegrationTest.java[CounterIntegrationTest.java] +.{sample-base-url}/event-sourced-counter-brokers/src/test/java/counter/application/CounterIntegrationTest.java[CounterIntegrationTest.java] ---- -include::example$event-sourced-counter-brokers/src/it/java/counter/application/CounterIntegrationTest.java[tags=class;test-topic] +include::example$event-sourced-counter-brokers/src/test/java/counter/application/CounterIntegrationTest.java[tags=class;test-topic] ---- <1> Use the TestKitSupport class. <2> Get a `IncomingMessages` for topic named `counter-commands` and `OutgoingMessages` for `counter-events` from the TestKit. @@ -251,9 +251,9 @@ TIP: In the example above we take advantage of the TestKit to serialize / deseri Before running your test, make sure to configure the TestKit correctly. [source, java] -.{sample-base-url}/event-sourced-counter-brokers/src/it/java/counter/application/CounterIntegrationTest.java[CounterIntegrationTest.java] +.{sample-base-url}/event-sourced-counter-brokers/src/test/java/counter/application/CounterIntegrationTest.java[CounterIntegrationTest.java] ---- -include::example$event-sourced-counter-brokers/src/it/java/counter/application/CounterIntegrationTest.java[tags=eventing-config] +include::example$event-sourced-counter-brokers/src/test/java/counter/application/CounterIntegrationTest.java[tags=eventing-config] ---- <1> Mock incoming messages from the `counter-commands` topic. <2> Mock outgoing messages from the `counter-events` topic. @@ -263,9 +263,9 @@ include::example$event-sourced-counter-brokers/src/it/java/counter/application/C Typically, messages are published with associated metadata. If you want to construct your own `Metadata` to be consumed by a service or make sure the messages published out of your service have specific metadata attached, you can do so using the TestKit, as shown below. [source,java,indent=0] -.{sample-base-url}/event-sourced-counter-brokers/src/it/java/counter/application/CounterIntegrationTest.java[CounterIntegrationTest.java] +.{sample-base-url}/event-sourced-counter-brokers/src/test/java/counter/application/CounterIntegrationTest.java[CounterIntegrationTest.java] ---- -include::example$event-sourced-counter-brokers/src/it/java/counter/application/CounterIntegrationTest.java[tags=test-topic-metadata] +include::example$event-sourced-counter-brokers/src/test/java/counter/application/CounterIntegrationTest.java[tags=test-topic-metadata] ---- <1> Build a `CloudEvent` object with the 3 required attributes, respectively: `id`, `source` and `type`. <2> Add the subject to which the message is related, that is the `counterId`. @@ -286,9 +286,9 @@ As an alternative, you can consider using different test suites which will use i [source,java,indent=0] -.{sample-base-url}/event-sourced-counter-brokers/src/it/java/counter/application/CounterIntegrationTest.java[CounterIntegrationTest.java] +.{sample-base-url}/event-sourced-counter-brokers/src/test/java/counter/application/CounterIntegrationTest.java[CounterIntegrationTest.java] ---- -include::example$event-sourced-counter-brokers/src/it/java/counter/application/CounterIntegrationTest.java[tags=clear-topics] +include::example$event-sourced-counter-brokers/src/test/java/counter/application/CounterIntegrationTest.java[tags=clear-topics] ---- <1> Run this before each test. <2> Clear the topic ignoring any unread messages. @@ -300,9 +300,9 @@ NOTE: Despite the example, you are neither forced to clear all topics nor to do To run an integration test against a real instance of Google PubSub (or its Emulator) or Kafka, use the TestKit settings to override the default eventing support, as shown below: [source,java] -.{sample-base-url}/event-sourced-counter-brokers/src/it/java/counter/application/CounterWithRealKafkaIntegrationTest.java[CounterWithRealKafkaIntegrationTest.java] +.{sample-base-url}/event-sourced-counter-brokers/src/test/java/counter/application/CounterWithRealKafkaIntegrationTest.java[CounterWithRealKafkaIntegrationTest.java] ---- -include::example$event-sourced-counter-brokers/src/it/java/counter/application/CounterWithRealKafkaIntegrationTest.java[tags=kafka] +include::example$event-sourced-counter-brokers/src/test/java/counter/application/CounterWithRealKafkaIntegrationTest.java[tags=kafka] ---- == Multi-region replication diff --git a/docs/src/modules/java/pages/event-sourced-entities.adoc b/docs/src/modules/java/pages/event-sourced-entities.adoc index 4b6cfac38..c03b0964e 100644 --- a/docs/src/modules/java/pages/event-sourced-entities.adoc +++ b/docs/src/modules/java/pages/event-sourced-entities.adoc @@ -229,9 +229,9 @@ For the above example, this class provides access to all the command handlers of The skeleton of an Integration Test is generated for you if you use the archetype to start your Akka service. Let's see what it could look like to test our `ShoppingCartEntity`: [source,java] -.{sample-base-url}/shopping-cart-quickstart/src/it/java/shoppingcart/IntegrationTest.java[IntegrationTest.java] +.{sample-base-url}/shopping-cart-quickstart/src/test/java/shoppingcart/ShoppingCartIntegrationTest.java[ShoppingCartIntegrationTest.java] ---- -include::example$shopping-cart-quickstart/src/it/java/shoppingcart/IntegrationTest.java[tag=sample-it] +include::example$shopping-cart-quickstart/src/test/java/shoppingcart/ShoppingCartIntegrationTest.java[tag=sample-it] ---- <1> Note the test class must extend `TestKitSupport`. <2> A built-in component client is provided to interact with the components. @@ -240,8 +240,7 @@ include::example$shopping-cart-quickstart/src/it/java/shoppingcart/IntegrationTe <5> Request to retrieve current status of the shopping cart. <6> Assert there should only be one item. -NOTE: The integration tests in samples are under a specific project profile `it` and can be run using `mvn verify -Pit`. - +NOTE: The integration tests in samples can be run using `mvn integration-test`. == Exposing entities directly include::partial$component-endpoint.adoc[] diff --git a/docs/src/modules/java/pages/key-value-entities.adoc b/docs/src/modules/java/pages/key-value-entities.adoc index 42ce4a0b7..7991e1e01 100644 --- a/docs/src/modules/java/pages/key-value-entities.adoc +++ b/docs/src/modules/java/pages/key-value-entities.adoc @@ -150,9 +150,9 @@ NOTE: The `KeyValueEntityTestKit` is stateful, and it holds the state of a singl The skeleton of an Integration Test is generated for you if you use the archetype to start your Akka service. Let's see what it could look like to test our Counter Entity: [source,java,indent=0] -.{sample-base-url}/key-value-counter/src/it/java/com/example/CounterIntegrationTest.java[CounterIntegrationTest.java] +.{sample-base-url}/key-value-counter/src/test/java/com/example/CounterIntegrationTest.java[CounterIntegrationTest.java] ---- -include::example$key-value-counter/src/it/java/com/example/CounterIntegrationTest.java[tags=sample-it] +include::example$key-value-counter/src/test/java/com/example/CounterIntegrationTest.java[tags=sample-it] ---- <1> Note the test class must extend `TestKitSupport`. <2> A built-in component client is provided to interact with the components. @@ -160,7 +160,7 @@ include::example$key-value-counter/src/it/java/com/example/CounterIntegrationTes <4> Request to increase the value of counter `bar`. Response should have value `1`. <5> Explicitly request current value of `bar`. It should be `1`. -NOTE: The integration tests in samples are under a specific project profile `it` and can be run using `mvn verify -Pit`. +NOTE: The integration tests in samples can be run using `mvn integration-test`. == Exposing entities directly diff --git a/docs/src/modules/java/pages/setup-and-dependency-injection.adoc b/docs/src/modules/java/pages/setup-and-dependency-injection.adoc index bb1380728..71164739e 100644 --- a/docs/src/modules/java/pages/setup-and-dependency-injection.adoc +++ b/docs/src/modules/java/pages/setup-and-dependency-injection.adoc @@ -113,9 +113,9 @@ The TestKit allows providing a custom `DependencyProvider` through `TestKit.Sett that mock instances of dependencies can be used in tests. [source,java] -.{sample-base-url}/doc-snippets/src/it/java/com/example/MyIntegrationTest.java[MyIntegrationTest.java] +.{sample-base-url}/doc-snippets/src/test/java/com/example/MyIntegrationTest.java[MyIntegrationTest.java] ---- -include::example$doc-snippets/src/it/java/com/example/MyIntegrationTest.java[tag=test-di-provider] +include::example$doc-snippets/src/test/java/com/example/MyIntegrationTest.java[tag=test-di-provider] ---- <1> Implement a test specific `DependencyProvider`. <2> Configure the TestKit to use it. diff --git a/docs/src/modules/java/pages/views.adoc b/docs/src/modules/java/pages/views.adoc index ac9dde53e..f158fa648 100644 --- a/docs/src/modules/java/pages/views.adoc +++ b/docs/src/modules/java/pages/views.adoc @@ -304,9 +304,9 @@ include::example$key-value-customer-registry/src/main/java/customer/application/ An integration test can be implemented as below. [source,java,indent=0] -.{sample-base-url}/key-value-customer-registry/src/it/java/customer/application/CustomersByCityIntegrationTest.java[CustomersByCityIntegrationTest.java] +.{sample-base-url}/key-value-customer-registry/src/test/java/customer/application/CustomersByCityIntegrationTest.java[CustomersByCityIntegrationTest.java] ---- -include::example$key-value-customer-registry/src/it/java/customer/application/CustomersByCityIntegrationTest.java[tag=view-test] +include::example$key-value-customer-registry/src/test/java/customer/application/CustomersByCityIntegrationTest.java[tag=view-test] ---- <1> Mocks incoming messages from the `customer` Key Value Entity. <2> Gets an `IncomingMessages` from the `customer` Key Value Entity. diff --git a/samples/choreography-saga-quickstart/src/it/java/user/registry/UserCreationIntegrationTest.java b/samples/choreography-saga-quickstart/src/test/java/user/registry/UserCreationIntegrationTest.java similarity index 100% rename from samples/choreography-saga-quickstart/src/it/java/user/registry/UserCreationIntegrationTest.java rename to samples/choreography-saga-quickstart/src/test/java/user/registry/UserCreationIntegrationTest.java diff --git a/samples/choreography-saga-quickstart/src/it/resources/application.conf b/samples/choreography-saga-quickstart/src/test/resources/application.conf similarity index 100% rename from samples/choreography-saga-quickstart/src/it/resources/application.conf rename to samples/choreography-saga-quickstart/src/test/resources/application.conf diff --git a/samples/doc-snippets/src/it/java/com/example/MyIntegrationTest.java b/samples/doc-snippets/src/test/java/com/example/MyIntegrationTest.java similarity index 100% rename from samples/doc-snippets/src/it/java/com/example/MyIntegrationTest.java rename to samples/doc-snippets/src/test/java/com/example/MyIntegrationTest.java diff --git a/samples/doc-snippets/src/it/java/com/example/acl/UserEndpointIntegrationTest.java b/samples/doc-snippets/src/test/java/com/example/acl/UserEndpointIntegrationTest.java similarity index 100% rename from samples/doc-snippets/src/it/java/com/example/acl/UserEndpointIntegrationTest.java rename to samples/doc-snippets/src/test/java/com/example/acl/UserEndpointIntegrationTest.java diff --git a/samples/doc-snippets/src/it/java/com/example/jwt/JwtIntegrationTest.java b/samples/doc-snippets/src/test/java/com/example/jwt/JwtIntegrationTest.java similarity index 100% rename from samples/doc-snippets/src/it/java/com/example/jwt/JwtIntegrationTest.java rename to samples/doc-snippets/src/test/java/com/example/jwt/JwtIntegrationTest.java diff --git a/samples/endpoint-jwt/src/it/java/hellojwt/api/HelloJwtIntegrationTest.java b/samples/endpoint-jwt/src/test/java/hellojwt/api/HelloJwtIntegrationTest.java similarity index 100% rename from samples/endpoint-jwt/src/it/java/hellojwt/api/HelloJwtIntegrationTest.java rename to samples/endpoint-jwt/src/test/java/hellojwt/api/HelloJwtIntegrationTest.java diff --git a/samples/event-sourced-counter-brokers/README.md b/samples/event-sourced-counter-brokers/README.md index 3d9be0888..6c5b88fd8 100644 --- a/samples/event-sourced-counter-brokers/README.md +++ b/samples/event-sourced-counter-brokers/README.md @@ -102,5 +102,5 @@ docker-compose up Then run: ```shell -mvn verify -Pit +mvn integration-test ``` diff --git a/samples/event-sourced-counter-brokers/src/it/java/counter/application/CounterIntegrationTest.java b/samples/event-sourced-counter-brokers/src/test/java/counter/application/CounterIntegrationTest.java similarity index 100% rename from samples/event-sourced-counter-brokers/src/it/java/counter/application/CounterIntegrationTest.java rename to samples/event-sourced-counter-brokers/src/test/java/counter/application/CounterIntegrationTest.java diff --git a/samples/event-sourced-counter-brokers/src/it/java/counter/application/CounterWithRealKafkaIntegrationTest.java b/samples/event-sourced-counter-brokers/src/test/java/counter/application/CounterWithRealKafkaIntegrationTest.java similarity index 98% rename from samples/event-sourced-counter-brokers/src/it/java/counter/application/CounterWithRealKafkaIntegrationTest.java rename to samples/event-sourced-counter-brokers/src/test/java/counter/application/CounterWithRealKafkaIntegrationTest.java index a09f3e13e..c68fc9b56 100644 --- a/samples/event-sourced-counter-brokers/src/it/java/counter/application/CounterWithRealKafkaIntegrationTest.java +++ b/samples/event-sourced-counter-brokers/src/test/java/counter/application/CounterWithRealKafkaIntegrationTest.java @@ -11,7 +11,6 @@ import org.apache.kafka.common.serialization.ByteArrayDeserializer; import org.apache.kafka.common.serialization.StringDeserializer; import org.awaitility.Awaitility; -import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Test; import java.nio.charset.StandardCharsets; diff --git a/samples/event-sourced-counter-brokers/src/it/java/counter/application/CounterWithRealPubSubIntegrationTest.java b/samples/event-sourced-counter-brokers/src/test/java/counter/application/CounterWithRealPubSubIntegrationTest.java similarity index 98% rename from samples/event-sourced-counter-brokers/src/it/java/counter/application/CounterWithRealPubSubIntegrationTest.java rename to samples/event-sourced-counter-brokers/src/test/java/counter/application/CounterWithRealPubSubIntegrationTest.java index 9880e3865..fad641511 100644 --- a/samples/event-sourced-counter-brokers/src/it/java/counter/application/CounterWithRealPubSubIntegrationTest.java +++ b/samples/event-sourced-counter-brokers/src/test/java/counter/application/CounterWithRealPubSubIntegrationTest.java @@ -2,7 +2,6 @@ import akka.http.javadsl.model.ContentTypes; import akka.http.javadsl.model.StatusCodes; -import akka.javasdk.http.HttpClient; import akka.javasdk.testkit.TestKitSupport; import akka.javasdk.testkit.TestKit; import org.awaitility.Awaitility; diff --git a/samples/event-sourced-customer-registry-subscriber/src/it/java/customer/api/CustomerIntegrationTest.java b/samples/event-sourced-customer-registry-subscriber/src/test/java/customer/api/CustomerIntegrationTest.java similarity index 100% rename from samples/event-sourced-customer-registry-subscriber/src/it/java/customer/api/CustomerIntegrationTest.java rename to samples/event-sourced-customer-registry-subscriber/src/test/java/customer/api/CustomerIntegrationTest.java diff --git a/samples/event-sourced-customer-registry-subscriber/src/it/java/customer/api/CustomerRegistryIntegrationTest.java b/samples/event-sourced-customer-registry-subscriber/src/test/java/customer/api/CustomerRegistryIntegrationTest.java similarity index 100% rename from samples/event-sourced-customer-registry-subscriber/src/it/java/customer/api/CustomerRegistryIntegrationTest.java rename to samples/event-sourced-customer-registry-subscriber/src/test/java/customer/api/CustomerRegistryIntegrationTest.java diff --git a/samples/event-sourced-customer-registry-subscriber/src/it/java/customer/api/CustomersByNameViewIntegrationTest.java b/samples/event-sourced-customer-registry-subscriber/src/test/java/customer/api/CustomersByNameViewIntegrationTest.java similarity index 100% rename from samples/event-sourced-customer-registry-subscriber/src/it/java/customer/api/CustomersByNameViewIntegrationTest.java rename to samples/event-sourced-customer-registry-subscriber/src/test/java/customer/api/CustomersByNameViewIntegrationTest.java diff --git a/samples/event-sourced-customer-registry/src/it/java/customer/api/CustomerIntegrationTest.java b/samples/event-sourced-customer-registry/src/test/java/customer/api/CustomerIntegrationTest.java similarity index 100% rename from samples/event-sourced-customer-registry/src/it/java/customer/api/CustomerIntegrationTest.java rename to samples/event-sourced-customer-registry/src/test/java/customer/api/CustomerIntegrationTest.java diff --git a/samples/key-value-counter/src/it/java/com/example/CounterIntegrationTest.java b/samples/key-value-counter/src/test/java/com/example/CounterIntegrationTest.java similarity index 100% rename from samples/key-value-counter/src/it/java/com/example/CounterIntegrationTest.java rename to samples/key-value-counter/src/test/java/com/example/CounterIntegrationTest.java diff --git a/samples/key-value-customer-registry/src/it/java/customer/CustomerIntegrationTest.java b/samples/key-value-customer-registry/src/test/java/customer/CustomerIntegrationTest.java similarity index 100% rename from samples/key-value-customer-registry/src/it/java/customer/CustomerIntegrationTest.java rename to samples/key-value-customer-registry/src/test/java/customer/CustomerIntegrationTest.java diff --git a/samples/key-value-customer-registry/src/it/java/customer/application/CustomersByCityIntegrationTest.java b/samples/key-value-customer-registry/src/test/java/customer/application/CustomersByCityIntegrationTest.java similarity index 100% rename from samples/key-value-customer-registry/src/it/java/customer/application/CustomersByCityIntegrationTest.java rename to samples/key-value-customer-registry/src/test/java/customer/application/CustomersByCityIntegrationTest.java diff --git a/samples/key-value-shopping-cart/src/it/java/com/example/IntegrationTest.java b/samples/key-value-shopping-cart/src/test/java/com/example/ShoppingCartIntegrationTest.java similarity index 98% rename from samples/key-value-shopping-cart/src/it/java/com/example/IntegrationTest.java rename to samples/key-value-shopping-cart/src/test/java/com/example/ShoppingCartIntegrationTest.java index c8932a36b..ad6a7a5c8 100644 --- a/samples/key-value-shopping-cart/src/it/java/com/example/IntegrationTest.java +++ b/samples/key-value-shopping-cart/src/test/java/com/example/ShoppingCartIntegrationTest.java @@ -15,7 +15,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; -public class IntegrationTest extends TestKitSupport { +public class ShoppingCartIntegrationTest extends TestKitSupport { private Duration timeout = Duration.of(5, SECONDS); diff --git a/samples/reliable-timers/src/it/java/com/example/OrderEndpointIntegrationTest.java b/samples/reliable-timers/src/test/java/com/example/OrderEndpointIntegrationTest.java similarity index 100% rename from samples/reliable-timers/src/it/java/com/example/OrderEndpointIntegrationTest.java rename to samples/reliable-timers/src/test/java/com/example/OrderEndpointIntegrationTest.java diff --git a/samples/shopping-cart-quickstart/src/it/java/shoppingcart/IntegrationTest.java b/samples/shopping-cart-quickstart/src/test/java/shoppingcart/ShoppingCartIntegrationTest.java similarity index 96% rename from samples/shopping-cart-quickstart/src/it/java/shoppingcart/IntegrationTest.java rename to samples/shopping-cart-quickstart/src/test/java/shoppingcart/ShoppingCartIntegrationTest.java index e5cdd2ab5..fdc5b43e1 100644 --- a/samples/shopping-cart-quickstart/src/it/java/shoppingcart/IntegrationTest.java +++ b/samples/shopping-cart-quickstart/src/test/java/shoppingcart/ShoppingCartIntegrationTest.java @@ -8,7 +8,7 @@ import shoppingcart.domain.ShoppingCart.LineItem; // tag::sample-it[] -public class IntegrationTest extends TestKitSupport { // <1> +public class ShoppingCartIntegrationTest extends TestKitSupport { // <1> @Test public void createAndManageCart() { diff --git a/samples/spring-dependency-injection/src/it/java/com/example/CounterIntegrationTest.java b/samples/spring-dependency-injection/src/test/java/com/example/CounterIntegrationTest.java similarity index 100% rename from samples/spring-dependency-injection/src/it/java/com/example/CounterIntegrationTest.java rename to samples/spring-dependency-injection/src/test/java/com/example/CounterIntegrationTest.java diff --git a/samples/spring-dependency-injection/src/it/java/com/example/FixedClock.java b/samples/spring-dependency-injection/src/test/java/com/example/FixedClock.java similarity index 100% rename from samples/spring-dependency-injection/src/it/java/com/example/FixedClock.java rename to samples/spring-dependency-injection/src/test/java/com/example/FixedClock.java diff --git a/samples/spring-dependency-injection/src/it/java/com/example/TestEmailSender.java b/samples/spring-dependency-injection/src/test/java/com/example/TestEmailSender.java similarity index 100% rename from samples/spring-dependency-injection/src/it/java/com/example/TestEmailSender.java rename to samples/spring-dependency-injection/src/test/java/com/example/TestEmailSender.java diff --git a/samples/spring-dependency-injection/src/it/resources/application.properties b/samples/spring-dependency-injection/src/test/resources/application.properties similarity index 100% rename from samples/spring-dependency-injection/src/it/resources/application.properties rename to samples/spring-dependency-injection/src/test/resources/application.properties diff --git a/samples/tracing/src/it/java/com/example/IntegrationTest.java b/samples/tracing/src/test/java/com/example/TracingIntegrationTest.java similarity index 86% rename from samples/tracing/src/it/java/com/example/IntegrationTest.java rename to samples/tracing/src/test/java/com/example/TracingIntegrationTest.java index 77a1dede0..0061c3c27 100644 --- a/samples/tracing/src/it/java/com/example/IntegrationTest.java +++ b/samples/tracing/src/test/java/com/example/TracingIntegrationTest.java @@ -8,7 +8,7 @@ import static java.time.temporal.ChronoUnit.SECONDS; -public class IntegrationTest extends TestKitSupport { +public class TracingIntegrationTest extends TestKitSupport { private Duration timeout = Duration.of(5, SECONDS); diff --git a/samples/transfer-workflow-compensation/README.md b/samples/transfer-workflow-compensation/README.md index 2481cd05e..3a32936ea 100644 --- a/samples/transfer-workflow-compensation/README.md +++ b/samples/transfer-workflow-compensation/README.md @@ -101,10 +101,10 @@ curl http://localhost:9000/transfer/1 ## Run integration tests -To run the integration tests located in `src/it/java`: +To run the integration tests located in `src/test/java`: ```shell -mvn verify -Pit +mvn integration-test ``` ## Troubleshooting diff --git a/samples/transfer-workflow-compensation/src/it/java/com/example/transfer/TransferWorkflowIntegrationTest.java b/samples/transfer-workflow-compensation/src/test/java/com/example/transfer/TransferWorkflowIntegrationTest.java similarity index 100% rename from samples/transfer-workflow-compensation/src/it/java/com/example/transfer/TransferWorkflowIntegrationTest.java rename to samples/transfer-workflow-compensation/src/test/java/com/example/transfer/TransferWorkflowIntegrationTest.java diff --git a/samples/transfer-workflow-compensation/src/it/java/com/example/wallet/application/WalletEntityIntegrationTest.java b/samples/transfer-workflow-compensation/src/test/java/com/example/wallet/application/WalletEntityIntegrationTest.java similarity index 100% rename from samples/transfer-workflow-compensation/src/it/java/com/example/wallet/application/WalletEntityIntegrationTest.java rename to samples/transfer-workflow-compensation/src/test/java/com/example/wallet/application/WalletEntityIntegrationTest.java diff --git a/samples/transfer-workflow-compensation/src/it/java/com/example/wallet/domain/WalletTest.java b/samples/transfer-workflow-compensation/src/test/java/com/example/wallet/domain/WalletTest.java similarity index 100% rename from samples/transfer-workflow-compensation/src/it/java/com/example/wallet/domain/WalletTest.java rename to samples/transfer-workflow-compensation/src/test/java/com/example/wallet/domain/WalletTest.java diff --git a/samples/transfer-workflow/README.md b/samples/transfer-workflow/README.md index d6d1ca87f..cfcc898fe 100644 --- a/samples/transfer-workflow/README.md +++ b/samples/transfer-workflow/README.md @@ -103,10 +103,10 @@ curl http://localhost:9000/transfer/1 ## Run integration tests -To run the integration tests located in `src/it/java`: +To run the integration tests located in `src/test/java`: ```shell -mvn verify -Pit +mvn integration-test ``` ## Troubleshooting diff --git a/samples/transfer-workflow/src/it/java/com/example/transfer/TransferWorkflowIntegrationTest.java b/samples/transfer-workflow/src/test/java/com/example/transfer/TransferWorkflowIntegrationTest.java similarity index 100% rename from samples/transfer-workflow/src/it/java/com/example/transfer/TransferWorkflowIntegrationTest.java rename to samples/transfer-workflow/src/test/java/com/example/transfer/TransferWorkflowIntegrationTest.java diff --git a/samples/view-store/src/it/java/store/view/StoreViewIntegrationTest.java b/samples/view-store/src/test/java/store/view/StoreViewIntegrationTest.java similarity index 100% rename from samples/view-store/src/it/java/store/view/StoreViewIntegrationTest.java rename to samples/view-store/src/test/java/store/view/StoreViewIntegrationTest.java diff --git a/samples/view-store/src/it/java/store/view/joined/JoinedCustomerOrdersViewIntegrationTest.java b/samples/view-store/src/test/java/store/view/joined/JoinedCustomerOrdersViewIntegrationTest.java similarity index 100% rename from samples/view-store/src/it/java/store/view/joined/JoinedCustomerOrdersViewIntegrationTest.java rename to samples/view-store/src/test/java/store/view/joined/JoinedCustomerOrdersViewIntegrationTest.java diff --git a/samples/view-store/src/it/java/store/view/nested/NestedCustomerOrdersViewIntegrationTest.java b/samples/view-store/src/test/java/store/view/nested/NestedCustomerOrdersViewIntegrationTest.java similarity index 100% rename from samples/view-store/src/it/java/store/view/nested/NestedCustomerOrdersViewIntegrationTest.java rename to samples/view-store/src/test/java/store/view/nested/NestedCustomerOrdersViewIntegrationTest.java diff --git a/samples/view-store/src/it/java/store/view/structured/StructuredCustomerOrdersViewIntegrationTest.java b/samples/view-store/src/test/java/store/view/structured/StructuredCustomerOrdersViewIntegrationTest.java similarity index 100% rename from samples/view-store/src/it/java/store/view/structured/StructuredCustomerOrdersViewIntegrationTest.java rename to samples/view-store/src/test/java/store/view/structured/StructuredCustomerOrdersViewIntegrationTest.java From c8fc890ecdcba89d61e8c0c151e55c8574a5b14e Mon Sep 17 00:00:00 2001 From: Enno Runne <458526+ennru@users.noreply.github.com> Date: Wed, 11 Dec 2024 14:05:25 +0100 Subject: [PATCH 08/16] docs: platform release notes (#75) --- docs/src/modules/reference/pages/release-notes.adoc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/src/modules/reference/pages/release-notes.adoc b/docs/src/modules/reference/pages/release-notes.adoc index 35cddf42c..bc458ecec 100644 --- a/docs/src/modules/reference/pages/release-notes.adoc +++ b/docs/src/modules/reference/pages/release-notes.adoc @@ -12,6 +12,19 @@ Current versions == December 2024 +* Platform update 2024-12-10 + - New internal structure to capture usage data + - Updated email server for signup emails + - Updated JVM memory settings for services + - Akka Runtime 1.2.5 + - Better gRPC support for the CLI + - Console updates + ** Empty projects can now be deleted from the Console + - GCP: Updates of GKE node versions + +* Akka Runtime 1.2.5 + - Improves handling of `count(*)` in the view query language + * Akka CLI 3.0.7 - Improvements to the Local Console From e5beb95a5bee8125d92f59494361fba9bd006a62 Mon Sep 17 00:00:00 2001 From: Francisco Lopez-Sancho Date: Wed, 11 Dec 2024 21:06:18 +0800 Subject: [PATCH 09/16] docs: typo (#73) --- docs/src/modules/java/pages/consuming-producing.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/modules/java/pages/consuming-producing.adoc b/docs/src/modules/java/pages/consuming-producing.adoc index 348c70aa1..0ed3429e5 100644 --- a/docs/src/modules/java/pages/consuming-producing.adoc +++ b/docs/src/modules/java/pages/consuming-producing.adoc @@ -163,7 +163,7 @@ If a Consumer produce messages of `byte[]` type to a topic, the messages publish Producing to a topic is the same as producing to a stream in service to service eventing. The only difference is the `@Produce.ToTopic` annotation. Used to set a destination topic name. -IMPORTANT: To guarantee that events for each entity can be read from the message broker in the same order they were written the cloud event subject id must be specified in metadata along with the event. Se how to in xref:consuming-producing.adoc#_metadata[Metadata] below. +IMPORTANT: To guarantee that events for each entity can be read from the message broker in the same order they were written, the cloud event subject id must be specified in metadata along with the event. See how to in xref:consuming-producing.adoc#_metadata[Metadata] below. [source,java,indent=0] .{sample-base-url}/event-sourced-counter-brokers/src/main/java/counter/application/CounterJournalToTopicConsumer.java[CounterJournalToTopicConsumer.java] From bff0a0866e722021ba1f026744ec3b724b7926fd Mon Sep 17 00:00:00 2001 From: Eduardo Pinto Date: Thu, 12 Dec 2024 17:41:33 +0000 Subject: [PATCH 10/16] chore: update release date license and sdk samples to 3.0.2 (#85) --- LICENSE | 4 ++-- akka-javasdk-maven/akka-javasdk-archetype/pom.xml | 4 ++-- akka-javasdk-maven/akka-javasdk-parent/pom.xml | 6 +++--- akka-javasdk-maven/pom.xml | 2 +- samples/choreography-saga-quickstart/pom.xml | 2 +- samples/doc-snippets/pom.xml | 2 +- samples/endpoint-jwt/pom.xml | 2 +- samples/event-sourced-counter-brokers/pom.xml | 2 +- samples/event-sourced-customer-registry-subscriber/pom.xml | 2 +- samples/event-sourced-customer-registry/pom.xml | 2 +- samples/key-value-counter/pom.xml | 2 +- samples/key-value-customer-registry/pom.xml | 2 +- samples/key-value-shopping-cart/pom.xml | 2 +- samples/reliable-timers/pom.xml | 2 +- samples/shopping-cart-quickstart/pom.xml | 2 +- samples/spring-dependency-injection/pom.xml | 2 +- samples/tracing/pom.xml | 2 +- samples/transfer-workflow-compensation/pom.xml | 2 +- samples/transfer-workflow/pom.xml | 2 +- samples/view-store/pom.xml | 2 +- 20 files changed, 24 insertions(+), 24 deletions(-) diff --git a/LICENSE b/LICENSE index d0fe2e7f5..c429a1b5b 100644 --- a/LICENSE +++ b/LICENSE @@ -3,10 +3,10 @@ Business Source License 1.1 Parameters Licensor: Lightbend, Inc. -Licensed Work: Akka SDK for Java v 3.0.1 +Licensed Work: Akka SDK for Java v 3.0.2 The Licensed Work is (c) 2024 Lightbend Inc. -Change Date: 2027-12-03 +Change Date: 2027-12-12 Change License: Apache License, Version 2.0 diff --git a/akka-javasdk-maven/akka-javasdk-archetype/pom.xml b/akka-javasdk-maven/akka-javasdk-archetype/pom.xml index a53bb3cc2..5a4b5ba09 100644 --- a/akka-javasdk-maven/akka-javasdk-archetype/pom.xml +++ b/akka-javasdk-maven/akka-javasdk-archetype/pom.xml @@ -2,12 +2,12 @@ 4.0.0 akka-javasdk-archetype - 3.0.1 + 3.0.2 maven-archetype io.akka akka-javasdk-maven - 3.0.1 + 3.0.2 Akka SDK for Java Maven Archetype diff --git a/akka-javasdk-maven/akka-javasdk-parent/pom.xml b/akka-javasdk-maven/akka-javasdk-parent/pom.xml index 088cae285..ac8ea2f5f 100644 --- a/akka-javasdk-maven/akka-javasdk-parent/pom.xml +++ b/akka-javasdk-maven/akka-javasdk-parent/pom.xml @@ -7,12 +7,12 @@ io.akka akka-javasdk-maven - 3.0.1 + 3.0.2 io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 pom @@ -34,7 +34,7 @@ yyyyMMddHHmmss - 3.0.1 + 3.0.2 21 diff --git a/akka-javasdk-maven/pom.xml b/akka-javasdk-maven/pom.xml index 9b5bf8a6b..a45c42204 100644 --- a/akka-javasdk-maven/pom.xml +++ b/akka-javasdk-maven/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-maven - 3.0.1 + 3.0.2 pom Akka SDK for Java Maven diff --git a/samples/choreography-saga-quickstart/pom.xml b/samples/choreography-saga-quickstart/pom.xml index c38bbd64f..ca3505f28 100644 --- a/samples/choreography-saga-quickstart/pom.xml +++ b/samples/choreography-saga-quickstart/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/doc-snippets/pom.xml b/samples/doc-snippets/pom.xml index 105bad2a4..4438557ea 100644 --- a/samples/doc-snippets/pom.xml +++ b/samples/doc-snippets/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/endpoint-jwt/pom.xml b/samples/endpoint-jwt/pom.xml index 4e0669b5c..918d8d332 100644 --- a/samples/endpoint-jwt/pom.xml +++ b/samples/endpoint-jwt/pom.xml @@ -4,7 +4,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/event-sourced-counter-brokers/pom.xml b/samples/event-sourced-counter-brokers/pom.xml index e2812d254..407a16ed2 100644 --- a/samples/event-sourced-counter-brokers/pom.xml +++ b/samples/event-sourced-counter-brokers/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/event-sourced-customer-registry-subscriber/pom.xml b/samples/event-sourced-customer-registry-subscriber/pom.xml index 29b4816f7..87058782c 100644 --- a/samples/event-sourced-customer-registry-subscriber/pom.xml +++ b/samples/event-sourced-customer-registry-subscriber/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 customer diff --git a/samples/event-sourced-customer-registry/pom.xml b/samples/event-sourced-customer-registry/pom.xml index afa97411a..c8a3b2652 100644 --- a/samples/event-sourced-customer-registry/pom.xml +++ b/samples/event-sourced-customer-registry/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/key-value-counter/pom.xml b/samples/key-value-counter/pom.xml index efbe4d68e..3f4aa45a6 100644 --- a/samples/key-value-counter/pom.xml +++ b/samples/key-value-counter/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/key-value-customer-registry/pom.xml b/samples/key-value-customer-registry/pom.xml index 29b017634..31dd00af8 100644 --- a/samples/key-value-customer-registry/pom.xml +++ b/samples/key-value-customer-registry/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/key-value-shopping-cart/pom.xml b/samples/key-value-shopping-cart/pom.xml index 4b0bbf34b..fe7ed18aa 100644 --- a/samples/key-value-shopping-cart/pom.xml +++ b/samples/key-value-shopping-cart/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/reliable-timers/pom.xml b/samples/reliable-timers/pom.xml index 1a7814988..602394187 100644 --- a/samples/reliable-timers/pom.xml +++ b/samples/reliable-timers/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/shopping-cart-quickstart/pom.xml b/samples/shopping-cart-quickstart/pom.xml index 858d2e2fc..8f24b12b6 100644 --- a/samples/shopping-cart-quickstart/pom.xml +++ b/samples/shopping-cart-quickstart/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/spring-dependency-injection/pom.xml b/samples/spring-dependency-injection/pom.xml index 76d7592e4..bcc0ada00 100644 --- a/samples/spring-dependency-injection/pom.xml +++ b/samples/spring-dependency-injection/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/tracing/pom.xml b/samples/tracing/pom.xml index d175a602a..459e314f2 100644 --- a/samples/tracing/pom.xml +++ b/samples/tracing/pom.xml @@ -4,7 +4,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/transfer-workflow-compensation/pom.xml b/samples/transfer-workflow-compensation/pom.xml index cd5c81dc5..66b1aecbc 100644 --- a/samples/transfer-workflow-compensation/pom.xml +++ b/samples/transfer-workflow-compensation/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/transfer-workflow/pom.xml b/samples/transfer-workflow/pom.xml index 88bc52130..a34fd006f 100644 --- a/samples/transfer-workflow/pom.xml +++ b/samples/transfer-workflow/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example diff --git a/samples/view-store/pom.xml b/samples/view-store/pom.xml index f62cd033e..6b2204ab7 100644 --- a/samples/view-store/pom.xml +++ b/samples/view-store/pom.xml @@ -5,7 +5,7 @@ io.akka akka-javasdk-parent - 3.0.1 + 3.0.2 com.example From e30f49eb50f11c1b95fc7342f8e1f3fcb7604264 Mon Sep 17 00:00:00 2001 From: Enno Runne <458526+ennru@users.noreply.github.com> Date: Fri, 13 Dec 2024 09:22:02 +0100 Subject: [PATCH 11/16] Revert "add pendo back" --- .../js/vendor/js.cookie.min.js | 2 - .../partials/footer-scripts-supplemental.hbs | 78 +------------------ 2 files changed, 1 insertion(+), 79 deletions(-) delete mode 100644 docs/supplemental_ui/js/vendor/js.cookie.min.js diff --git a/docs/supplemental_ui/js/vendor/js.cookie.min.js b/docs/supplemental_ui/js/vendor/js.cookie.min.js deleted file mode 100644 index 90a767223..000000000 --- a/docs/supplemental_ui/js/vendor/js.cookie.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! js-cookie v3.0.1 | MIT */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t - \ No newline at end of file +{{!-- add supplemental scripts as needed --}} \ No newline at end of file From 1c49a67df1699843296c74159cd698c304b80ef5 Mon Sep 17 00:00:00 2001 From: Eduardo Pinto Date: Fri, 13 Dec 2024 11:17:23 +0000 Subject: [PATCH 12/16] docs: update release notes to 3.0.2 (#89) --- docs/src/modules/reference/pages/release-notes.adoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/src/modules/reference/pages/release-notes.adoc b/docs/src/modules/reference/pages/release-notes.adoc index bc458ecec..0bd8bdcd6 100644 --- a/docs/src/modules/reference/pages/release-notes.adoc +++ b/docs/src/modules/reference/pages/release-notes.adoc @@ -12,6 +12,9 @@ Current versions == December 2024 +* https://github.com/akka/akka-sdk/releases/tag/v3.0.2[Akka SDK 3.0.2] + - Integration Tests are now bound to `mvn integration-test` and not a specific profile + * Platform update 2024-12-10 - New internal structure to capture usage data - Updated email server for signup emails From cd127b827bb825fdbbfdbb4f91965b3e13376866 Mon Sep 17 00:00:00 2001 From: Eduardo Pinto Date: Fri, 13 Dec 2024 11:28:28 +0000 Subject: [PATCH 13/16] docs: fix rendering issue in ESE page (#90) --- docs/src/modules/java/pages/event-sourced-entities.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/src/modules/java/pages/event-sourced-entities.adoc b/docs/src/modules/java/pages/event-sourced-entities.adoc index c03b0964e..36db9fa4d 100644 --- a/docs/src/modules/java/pages/event-sourced-entities.adoc +++ b/docs/src/modules/java/pages/event-sourced-entities.adoc @@ -241,6 +241,7 @@ include::example$shopping-cart-quickstart/src/test/java/shoppingcart/ShoppingCar <6> Assert there should only be one item. NOTE: The integration tests in samples can be run using `mvn integration-test`. + == Exposing entities directly include::partial$component-endpoint.adoc[] From 898ec6f98d8fb7ed8709cf5e88b2e35db9da1613 Mon Sep 17 00:00:00 2001 From: Eduardo Pinto Date: Mon, 16 Dec 2024 10:00:59 +0000 Subject: [PATCH 14/16] chore: allow running service and integration tests (#95) --- .../src/main/java/akka/javasdk/testkit/TestKit.java | 2 +- .../src/main/scala/akka/javasdk/impl/SdkRunner.scala | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/akka-javasdk-testkit/src/main/java/akka/javasdk/testkit/TestKit.java b/akka-javasdk-testkit/src/main/java/akka/javasdk/testkit/TestKit.java index 17072d564..0579f48fb 100644 --- a/akka-javasdk-testkit/src/main/java/akka/javasdk/testkit/TestKit.java +++ b/akka-javasdk-testkit/src/main/java/akka/javasdk/testkit/TestKit.java @@ -461,7 +461,7 @@ public SpiSettings getSettings() { proxyPort, settings.aclEnabled, false, - settings.serviceName, + settings.serviceName + "-IT-" + System.currentTimeMillis(), eventingSettings, mockedEventingSettings, true); diff --git a/akka-javasdk/src/main/scala/akka/javasdk/impl/SdkRunner.scala b/akka-javasdk/src/main/scala/akka/javasdk/impl/SdkRunner.scala index 172ef9880..186e05af4 100644 --- a/akka-javasdk/src/main/scala/akka/javasdk/impl/SdkRunner.scala +++ b/akka-javasdk/src/main/scala/akka/javasdk/impl/SdkRunner.scala @@ -149,7 +149,8 @@ class SdkRunner private (dependencyProvider: Option[DependencyProvider]) extends startContext.remoteIdentification, startContext.tracerFactory, dependencyProvider, - startedPromise) + startedPromise, + getSettings.devMode.map(_.serviceName)) Future.successful(app.spiEndpoints) } catch { case NonFatal(ex) => @@ -261,7 +262,8 @@ private final class Sdk( remoteIdentification: Option[RemoteIdentification], tracerFactory: String => Tracer, dependencyProviderOverride: Option[DependencyProvider], - startedPromise: Promise[StartupContext]) { + startedPromise: Promise[StartupContext], + serviceNameOverride: Option[String]) { private val logger = LoggerFactory.getLogger(getClass) private val messageCodec = new JsonMessageCodec private val ComponentLocator.LocatedClasses(componentClasses, maybeServiceClass) = @@ -442,7 +444,7 @@ private final class Sdk( case _ => None } - val devModeServiceName = sdkSettings.devModeSettings.map(_.serviceName) + val devModeServiceName = serviceNameOverride.orElse(sdkSettings.devModeSettings.map(_.serviceName)) val discoveryEndpoint = new DiscoveryImpl( classicSystem, From 05d658c5c4bec4b4c80e73177fb578b41fee5338 Mon Sep 17 00:00:00 2001 From: Eduardo Pinto Date: Tue, 17 Dec 2024 12:28:11 +0000 Subject: [PATCH 15/16] bump: runtime version to 1.2.5 (#101) --- akka-javasdk-maven/akka-javasdk-parent/pom.xml | 2 +- project/Dependencies.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/akka-javasdk-maven/akka-javasdk-parent/pom.xml b/akka-javasdk-maven/akka-javasdk-parent/pom.xml index ac8ea2f5f..23c03ec0a 100644 --- a/akka-javasdk-maven/akka-javasdk-parent/pom.xml +++ b/akka-javasdk-maven/akka-javasdk-parent/pom.xml @@ -38,7 +38,7 @@ 21 - 1.2.2 + 1.2.5 UTF-8 false diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 9e8ccfb18..9c1e30f3f 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -8,7 +8,7 @@ object Dependencies { val ProtocolVersionMinor = 1 val RuntimeImage = "gcr.io/kalix-public/kalix-runtime" // Remember to bump kalix-runtime.version in akka-javasdk-maven/akka-javasdk-parent if bumping this - val RuntimeVersion = sys.props.getOrElse("kalix-runtime.version", "1.2.2") + val RuntimeVersion = sys.props.getOrElse("kalix-runtime.version", "1.2.5") } // NOTE: embedded SDK should have the AkkaVersion aligned, when updating RuntimeVersion, make sure to check // if AkkaVersion and AkkaHttpVersion are aligned From 2ec5f117206d37a2ee8e6affe75660059f17d38c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 17:52:13 +0100 Subject: [PATCH 16/16] docs: akka CLI docs (#102) --- Makefile | 2 +- .../reference/pages/cli/akka-cli/akka_auth_tokens_create.adoc | 3 ++- docs/src/modules/reference/pages/release-notes.adoc | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index a21360a34..93d0c8da7 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ attributes: prepare > "${managed_partials}/attributes.adoc" docs/bin/version.sh | xargs -0 printf ":akka-javasdk-version: %s" \ > "${managed_partials}/attributes.adoc" - echo ":akka-cli-version: 3.0.7" >> "${managed_partials}/attributes.adoc" + echo ":akka-cli-version: 3.0.8" >> "${managed_partials}/attributes.adoc" echo ":akka-cli-min-version: 3.0.4" >> "${managed_partials}/attributes.adoc" # see https://adoptium.net/marketplace/ echo ":java-version: 21" \ diff --git a/docs/src/modules/reference/pages/cli/akka-cli/akka_auth_tokens_create.adoc b/docs/src/modules/reference/pages/cli/akka-cli/akka_auth_tokens_create.adoc index d85ff5870..bf7f58614 100644 --- a/docs/src/modules/reference/pages/cli/akka-cli/akka_auth_tokens_create.adoc +++ b/docs/src/modules/reference/pages/cli/akka-cli/akka_auth_tokens_create.adoc @@ -23,7 +23,8 @@ Token created: 0123456789abcdef0123456789abcdef0123456789abcdef ---- --description string A description of the token. If the token is a refresh token, this will be stored with the token for reference. -h, --help help for create - --scopes stringArray The scopes for the token. Valid scopes are: all, container_registry, execution, organizations, projects, user (default [execution]) + --scopes stringArray The scopes for the token. Valid scopes are: all, container_registry, execution, organizations, projects, user. Only applies to refresh tokens. (default [execution]) + --type string The type of token to create, either access or refresh (default "refresh") ---- == Options inherited from parent commands diff --git a/docs/src/modules/reference/pages/release-notes.adoc b/docs/src/modules/reference/pages/release-notes.adoc index 0bd8bdcd6..2d60cdf59 100644 --- a/docs/src/modules/reference/pages/release-notes.adoc +++ b/docs/src/modules/reference/pages/release-notes.adoc @@ -12,6 +12,9 @@ Current versions == December 2024 +* Akka CLI 3.0.8 + - Updates to configure SSO integrations + * https://github.com/akka/akka-sdk/releases/tag/v3.0.2[Akka SDK 3.0.2] - Integration Tests are now bound to `mvn integration-test` and not a specific profile