Skip to content

Commit 6d0052e

Browse files
Update Java/Kotlin examples (#261)
* Update Java/Kotlin examples * Add Kotlin Spring boot example, fix java spring boot example * Few cosmetic small improvements to the examples * Remove stuff not needed anymore * Fix Kotlin * Last minute package renaming * Finish updates * Add .idea to improve the experience with code generator
1 parent 080ae2d commit 6d0052e

File tree

136 files changed

+1127
-699
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+1127
-699
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ jobs:
4747
kotlin-hello-world-lambda-cdk.zip
4848
kotlin-patterns-use-cases.zip
4949
kotlin-hello-world-gradle.zip
50+
kotlin-hello-world-gradle-spring-boot.zip
5051
typescript-basics.zip
5152
typescript-food-ordering.zip
5253
typescript-chat-bot.zip

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# IDEs
2+
/.idea
23
.vscode
3-
.idea
44
*.iml
55

66
# NodeJS

.tools/prepare_release_zip.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ create_release_zip kotlin/end-to-end-applications/kmp-android-todo-app kotlin-km
4040
create_release_zip kotlin/integrations/kotlin-gradle-lambda-cdk kotlin-hello-world-lambda-cdk
4141
create_release_zip kotlin/patterns-use-cases kotlin-patterns-use-cases
4242
create_release_zip kotlin/templates/kotlin-gradle kotlin-hello-world-gradle
43+
create_release_zip kotlin/templates/kotlin-gradle-spring-boot kotlin-hello-world-gradle-spring-boot
4344

4445
create_release_zip typescript/basics typescript-basics
4546
create_release_zip typescript/end-to-end-applications/food-ordering typescript-food-ordering

.tools/run_jvm_tests.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ pushd $PROJECT_ROOT/java/templates/java-maven && mvn verify && popd
1010
pushd $PROJECT_ROOT/java/templates/java-maven-quarkus && mvn verify && popd
1111
pushd $PROJECT_ROOT/java/templates/java-maven-spring-boot && mvn verify && popd
1212
pushd $PROJECT_ROOT/kotlin/templates/kotlin-gradle && ./gradlew --console=plain check && popd
13+
pushd $PROJECT_ROOT/kotlin/templates/kotlin-gradle-spring-boot && ./gradlew --console=plain check && popd
1314

1415
pushd $PROJECT_ROOT/java/basics && ./gradlew --console=plain check && popd
1516
pushd $PROJECT_ROOT/kotlin/basics && ./gradlew --console=plain check && popd
@@ -25,4 +26,6 @@ pushd $PROJECT_ROOT/java/end-to-end-applications/food-ordering/app && ./gradlew
2526
pushd $PROJECT_ROOT/java/end-to-end-applications/subway-fare-calculator && ./gradlew --console=plain check && popd
2627
pushd $PROJECT_ROOT/java/end-to-end-applications/workflow-interpreter && mvn verify && popd
2728
pushd $PROJECT_ROOT/kotlin/end-to-end-applications/food-ordering/app && ./gradlew --console=plain check && popd
28-
pushd $PROJECT_ROOT/kotlin/end-to-end-applications/kmp-android-todo-app && ./gradlew --console=plain check && popd
29+
30+
# This needs the Android SDK
31+
# pushd $PROJECT_ROOT/kotlin/end-to-end-applications/kmp-android-todo-app && ./gradlew --console=plain check && popd

.tools/update_jvm_examples.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ search_and_replace_version_maven $PROJECT_ROOT/java/templates/java-maven
1919
search_and_replace_version_maven $PROJECT_ROOT/java/templates/java-maven-quarkus
2020
search_and_replace_version_maven $PROJECT_ROOT/java/templates/java-maven-spring-boot
2121
search_and_replace_version_gradle $PROJECT_ROOT/kotlin/templates/kotlin-gradle
22+
search_and_replace_version_gradle $PROJECT_ROOT/kotlin/templates/kotlin-gradle-spring-boot
2223

2324
search_and_replace_version_gradle $PROJECT_ROOT/java/integrations/java-spring
2425
search_and_replace_version_gradle $PROJECT_ROOT/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda
@@ -34,7 +35,7 @@ search_and_replace_version_gradle $PROJECT_ROOT/java/tutorials/tour-of-restate-j
3435
search_and_replace_version_gradle $PROJECT_ROOT/java/end-to-end-applications/subway-fare-calculator
3536
search_and_replace_version_gradle $PROJECT_ROOT/java/end-to-end-applications/food-ordering/app/restate-app
3637
search_and_replace_version_gradle $PROJECT_ROOT/java/end-to-end-applications/food-ordering/app/restaurant
37-
search_and_replace_version_gradle $PROJECT_ROOT/java/end-to-end-applications/workflow-interpreter
38+
search_and_replace_version_maven $PROJECT_ROOT/java/end-to-end-applications/workflow-interpreter
3839
search_and_replace_version_gradle $PROJECT_ROOT/kotlin/end-to-end-applications/food-ordering/app/restate-app
3940
search_and_replace_version_gradle $PROJECT_ROOT/kotlin/end-to-end-applications/food-ordering/app/restaurant
4041
search_and_replace_version_gradle $PROJECT_ROOT/kotlin/end-to-end-applications/kmp-android-todo-app/server

java/basics/.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ hs_err_pid*
2828
# Ignore Gradle build output directory
2929
build
3030

31-
.idea
3231
*.iml
3332

3433
# Unignore the gradle wrapper

java/basics/.idea/compiler.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java/basics/build.gradle.kts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,22 @@ repositories {
99
mavenCentral()
1010
}
1111

12-
val restateVersion = "1.2.0"
12+
val restateVersion = "2.0.0"
1313

1414
dependencies {
1515
annotationProcessor("dev.restate:sdk-api-gen:$restateVersion")
1616

1717
// Restate SDK
18-
implementation("dev.restate:sdk-api:$restateVersion")
19-
implementation("dev.restate:sdk-http-vertx:$restateVersion")
20-
// To use Jackson to read/write state entries (optional)
21-
implementation("dev.restate:sdk-serde-jackson:$restateVersion")
18+
implementation("dev.restate:sdk-java-http:$restateVersion")
19+
20+
implementation("org.apache.logging.log4j:log4j-api:2.24.1")
2221

2322
// Jackson parameter names
2423
// https://github.com/FasterXML/jackson-modules-java8/tree/2.14/parameter-names
2524
implementation("com.fasterxml.jackson.module:jackson-module-parameter-names:2.16.1")
2625
// Jackson java8 types
2726
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.16.1")
2827
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.16.1")
29-
30-
// Logging (optional)
31-
implementation("org.apache.logging.log4j:log4j-core:2.24.1")
3228
}
3329

3430
// Set main class

java/basics/src/main/java/building_blocks/MyService.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package building_blocks;
22

33
import dev.restate.sdk.Context;
4-
import dev.restate.sdk.JsonSerdes;
54
import dev.restate.sdk.annotation.Handler;
65
import dev.restate.sdk.annotation.Service;
7-
import dev.restate.sdk.http.vertx.RestateHttpEndpointBuilder;
6+
import dev.restate.sdk.endpoint.Endpoint;
7+
import dev.restate.sdk.http.vertx.RestateHttpServer;
88
import virtual_objects.GreeterObjectClient;
99

1010
import java.time.Duration;
@@ -45,12 +45,12 @@ public void run(Context ctx) throws Exception {
4545

4646
// 4. DURABLE PROMISES: tracked by Restate, can be moved between processes and survive failures
4747
// Awakeables: block the workflow until notified by another handler
48-
var awakeable = ctx.awakeable(JsonSerdes.STRING);
48+
var awakeable = ctx.awakeable(String.class);
4949
// Wait on the promise
5050
// If the process crashes while waiting, Restate will recover the promise somewhere else
5151
String greeting = awakeable.await();
5252
// Another process can resolve the awakeable via its ID
53-
ctx.awakeableHandle(awakeable.id()).resolve(JsonSerdes.STRING, "hello");
53+
ctx.awakeableHandle(awakeable.id()).resolve(String.class, "hello");
5454

5555
// 5. DURABLE TIMERS: sleep or wait for a timeout, tracked by Restate and recoverable
5656
// When this runs on FaaS, the handler suspends and the timer is tracked by Restate
@@ -60,7 +60,7 @@ public void run(Context ctx) throws Exception {
6060
// Example of waiting on a promise (call/awakeable/...) or a timeout
6161
awakeable.await(Duration.ofSeconds(5000));
6262
// Example of scheduling a handler for later on
63-
GreeterObjectClient.fromContext(ctx, "my-obj-key").send(Duration.ofDays(1)).ungreet();
63+
GreeterObjectClient.fromContext(ctx, "my-obj-key").send().ungreet(Duration.ofDays(1));
6464

6565
// 7. PERSIST RESULTS: avoid re-execution of actions on retries
6666
// Use this for non-deterministic actions or interaction with APIs, DBs, ...
@@ -71,8 +71,6 @@ public void run(Context ctx) throws Exception {
7171
}
7272

7373
public static void main(String[] args) {
74-
RestateHttpEndpointBuilder.builder()
75-
.bind(new MyService())
76-
.buildAndListen();
74+
RestateHttpServer.listen(Endpoint.bind(new MyService()));
7775
}
7876
}

java/basics/src/main/java/durable_execution/SubscriptionService.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package durable_execution;
22

3-
import dev.restate.sdk.JsonSerdes;
43
import dev.restate.sdk.Context;
54
import dev.restate.sdk.annotation.Handler;
65
import dev.restate.sdk.annotation.Service;
7-
import dev.restate.sdk.http.vertx.RestateHttpEndpointBuilder;
6+
import dev.restate.sdk.endpoint.Endpoint;
7+
import dev.restate.sdk.http.vertx.RestateHttpServer;
88
import utils.SubscriptionRequest;
99

1010
import static utils.ExampleStubs.*;
@@ -40,7 +40,7 @@ public void add(Context ctx, SubscriptionRequest req) {
4040

4141
// ctx.run persists results of successful actions and skips execution on retries
4242
// Failed actions (timeouts, API downtime, etc.) get retried
43-
var payRef = ctx.run(JsonSerdes.STRING, () ->
43+
var payRef = ctx.run(String.class, () ->
4444
createRecurringPayment(req.creditCard(), paymentId));
4545

4646
for (String subscription : req.subscriptions()) {
@@ -50,9 +50,7 @@ public void add(Context ctx, SubscriptionRequest req) {
5050

5151
public static void main(String[] args) {
5252
// Create an HTTP endpoint to serve your services
53-
RestateHttpEndpointBuilder.builder()
54-
.bind(new SubscriptionService())
55-
.buildAndListen();
53+
RestateHttpServer.listen(Endpoint.bind(new SubscriptionService()));
5654
}
5755
}
5856

0 commit comments

Comments
 (0)