Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
899047f
docs: fix mount secrets section and add GCP Secret Manager guide
janikdotzel Mar 26, 2026
212c943
docs: add GCP schema to external secret descriptor reference
janikdotzel Mar 26, 2026
4b85387
docs: add GCP and Kubernetes terms to Vale vocabulary
janikdotzel Mar 26, 2026
fbe8989
Auto PR - Akka Runtime version 1.5.48 (#1470)
kalix-bot Mar 30, 2026
c444db7
feat: TTL-based deletion for entities (#1439)
johanandren Mar 31, 2026
cefde46
Note for local connecting to cloud (#1472)
JustinPihony Mar 31, 2026
086e4cb
Docs: rewrite llms.txt per llmstxt.org standard (#1455)
TylerJewell Mar 31, 2026
42d0c88
docs: Add back more links to llms.txt (#1473)
patriknw Mar 31, 2026
a841c6a
docs: akka CLI docs (#1477)
github-actions[bot] Apr 1, 2026
16c6144
Akka CLI 3.0.57 release notes (#1478)
olofwalker Apr 1, 2026
8f5f525
feat: Notifications from key value entity (#1385)
patriknw Apr 1, 2026
caa1509
Merge pull request #1459 from akka/docs/external-secrets-gcp-and-moun…
jroper Apr 2, 2026
1c64ff6
docs: Add Specify reference section and new SDD commands (#1480)
TylerJewell Apr 2, 2026
120af54
docs: add hint about static resources handling (#1377)
octonato Apr 2, 2026
c75d0db
docs: refer to SDD in Developing index page (#1482)
ennru Apr 2, 2026
0630afc
bump: sbt-scalafix 0.14.5 (#1484)
johanandren Apr 2, 2026
e039680
bump: sbt 1.12.8 (#1485)
johanandren Apr 2, 2026
f5fc78e
build: silence some sbt unused key linting (#1486)
johanandren Apr 2, 2026
4e90574
chore: Silence some deprecation/removal warnings (#1488)
johanandren Apr 2, 2026
3a11854
doc: improved AGENTS.md regarding http endpoints (#1489)
octonato Apr 7, 2026
7bfe7d2
feat: TestNotificationPublisher for EventSourcedTestKit (#1471)
aludwiko Apr 7, 2026
53cc051
feat: consumer testkit + MockComponentClient (#1469)
aludwiko Apr 7, 2026
34ebc06
chore: bump SDK versions to 3.5.17 (#1494)
github-actions[bot] Apr 8, 2026
661d8dd
docs: SDK 3.5.17 release notes (#1495)
johanandren Apr 9, 2026
696e6d5
chore: deprecate instance maxRetries (#1448)
octonato Apr 9, 2026
df2aba7
build: its a bump, not a chore: bump (#1501)
johanandren Apr 10, 2026
3f7e886
docs: docs2markdown.sh and other improvements (#1504)
octonato Apr 10, 2026
1b8d585
build: step for bumping runtime samples in release template (#1503)
johanandren Apr 10, 2026
6eea993
Akka CLI 3.0.58 release notes (#1508)
olofwalker Apr 10, 2026
f89999b
docs: improvements and clean-ups (#1507)
octonato Apr 10, 2026
3fd995f
chore: Better error for unsupported optional + collection in views (#…
johanandren Apr 14, 2026
22b059c
chore: emptyState, not null, for delete kve state (#1519)
johanandren Apr 14, 2026
13325da
chore: Some Javadoc warnings (#1522)
patriknw Apr 15, 2026
8a8f501
docs: akka CLI docs (#1523)
github-actions[bot] Apr 15, 2026
e80b147
docs: release notes Akka CLI 3.0.59 (#1524)
olofwalker Apr 15, 2026
ff16130
chore: License change date for 3.5.18 (#1527)
johanandren Apr 16, 2026
d229a8c
bump: SDK 3.5.18 (#1531)
github-actions[bot] Apr 16, 2026
6031d77
build: Release process simplifications (#1528)
johanandren Apr 16, 2026
1229c62
docs: SDK 3.5.18 release notes (#1534)
johanandren Apr 16, 2026
15d8bd4
Merge branch 'main' into publish-release-3.5.18
johanandren Apr 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/pr-akka-samples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ jobs:
if [ -n "$(git status --porcelain)" ]; then
git add -f .idea/runConfigurations/Run_locally.xml
git add .
git commit . -m "chore: bump SDK version to $sdk_version"
git commit . -m "bump: SDK $sdk_version"
git push --set-upstream origin $BRANCH
gh pr create -B main -t "Auto PR - Bump SDK version to $sdk_version" \
-b "This PR should update SDK (pom.xml) and latest source code. [$GITHUB_SHA]($COMMIT_URL$GITHUB_SHA)"
Expand Down Expand Up @@ -204,7 +204,7 @@ jobs:

if [ -n "$(git status --porcelain)" ]; then
git add .
git commit . -m "chore: bump SDK version to $sdk_version"
git commit . -m "bump: SDK $sdk_version"
git push --set-upstream origin $BRANCH
gh pr create -B main -t "Auto PR - Bump SDK version to $sdk_version" \
-b "This PR should update SDK (pom.xml). [$GITHUB_SHA]($COMMIT_URL$GITHUB_SHA)"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-sdk-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
git checkout -b ${BRANCH}
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git commit . -m "chore: bump SDK versions to ${SDK_VERSION}"
git commit . -m "bump: SDK ${SDK_VERSION}"
git push --set-upstream origin ${BRANCH}

gh pr create -B main -t "Auto PR - Bump SDK versions to ${SDK_VERSION}" -b "This PR should update all existing samples (pom.xml and plugins.sbt) and the maven poms. Please review, and merge if okay." || echo "No changes"; exit 0
4 changes: 2 additions & 2 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ Business Source License 1.1
Parameters

Licensor: Lightbend, Inc.
Licensed Work: Akka SDK for Java v 3.5.17
Licensed Work: Akka SDK for Java v 3.5.18
The Licensed Work is (c) 2026 Lightbend Inc.

Change Date: 2029-04-08
Change Date: 2029-04-16

Change License: Apache License, Version 2.0

Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,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.56" >> "${managed_partials}/attributes.adoc"
echo ":akka-cli-version: 3.0.59" >> "${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" \
Expand Down
4 changes: 2 additions & 2 deletions RELEASING.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Releasing Akka SDK

Create a release issue (using the [GitHub CLI](https://cli.github.com/))
Create a release issue:

```shell
gh issue create --title 'Release Akka SDK' --label akka-javasdk --body-file docs/release-issue-template.md -w
bin/create-release-issue.sh 3.1.0
````

and follow the instructions.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright (C) 2021-2026 Lightbend Inc. <https://www.lightbend.com>
*/

package com.example;

import akka.javasdk.annotations.Component;
import akka.javasdk.annotations.Consume;
import akka.javasdk.annotations.Query;
import akka.javasdk.view.TableUpdater;
import akka.javasdk.view.View;
import java.util.List;
import java.util.Optional;

@Component(id = "view-list-optional-field")
public class ViewWithListOptionalField extends View {

@Query("SELECT * FROM items")
public QueryEffect<ItemRow> getItems() {
return null;
}

public static class ItemRow {
public String id;
public List<Optional<String>> values;
}

@Consume.FromTopic("items-topic")
public static class Items extends TableUpdater<ItemRow> {
public Effect<ItemRow> onEvent(String event) {
return effects().updateRow(new ItemRow());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright (C) 2021-2026 Lightbend Inc. <https://www.lightbend.com>
*/

package com.example;

import akka.javasdk.annotations.Component;
import akka.javasdk.annotations.Consume;
import akka.javasdk.annotations.Query;
import akka.javasdk.view.TableUpdater;
import akka.javasdk.view.View;
import java.time.LocalDate;

@Component(id = "view-localdate-field")
public class ViewWithLocalDateField extends View {

@Query("SELECT * FROM items")
public QueryEffect<ItemRow> getItems() {
return null;
}

public static class ItemRow {
public String id;
public LocalDate createdDate;
}

@Consume.FromTopic("items-topic")
public static class Items extends TableUpdater<ItemRow> {
public Effect<ItemRow> onEvent(String event) {
return effects().updateRow(new ItemRow());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright (C) 2021-2026 Lightbend Inc. <https://www.lightbend.com>
*/

package com.example;

import akka.javasdk.annotations.Component;
import akka.javasdk.annotations.Consume;
import akka.javasdk.annotations.Query;
import akka.javasdk.view.TableUpdater;
import akka.javasdk.view.View;
import java.time.LocalDateTime;

@Component(id = "view-localdatetime-field")
public class ViewWithLocalDateTimeField extends View {

@Query("SELECT * FROM items")
public QueryEffect<ItemRow> getItems() {
return null;
}

public static class ItemRow {
public String id;
public LocalDateTime createdAt;
}

@Consume.FromTopic("items-topic")
public static class Items extends TableUpdater<ItemRow> {
public Effect<ItemRow> onEvent(String event) {
return effects().updateRow(new ItemRow());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright (C) 2021-2026 Lightbend Inc. <https://www.lightbend.com>
*/

package com.example;

import akka.javasdk.annotations.Component;
import akka.javasdk.annotations.Consume;
import akka.javasdk.annotations.Query;
import akka.javasdk.view.TableUpdater;
import akka.javasdk.view.View;
import java.util.Map;

@Component(id = "view-map-field")
public class ViewWithMapField extends View {

@Query("SELECT * FROM items")
public QueryEffect<ItemRow> getItems() {
return null;
}

public static class ItemRow {
public String id;
public Map<String, String> metadata;
}

@Consume.FromTopic("items-topic")
public static class Items extends TableUpdater<ItemRow> {
public Effect<ItemRow> onEvent(String event) {
return effects().updateRow(new ItemRow());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright (C) 2021-2026 Lightbend Inc. <https://www.lightbend.com>
*/

package com.example;

import akka.javasdk.annotations.Component;
import akka.javasdk.annotations.Consume;
import akka.javasdk.annotations.Query;
import akka.javasdk.view.TableUpdater;
import akka.javasdk.view.View;
import java.util.List;

@Component(id = "view-nested-collection-field")
public class ViewWithNestedCollectionField extends View {

@Query("SELECT * FROM items")
public QueryEffect<ItemRow> getItems() {
return null;
}

public static class ItemRow {
public String id;
public List<List<String>> nested;
}

@Consume.FromTopic("items-topic")
public static class Items extends TableUpdater<ItemRow> {
public Effect<ItemRow> onEvent(String event) {
return effects().updateRow(new ItemRow());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright (C) 2021-2026 Lightbend Inc. <https://www.lightbend.com>
*/

package com.example;

import akka.javasdk.annotations.Component;
import akka.javasdk.annotations.Consume;
import akka.javasdk.annotations.Query;
import akka.javasdk.view.TableUpdater;
import akka.javasdk.view.View;
import java.util.List;
import java.util.Optional;

@Component(id = "view-optional-list-field")
public class ViewWithOptionalListField extends View {

@Query("SELECT * FROM items")
public QueryEffect<ItemRow> getItems() {
return null;
}

public static class ItemRow {
public String id;
public Optional<List<String>> tags;
}

@Consume.FromTopic("items-topic")
public static class Items extends TableUpdater<ItemRow> {
public Effect<ItemRow> onEvent(String event) {
return effects().updateRow(new ItemRow());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright (C) 2021-2026 Lightbend Inc. <https://www.lightbend.com>
*/

package com.example;

import akka.javasdk.annotations.Component;
import akka.javasdk.annotations.Consume;
import akka.javasdk.annotations.Query;
import akka.javasdk.view.TableUpdater;
import akka.javasdk.view.View;
import java.util.Optional;

@Component(id = "view-optional-optional-field")
public class ViewWithOptionalOptionalField extends View {

@Query("SELECT * FROM items")
public QueryEffect<ItemRow> getItems() {
return null;
}

public static class ItemRow {
public String id;
public Optional<Optional<String>> name;
}

@Consume.FromTopic("items-topic")
public static class Items extends TableUpdater<ItemRow> {
public Effect<ItemRow> onEvent(String event) {
return effects().updateRow(new ItemRow());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright (C) 2021-2026 Lightbend Inc. <https://www.lightbend.com>
*/

package com.example;

import akka.javasdk.annotations.Component;
import akka.javasdk.annotations.Consume;
import akka.javasdk.annotations.Query;
import akka.javasdk.view.TableUpdater;
import akka.javasdk.view.View;
import java.util.Optional;
import java.util.Set;

@Component(id = "view-optional-set-field")
public class ViewWithOptionalSetField extends View {

@Query("SELECT * FROM items")
public QueryEffect<ItemRow> getItems() {
return null;
}

public static class ItemRow {
public String id;
public Optional<Set<String>> tags;
}

@Consume.FromTopic("items-topic")
public static class Items extends TableUpdater<ItemRow> {
public Effect<ItemRow> onEvent(String event) {
return effects().updateRow(new ItemRow());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,51 @@ abstract class AbstractViewValidationSpec(val validationMode: ValidationMode)
"Methods annotated with @FunctionTool must be public. Method [privateMethod] cannot be annotated with @FunctionTool")
}

// View row type field validations
"reject View with Optional<List<...>> field" in {
assertInvalid("invalid/ViewWithOptionalListField.java", "Optional<List<...>> which is not supported", "tags")
}

"reject View with List<Optional<...>> field" in {
assertInvalid("invalid/ViewWithListOptionalField.java", "List<Optional<...>> which is not supported", "values")
}

"reject View with nested collection field" in {
assertInvalid(
"invalid/ViewWithNestedCollectionField.java",
"nested collection type which is not supported",
"nested")
}

"reject View with Optional<Set<...>> field" in {
assertInvalid("invalid/ViewWithOptionalSetField.java", "Optional<Set<...>> which is not supported", "tags")
}

"reject View with Map field" in {
assertInvalid("invalid/ViewWithMapField.java", "Map which is not supported", "metadata")
}

"reject View with LocalDate field" in {
assertInvalid(
"invalid/ViewWithLocalDateField.java",
"LocalDate which is not supported",
"Supported date/time types are Instant and ZonedDateTime")
}

"reject View with LocalDateTime field" in {
assertInvalid(
"invalid/ViewWithLocalDateTimeField.java",
"LocalDateTime which is not supported",
"Supported date/time types are Instant and ZonedDateTime")
}

"reject View with Optional<Optional<...>> field" in {
assertInvalid(
"invalid/ViewWithOptionalOptionalField.java",
"Optional<Optional<...>> which is not supported",
"name")
}

// SnapshotHandler validations
"accept valid View TableUpdater with @SnapshotHandler for EventSourcedEntity subscription" in {
assertValid("valid/ValidViewWithSnapshotHandler.java")
Expand Down
Loading
Loading