Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Publish docs for release 3.1.0 #187

Merged
merged 95 commits into from
Jan 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
eb4cd3c
Merge pull request #23 from akka/main
patriknw Nov 22, 2024
51b69db
Merge remote-tracking branch 'upstream/main' into octonato/merge-main…
octonato Nov 28, 2024
a6a2a0b
Merge pull request #44 from akka/octonato/merge-main-back
octonato Nov 28, 2024
a374872
chore: using spi for TimedAction and ESE (#45)
aludwiko Dec 2, 2024
2c30b64
chore: Use spi instance factory for ese
patriknw Dec 2, 2024
249e56a
update to latest runtime spi
patriknw Dec 3, 2024
108cb0f
chore: Consumer spi + ESE changes
aludwiko Dec 3, 2024
10de34d
Merge pull request #51 from akka/consumer-spi-sdk
patriknw Dec 3, 2024
e11eb2d
Merge pull request #54 from akka/main
octonato Dec 3, 2024
2b9a1bc
chore: Snapshots and StateSerializer type (#48)
patriknw Dec 4, 2024
beccd8c
Merge pull request #57 from akka/main
patriknw Dec 5, 2024
ada6d18
chore: use AkkaRuntimeMain (#60)
octonato Dec 5, 2024
3b3e527
chore: Rewrite serialization (#61)
patriknw Dec 6, 2024
46bf857
chore: Still PbAny in KeyValueEntitiesImpl (#66)
patriknw Dec 6, 2024
5ec4f68
chore: Use JsonSerializer in EventingTestKit (#65)
patriknw Dec 6, 2024
aa3477b
chore: Remove JsonMessageCodec (#67)
patriknw Dec 6, 2024
75b2a5b
chore: consuming and producing without proto desc SDK changes (#69)
aludwiko Dec 9, 2024
b63108a
chore: SDK implementation of KeyValueEntity spi (#70)
patriknw Dec 11, 2024
418e163
chore: Workflow SPI (#59)
octonato Dec 11, 2024
5c44594
chore: timed action without proto desc (#77)
aludwiko Dec 11, 2024
9fb9f6d
chore: Misc cleanup (#71)
patriknw Dec 11, 2024
db339e9
chore: misc cleanups (#79)
aludwiko Dec 11, 2024
cf7fae3
fix: do not access currentState in thenCompose (#80)
octonato Dec 11, 2024
83b6ce3
chore: Populate ComponentDescriptor once, in SdkRunner (#81)
patriknw Dec 11, 2024
bf7c5fb
chore: View SPI (#72)
johanandren Dec 12, 2024
c0a8eab
chore: BytesPayload in component client (#82)
patriknw Dec 12, 2024
5894d6b
chore: ESE effect types (#83)
patriknw Dec 13, 2024
98e726e
chore: removing entities and workflows from proto spec (#87)
aludwiko Dec 13, 2024
8c5ac18
chore: misc cleanups (#92)
aludwiko Dec 16, 2024
309c1be
chore: Remove TestProtocol (#96)
patriknw Dec 16, 2024
4365544
chore: SpiMetadata in component client (#91)
patriknw Dec 16, 2024
486b22e
chore: Proto ByteString in EventingTestKit.IncomingMessages.publish (…
patriknw Dec 16, 2024
dd80d30
chore: Replace discovery reportError and healthCheck with spi (#94)
patriknw Dec 16, 2024
0f55d7c
bumping runtime
aludwiko Dec 17, 2024
bfcc50a
chore: timed action & consumer effect spi (#98)
aludwiko Dec 17, 2024
5ad3a6a
chore: Align routers (#99)
patriknw Dec 17, 2024
31d1311
chore: new workflow spi adt (#93)
octonato Dec 18, 2024
a42b7fc
chore: Remove Discovery (#104)
patriknw Dec 18, 2024
273ac52
chore: minor fixmes
patriknw Dec 18, 2024
51f8997
chore: Cleanup AnySupport (#106)
patriknw Dec 18, 2024
109c0e0
chore: Move some reflect out of entity instance (#107)
patriknw Dec 18, 2024
2b77124
chore: make workflow stateless (#108)
octonato Dec 18, 2024
e27b102
chore: Format reportError log (#110)
patriknw Dec 19, 2024
331d520
samples: Update README in JWT sample (#111)
patriknw Dec 19, 2024
b292090
chore: Cleanup JsonSupport (#105)
patriknw Dec 19, 2024
80fb437
chore: Missing metadata in reply (#109)
patriknw Dec 19, 2024
879998d
chore: View updates (#112)
johanandren Dec 19, 2024
488d784
Merge branch 'main' into wip-merge-main-patriknw
patriknw Dec 19, 2024
303d940
Merge pull request #114 from akka/wip-merge-main-patriknw
patriknw Dec 19, 2024
7741f18
chore: Re-introduce trace spans for timed actions and consumers (#113)
johanandren Dec 19, 2024
c31158e
chore: endpoint request header follow up and docs (#115)
johanandren Dec 20, 2024
16da721
chore: adding class name to descriptors (#116)
aludwiko Dec 20, 2024
e9bf2b1
chore: aligning view store sample (#118)
aludwiko Jan 7, 2025
1297c2b
chore: rename ES testkit utility method (#120)
aludwiko Jan 7, 2025
a241712
chore: removing metadata from timed action effect impl (#124)
aludwiko Jan 8, 2025
eda7310
chore: Update views to use new SPI type structure (#126)
johanandren Jan 9, 2025
b5a4c30
feat: component exclusion config (#128)
aludwiko Jan 9, 2025
8bb5335
chore: More evolvable SpiComponents (#132)
johanandren Jan 9, 2025
7321a65
chore: descriptor factories clean up (#125)
aludwiko Jan 10, 2025
6f14e04
docs: clarify asMap behaviour in JwtClaims (#129)
efgpinto Jan 10, 2025
e960173
chore: drop protobuf/grpc deps and classes (#134)
johanandren Jan 10, 2025
021e67a
fix: deserialize table updater row state (#135)
aludwiko Jan 10, 2025
0817df7
test: Cover indexable columns with test coverage (#133)
johanandren Jan 10, 2025
a7630cc
feat: event-sourced entity testkit support for initial events/state (…
leviramsey Jan 13, 2025
91d44d8
chore: Default domain and application packages in archetype (#140)
johanandren Jan 13, 2025
e744bcc
chore: Wrong package name in #140 (#141)
johanandren Jan 13, 2025
d71aace
fix: logging workflow step and transition failures (#146)
aludwiko Jan 14, 2025
19cf516
fix: failing the consumer if publishing without the destination is de…
aludwiko Jan 14, 2025
33a304f
feat: Support ZonedDateTime in views (#142)
johanandren Jan 14, 2025
25bf480
docs: Runaway space before request header section header (#145)
johanandren Jan 15, 2025
f0c0759
chore: updating consumer SPI effect (#148)
aludwiko Jan 15, 2025
7e1a291
Merge branch 'main' into wip-merge-main-13b69e0
johanandren Jan 15, 2025
cafcb58
Merge pull request #151 from akka/wip-merge-main-13b69e0
patriknw Jan 15, 2025
d28fb66
docs: Refresh view query language section (#144)
johanandren Jan 16, 2025
88d25a6
Merge pull request #155 from akka/main
patriknw Jan 16, 2025
48b88d6
feat: add query param on http RequestBuilder (#157)
sebastian-alfers Jan 16, 2025
c599636
chore: Drop some more protobuf refs (#158)
johanandren Jan 16, 2025
55e7efa
chore: improving workflow config (#156)
aludwiko Jan 16, 2025
5a94fed
feat: disabling components programmatically (#153)
aludwiko Jan 17, 2025
7d44130
Remove AkkaSdkTestkit from TestKit javadoc (#165)
leviramsey Jan 20, 2025
d15c21b
feat: isDeleted method for entity command handlers (#164)
aludwiko Jan 20, 2025
d744ee2
docs: adding sync status (#160)
franciscolopezsancho Jan 20, 2025
49a96d2
Merge pull request #167 from akka/main
patriknw Jan 20, 2025
87a87df
bump: Akka Runtime 1.3.0 (#168)
patriknw Jan 20, 2025
f6f1c42
docs: show CLI download URL
ennru Jan 24, 2025
8e0b53c
Merge pull request #174 from akka/ennru-linux-manual-cli
beritou Jan 24, 2025
c63c329
fix: preserve type when building dynamic json (#175)
octonato Jan 27, 2025
44be40b
docs: Fix advanced query snippet references (#176)
johanandren Jan 27, 2025
55369cb
docs: Use mvn verify instead of mvn integration-test (#177)
johanandren Jan 27, 2025
217fad0
fix: User config got sdk config in the wrong place (#178)
johanandren Jan 27, 2025
0410277
docs: update entity state flow charts (#169)
ennru Jan 27, 2025
6c9ccde
docs: add links to multi-region operation docs (#180)
beritou Jan 28, 2025
5b965e9
chore: Update LICENSE for release 3.1.0 (#182)
franciscolopezsancho Jan 28, 2025
ae36b22
docs: Update release notes (#183)
patriknw Jan 29, 2025
b65c6c1
chore: bump SDK versions to 3.1.0 (#184)
github-actions[bot] Jan 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ jobs:
fi
if [ true == '${{matrix.it}}' ]; then
${PRE_CMD}
KALIX_TESTKIT_DEBUG=true mvn integration-test --no-transfer-progress
KALIX_TESTKIT_DEBUG=true mvn verify --no-transfer-progress
fi

- name: ${{ matrix.sample }} rm & test-compile
Expand Down
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.0.2
Licensed Work: Akka SDK for Java v 3.1.0
The Licensed Work is (c) 2024 Lightbend Inc.

Change Date: 2027-12-12
Change Date: 2028-01-28

Change License: Apache License, Version 2.0

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/*
* Copyright (C) 2021-2024 Lightbend Inc. <https://www.lightbend.com>
*/

package com.example;

// covering that there can be more than one supertype inbetween
Expand Down
4 changes: 2 additions & 2 deletions akka-javasdk-maven/akka-javasdk-archetype/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
<modelVersion>4.0.0</modelVersion>

<artifactId>akka-javasdk-archetype</artifactId>
<version>3.0.2</version>
<version>3.1.0</version>
<packaging>maven-archetype</packaging>
<parent>
<groupId>io.akka</groupId>
<artifactId>akka-javasdk-maven</artifactId>
<version>3.0.2</version>
<version>3.1.0</version>
</parent>

<name>Akka SDK for Java Maven Archetype</name>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/**
* This module is for the public API of the service, where the classes that define endpoints of the service should live.
*/
package ${package}.api;
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/**
* This module is for the application layer of the service. It is where the internal Akka components like entities and
* views should be defined.
*/
package ${package}.application;
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/**
* This module is for the domain model of the service. It is should contain plain Java classes that does not
* depend on the Akka APIs.
*/
package ${package}.domain;
18 changes: 7 additions & 11 deletions akka-javasdk-maven/akka-javasdk-parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
<parent>
<groupId>io.akka</groupId>
<artifactId>akka-javasdk-maven</artifactId>
<version>3.0.2</version>
<version>3.1.0</version>
</parent>

<groupId>io.akka</groupId>
<artifactId>akka-javasdk-parent</artifactId>
<version>3.0.2</version>
<version>3.1.0</version>
<packaging>pom</packaging>


Expand All @@ -34,11 +34,11 @@

<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>

<akka-javasdk.version>3.0.2</akka-javasdk.version>
<akka-javasdk.version>3.1.0</akka-javasdk.version>

<!-- These are dependent on runtime environment and cannot be customized by users -->
<maven.compiler.release>21</maven.compiler.release>
<kalix-runtime.version>1.2.5</kalix-runtime.version>
<kalix-runtime.version>1.3.0</kalix-runtime.version>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<skip.docker>false</skip.docker>
Expand Down Expand Up @@ -160,8 +160,6 @@
<exclude>com.typesafe.akka:akka-stream_2.13</exclude>
<exclude>com.hierynomus:asn-one</exclude>
<exclude>org.reactivestreams:reactive-streams</exclude>
<!-- Runtime -->
<exclude>io.kalix:kalix-proxy-protocol</exclude>
<!-- Scala stdlib -->
<exclude>org.scala-lang.modules:scala-collection-compat_2.13</exclude>
<exclude>org.scala-lang:scala-library</exclude>
Expand All @@ -172,9 +170,7 @@
<exclude>io.grpc:grpc-stub</exclude>
<exclude>io.grpc:grpc-api</exclude>
<exclude>com.google.protobuf:protobuf-java</exclude>
<exclude>com.google.protobuf:protobuf-java-util</exclude>
<!-- guava and related -->
<exclude>com.google.code.gson:gson</exclude>
<exclude>com.google.guava:guava</exclude>
<exclude>com.google.guava:failureaccess</exclude>
<exclude>com.google.guava:listenablefuture</exclude>
Expand Down Expand Up @@ -313,7 +309,7 @@
<artifactId>exec-maven-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<mainClass>kalix.runtime.KalixRuntimeMain</mainClass>
<mainClass>kalix.runtime.AkkaRuntimeMain</mainClass>
<systemProperties>
<systemProperty>
<key>akka.javasdk.dev-mode.enabled</key>
Expand Down Expand Up @@ -348,7 +344,7 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
Expand Down Expand Up @@ -393,7 +389,7 @@
</goals>
<configuration>
<source>
log.warn('The 'it' profile is deprecated. It will be removed in future versions. Integration tests only need `mvn integration-test` to run.')
log.warn('The 'it' profile is deprecated. It will be removed in future versions. Integration tests only need `mvn verify` to run.')
</source>
</configuration>
</execution>
Expand Down
2 changes: 1 addition & 1 deletion akka-javasdk-maven/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>io.akka</groupId>
<artifactId>akka-javasdk-maven</artifactId>
<version>3.0.2</version>
<version>3.1.0</version>
<packaging>pom</packaging>

<name>Akka SDK for Java Maven</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,18 @@ public interface EventSourcedResult<R> {
*/
Object getUpdatedState();

/**
* @return Whether the command handler persist events or not.
* @deprecated Use {@link #didPersistEvents()} instead.
*/
@Deprecated(since = "3.0.2", forRemoval = true)
boolean didEmitEvents();

/**
* @return Whether the command handler persist events or not.
*/
boolean didPersistEvents();

/** @return All the events that were emitted by handling this command. */
List<Object> getAllEvents();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
import akka.javasdk.Metadata;
import akka.javasdk.eventsourcedentity.EventSourcedEntity;
import akka.javasdk.eventsourcedentity.EventSourcedEntityContext;
import akka.javasdk.impl.JsonMessageCodec;
import akka.javasdk.testkit.impl.EventSourcedEntityEffectsRunner;
import akka.javasdk.testkit.impl.TestKitEventSourcedEntityContext;

import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier;

Expand All @@ -26,16 +26,23 @@
public class EventSourcedTestKit<S, E, ES extends EventSourcedEntity<S, E>>
extends EventSourcedEntityEffectsRunner<S, E> {

private final ES entity;
private final String entityId;

private final JsonMessageCodec messageCodec;
public static final String DEFAULT_TEST_ENTITY_ID = "testkit-entity-id";

private EventSourcedTestKit(ES entity, String entityId) {
super(entity);
this.entity = entity;
this.entityId = entityId;
this.messageCodec = new JsonMessageCodec();
}

private EventSourcedTestKit(ES entity, String entityId, S initialState) {
super(entity, initialState);
this.entityId = entityId;
}

private EventSourcedTestKit(ES entity, String entityId, List<E> initialEvents) {
super(entity, initialEvents);
this.entityId = entityId;
}

/**
Expand All @@ -45,7 +52,28 @@ private EventSourcedTestKit(ES entity, String entityId) {
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> of(
Supplier<ES> entityFactory) {
return of("testkit-entity-id", entityFactory);
return of(DEFAULT_TEST_ENTITY_ID, entityFactory);
}

/**
* Creates a new testkit instance from a Supplier of EventSourcedEntity and a state.
*
* <p>A default test entity id will be automatically provided.
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> ofEntityWithState(
Supplier<ES> entityFactory, S initialState) {
return ofEntityWithState(DEFAULT_TEST_ENTITY_ID, entityFactory, initialState);
}

/**
* Creates a new testkit instance from a Supplier of EventSourcedEntity and events from which to
* derive a state for the generated entity.
*
* <p>A default test entity id will be automatically provided.
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> ofEntityFromEvents(
Supplier<ES> entityFactory, List<E> initialEvents) {
return ofEntityFromEvents(DEFAULT_TEST_ENTITY_ID, entityFactory, initialEvents);
}

/**
Expand All @@ -55,7 +83,29 @@ public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S,
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> of(
Function<EventSourcedEntityContext, ES> entityFactory) {
return of("testkit-entity-id", entityFactory);
return of(DEFAULT_TEST_ENTITY_ID, entityFactory);
}

/**
* Creates a new testkit instance from a factory function for EventSourcedEntity and a state into
* which the built entity will be placed for tests.
*
* <p>A default test entity id will be automatically provided.
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> ofEntityWithState(
Function<EventSourcedEntityContext, ES> entityFactory, S initialState) {
return ofEntityWithState(DEFAULT_TEST_ENTITY_ID, entityFactory, initialState);
}

/**
* Creates a new testkit instance from a factory function for EventSourcedEntity and events from
* which to derive a state for the generated entity for tests.
*
* <p>A default test entity id will be automatically provided.
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> ofEntityFromEvents(
Function<EventSourcedEntityContext, ES> entityFactory, List<E> initialEvents) {
return ofEntityFromEvents(DEFAULT_TEST_ENTITY_ID, entityFactory, initialEvents);
}

/**
Expand All @@ -67,14 +117,49 @@ public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S,
return of(entityId, ctx -> entityFactory.get());
}

/**
* Creates a new testkit instance from a user defined entity id, a Supplier of EventSourcedEntity,
* and a state into which the supplied entity will be placed for tests.
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> ofEntityWithState(
String entityId, Supplier<ES> entityFactory, S initialState) {
return ofEntityWithState(entityId, ctx -> entityFactory.get(), initialState);
}

/**
* Creates a new testkit instance from a user defined entity id, a Supplier of EventSourcedEntity,
* and events from which to derive a state for the generated entity for tests.
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> ofEntityFromEvents(
String entityId, Supplier<ES> entityFactory, List<E> initialEvents) {
return ofEntityFromEvents(entityId, ctx -> entityFactory.get(), initialEvents);
}

/**
* Creates a new testkit instance from a user defined entity id and a function
* EventSourcedEntityContext to EventSourcedEntity.
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> of(
String entityId, Function<EventSourcedEntityContext, ES> entityFactory) {
EventSourcedEntityContext context = new TestKitEventSourcedEntityContext(entityId);
return new EventSourcedTestKit<>(entityFactory.apply(context), entityId);
return new EventSourcedTestKit<>(entityWithId(entityId, entityFactory), entityId);
}

/**
* Creates a new testkit instance from a user defined entity id, a factory function for
* EventSourcedEntity, and a state into which the built entity will be placed for tests.
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> ofEntityWithState(
String entityId, Function<EventSourcedEntityContext, ES> entityFactory, S initialState) {
return new EventSourcedTestKit<>(entityWithId(entityId, entityFactory), entityId, initialState);
}

/**
* Creates a new testkit instance from a user defined entity id, a factory function for
* EventSourcedEntity, and events from which to derive a state for the generated entity for tests.
*/
public static <S, E, ES extends EventSourcedEntity<S, E>> EventSourcedTestKit<S, E, ES> ofEntityFromEvents(
String entityId, Function<EventSourcedEntityContext, ES> entityFactory, List<E> initialEvents) {
return new EventSourcedTestKit<>(entityWithId(entityId, entityFactory), entityId, initialEvents);
}

/**
Expand All @@ -100,12 +185,19 @@ public <R> EventSourcedResult<R> call(Function<ES, EventSourcedEntity.Effect<R>>
* @param <R> The type of reply that is expected from invoking a command handler
* @return a EventSourcedResult
*/
@SuppressWarnings("unchecked") // entity() returns the entity we were constructed with
public <R> EventSourcedResult<R> call(Function<ES, EventSourcedEntity.Effect<R>> func, Metadata metadata) {
return interpretEffects(() -> func.apply(entity), entityId, metadata);
return interpretEffects(() -> func.apply((ES)entity()), entityId, metadata);
}

@Override
protected final S handleEvent(S state, E event) {
return entity.applyEvent(event);
return entity().applyEvent(event);
}

private static <S, E, ES extends EventSourcedEntity<S, E>> ES entityWithId(
String entityId, Function<EventSourcedEntityContext, ES> entityFactory) {
EventSourcedEntityContext context = new TestKitEventSourcedEntityContext(entityId);
return entityFactory.apply(context);
}
}
Loading
Loading