From 23749107a4d7b87386cc3eb4b8bff084c02e67f3 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Tue, 7 Jul 2026 19:03:13 +0200 Subject: [PATCH 1/3] Updating java sdk to 2.9.0 Bumps suggested JDK to 25 --- .github/workflows/pre-release.yml | 2 +- .github/workflows/release.yml | 24 -- .github/workflows/test.yml | 2 +- .tools/prepare_release_zip.sh | 3 - .tools/run_jvm_tests.sh | 3 - .tools/update_jvm_examples.sh | 3 - java/basics/build.gradle.kts | 14 +- .../main/java/building_blocks/MyService.java | 20 +- .../SubscriptionService.java | 14 +- .../java/virtual_objects/GreeterObject.java | 21 +- .../main/java/workflows/SignupWorkflow.java | 19 +- .../food-ordering/README.md | 2 +- .../food-ordering/app/build.gradle.kts | 2 +- .../app/restate-app/build.gradle.kts | 12 +- .../dev/restate/sdk/examples/AppMain.java | 12 +- .../restate/sdk/examples/DeliveryManager.java | 65 +++-- .../sdk/examples/DriverDeliveryMatcher.java | 31 +-- .../sdk/examples/DriverDigitalTwin.java | 87 +++--- .../sdk/examples/OrderStatusService.java | 19 +- .../restate/sdk/examples/OrderWorkflow.java | 28 +- .../examples/clients/RestaurantClient.java | 1 - .../external/DriverMobileAppSimulator.java | 78 +++--- .../app/restaurant/build.gradle.kts | 10 +- .../subway-fare-calculator/build.gradle.kts | 15 +- .../java/dev/restate/example/CardTracker.java | 69 ++--- .../java/dev/restate/example/Payments.java | 10 +- .../workflow-interpreter/pom.xml | 39 ++- .../ImageProcessingWorkflow.java | 22 +- .../restatestarter/PuppeteerService.java | 14 +- .../restatestarter/TransformerService.java | 18 +- .../java-gradle-lambda-cdk/README.md | 2 +- .../cdk/lambda-jvm-cdk-stack.ts | 6 +- .../lambda/build.gradle.kts | 7 +- .../src/main/java/my/example/Greeter.java | 12 +- .../integrations/java-spring/build.gradle.kts | 13 +- .../dev/restate/examples/ProductService.java | 37 ++- java/patterns-use-cases/build.gradle.kts | 10 +- .../my/example/batcher/BatchReceiver.java | 3 +- .../main/java/my/example/batcher/Batcher.java | 29 +- .../concurrenttasks/EmailVerification.java | 16 +- .../src/main/java/my/example/cron/Cron.java | 54 ++-- .../java/my/example/cron/TaskService.java | 3 +- .../java/my/example/durablerpc/MyClient.java | 7 +- .../my/example/durablerpc/ProductService.java | 8 +- .../eventenrichment/PackageTracker.java | 21 +- .../example/eventtransactions/UserFeed.java | 15 +- .../example/parallelizework/FanOutWorker.java | 13 +- .../example/parallelizework/utils/Utils.java | 6 +- .../my/example/queue/AsyncTaskWorker.java | 3 +- .../java/my/example/queue/TaskSubmitter.java | 10 +- .../my/example/sagas/BookingWorkflow.java | 19 +- .../schedulingtasks/PaymentTracker.java | 25 +- .../signalspayments/PaymentService.java | 16 +- .../statefulactors/MachineOperator.java | 22 +- .../utils/MachineOperations.java | 10 +- .../PaymentProcessor.java | 44 +-- .../accounts/Account.java | 14 +- .../example/syncasync/DataUploadService.java | 17 +- .../my/example/syncasync/UploadClient.java | 8 +- java/templates/java-gradle/README.md | 3 - java/templates/java-gradle/build.gradle.kts | 10 +- .../src/main/java/my/example/Greeter.java | 12 +- .../src/test/java/my/example/GreeterTest.java | 2 +- java/templates/java-maven-quarkus/pom.xml | 32 ++- .../src/main/java/org/acme/Greeter.java | 12 +- .../java-maven-spring-boot/README.md | 3 - java/templates/java-maven-spring-boot/pom.xml | 46 +++- .../com/example/restatestarter/Greeter.java | 18 +- .../restatestarter/HelloController.java | 2 +- .../example/restatestarter/GreeterTest.java | 2 +- java/templates/java-maven/README.md | 5 +- java/templates/java-maven/pom.xml | 45 +-- .../src/main/java/my/example/Greeter.java | 12 +- .../src/test/java/my/example/GreeterTest.java | 2 +- .../.agents/plugins/marketplace.json | 22 -- .../java-new-api-gradle/.ai/mcp/mcp.json | 7 - .../.aiassistant/rules/restate.md | 32 --- .../java-new-api-gradle/.claude/settings.json | 13 - java/templates/java-new-api-gradle/.gitignore | 34 --- java/templates/java-new-api-gradle/README.md | 17 -- .../java-new-api-gradle/build.gradle.kts | 38 --- .../gradle/wrapper/gradle-wrapper.jar | Bin 43764 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 - java/templates/java-new-api-gradle/gradlew | 251 ----------------- .../templates/java-new-api-gradle/gradlew.bat | 94 ------- .../java-new-api-gradle/settings.gradle.kts | 3 - .../src/main/java/my/example/Greeter.java | 35 --- .../src/main/java/my/example/Utils.java | 22 -- .../src/main/resources/log4j2.properties | 26 -- .../src/test/java/my/example/GreeterTest.java | 36 --- .../.agents/plugins/marketplace.json | 22 -- .../.ai/mcp/mcp.json | 7 - .../.aiassistant/rules/restate.md | 32 --- .../.claude/settings.json | 13 - .../.gitattributes | 2 - .../java-new-api-maven-spring-boot/.gitignore | 33 --- .../.mvn/wrapper/maven-wrapper.properties | 19 -- .../java-new-api-maven-spring-boot/README.md | 19 -- .../java-new-api-maven-spring-boot/mvnw | 259 ------------------ .../java-new-api-maven-spring-boot/mvnw.cmd | 149 ---------- .../java-new-api-maven-spring-boot/pom.xml | 65 ----- .../com/example/restatestarter/Greeter.java | 35 --- .../restatestarter/HelloController.java | 22 -- .../RestateStarterApplication.java | 15 - .../com/example/restatestarter/Utils.java | 22 -- .../src/main/resources/application.properties | 11 - .../example/restatestarter/GreeterTest.java | 37 --- .../.agents/plugins/marketplace.json | 22 -- .../java-new-api-maven/.ai/mcp/mcp.json | 7 - .../.aiassistant/rules/restate.md | 32 --- .../java-new-api-maven/.claude/settings.json | 13 - java/templates/java-new-api-maven/.gitignore | 28 -- .../.mvn/wrapper/maven-wrapper.properties | 19 -- java/templates/java-new-api-maven/README.md | 17 -- java/templates/java-new-api-maven/mvnw | 259 ------------------ java/templates/java-new-api-maven/mvnw.cmd | 149 ---------- java/templates/java-new-api-maven/pom.xml | 79 ------ .../src/main/java/my/example/Greeter.java | 35 --- .../src/main/java/my/example/Utils.java | 22 -- .../src/main/resources/log4j2.properties | 26 -- .../src/test/java/my/example/GreeterTest.java | 36 --- .../build.gradle.kts | 14 +- .../ConcertTicketingService.java | 11 +- .../example/communication/EmailService.java | 5 +- .../example/communication/PaymentService.java | 6 +- .../ParallelSubscriptionService.java | 10 +- .../main/java/my/example/events/Payments.java | 14 +- .../getstarted/SubscriptionService.java | 11 +- .../my/example/objects/UserSubscriptions.java | 18 +- .../my/example/sagas/SubscriptionSaga.java | 14 +- .../example/timers/PaymentsWithTimeout.java | 16 +- .../tour-of-workflows-java/build.gradle.kts | 14 +- .../java/my/example/WorkflowSubmitter.java | 8 +- .../java/my/example/utils/UserService.java | 7 +- .../SignupWithActivitiesWorkflow.java | 14 +- .../workflows/SignupWithEventsWorkflow.java | 21 +- .../workflows/SignupWithQueriesWorkflow.java | 27 +- .../workflows/SignupWithRetriesWorkflow.java | 12 +- .../workflows/SignupWithSagasWorkflow.java | 18 +- .../workflows/SignupWithSignalsWorkflow.java | 17 +- .../workflows/SignupWithTimersWorkflow.java | 23 +- .../my/example/workflows/SignupWorkflow.java | 12 +- kotlin/basics/build.gradle.kts | 23 +- .../main/kotlin/building_blocks/MyService.kt | 24 +- .../durable_execution/SubscriptionService.kt | 12 +- .../main/kotlin/utils/SubscriptionService.kt | 10 +- .../kotlin/virtual_objects/GreeterObject.kt | 18 +- .../main/kotlin/workflows/SignupWorkflow.kt | 16 +- .../food-ordering/README.md | 2 +- .../food-ordering/app/build.gradle.kts | 18 +- .../app/restate-app/build.gradle.kts | 16 +- .../dev/restate/sdk/examples/AppMain.kt | 5 +- .../sdk/examples/DriverDeliveryMatcher.kt | 26 +- .../restate/sdk/examples/DriverDigitalTwin.kt | 87 +++--- .../restate/sdk/examples/OrderETAService.kt | 23 +- .../dev/restate/sdk/examples/OrderWorkflow.kt | 72 ++--- .../external/DriverMobileAppSimulator.kt | 74 ++--- .../app/restaurant/build.gradle.kts | 10 +- .../restate/sdk/examples/RestaurantMain.kt | 11 +- .../gradle/libs.versions.toml | 5 +- .../server/build.gradle.kts | 19 +- .../restate/examples/noteapp/Application.kt | 18 +- .../kmp-android-todo-app/settings.gradle.kts | 4 + .../kotlin-gradle-lambda-cdk/README.md | 2 +- .../cdk/lambda-jvm-cdk-stack.ts | 6 +- .../lambda/build.gradle.kts | 26 +- .../lambda/settings.gradle.kts | 2 +- .../dev/restate/sdk/examples/Greeter.kt | 4 +- kotlin/patterns-use-cases/build.gradle.kts | 29 +- .../example/eventenrichment/PackageTracker.kt | 14 +- .../my/example/eventtransactions/UserFeed.kt | 12 +- .../example/parallelizework/FanOutWorker.kt | 13 +- .../my/example/parallelizework/stubs.kt | 6 +- .../my/example/queue/AsyncTaskService.kt | 3 +- .../kotlin/my/example/queue/TaskSubmitter.kt | 23 +- .../my/example/sagas/BookingWorkflow.kt | 14 +- .../example/schedulingtasks/PaymentTracker.kt | 20 +- .../build.gradle.kts | 23 +- .../com/example/restatestarter/Greeter.kt | 16 +- .../com/example/restatestarter/GreeterTest.kt | 10 +- .../templates/kotlin-gradle/build.gradle.kts | 23 +- .../src/main/kotlin/my/example/Greeter.kt | 10 +- 182 files changed, 1301 insertions(+), 3198 deletions(-) delete mode 100644 java/templates/java-new-api-gradle/.agents/plugins/marketplace.json delete mode 100644 java/templates/java-new-api-gradle/.ai/mcp/mcp.json delete mode 100644 java/templates/java-new-api-gradle/.aiassistant/rules/restate.md delete mode 100644 java/templates/java-new-api-gradle/.claude/settings.json delete mode 100644 java/templates/java-new-api-gradle/.gitignore delete mode 100644 java/templates/java-new-api-gradle/README.md delete mode 100644 java/templates/java-new-api-gradle/build.gradle.kts delete mode 100644 java/templates/java-new-api-gradle/gradle/wrapper/gradle-wrapper.jar delete mode 100644 java/templates/java-new-api-gradle/gradle/wrapper/gradle-wrapper.properties delete mode 100755 java/templates/java-new-api-gradle/gradlew delete mode 100644 java/templates/java-new-api-gradle/gradlew.bat delete mode 100644 java/templates/java-new-api-gradle/settings.gradle.kts delete mode 100644 java/templates/java-new-api-gradle/src/main/java/my/example/Greeter.java delete mode 100644 java/templates/java-new-api-gradle/src/main/java/my/example/Utils.java delete mode 100644 java/templates/java-new-api-gradle/src/main/resources/log4j2.properties delete mode 100644 java/templates/java-new-api-gradle/src/test/java/my/example/GreeterTest.java delete mode 100644 java/templates/java-new-api-maven-spring-boot/.agents/plugins/marketplace.json delete mode 100644 java/templates/java-new-api-maven-spring-boot/.ai/mcp/mcp.json delete mode 100644 java/templates/java-new-api-maven-spring-boot/.aiassistant/rules/restate.md delete mode 100644 java/templates/java-new-api-maven-spring-boot/.claude/settings.json delete mode 100644 java/templates/java-new-api-maven-spring-boot/.gitattributes delete mode 100644 java/templates/java-new-api-maven-spring-boot/.gitignore delete mode 100644 java/templates/java-new-api-maven-spring-boot/.mvn/wrapper/maven-wrapper.properties delete mode 100644 java/templates/java-new-api-maven-spring-boot/README.md delete mode 100755 java/templates/java-new-api-maven-spring-boot/mvnw delete mode 100644 java/templates/java-new-api-maven-spring-boot/mvnw.cmd delete mode 100644 java/templates/java-new-api-maven-spring-boot/pom.xml delete mode 100644 java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/Greeter.java delete mode 100644 java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/HelloController.java delete mode 100644 java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/RestateStarterApplication.java delete mode 100644 java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/Utils.java delete mode 100644 java/templates/java-new-api-maven-spring-boot/src/main/resources/application.properties delete mode 100644 java/templates/java-new-api-maven-spring-boot/src/test/java/com/example/restatestarter/GreeterTest.java delete mode 100644 java/templates/java-new-api-maven/.agents/plugins/marketplace.json delete mode 100644 java/templates/java-new-api-maven/.ai/mcp/mcp.json delete mode 100644 java/templates/java-new-api-maven/.aiassistant/rules/restate.md delete mode 100644 java/templates/java-new-api-maven/.claude/settings.json delete mode 100644 java/templates/java-new-api-maven/.gitignore delete mode 100644 java/templates/java-new-api-maven/.mvn/wrapper/maven-wrapper.properties delete mode 100644 java/templates/java-new-api-maven/README.md delete mode 100755 java/templates/java-new-api-maven/mvnw delete mode 100644 java/templates/java-new-api-maven/mvnw.cmd delete mode 100644 java/templates/java-new-api-maven/pom.xml delete mode 100644 java/templates/java-new-api-maven/src/main/java/my/example/Greeter.java delete mode 100644 java/templates/java-new-api-maven/src/main/java/my/example/Utils.java delete mode 100644 java/templates/java-new-api-maven/src/main/resources/log4j2.properties delete mode 100644 java/templates/java-new-api-maven/src/test/java/my/example/GreeterTest.java diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index aab88d9d..2168d48d 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -62,7 +62,7 @@ jobs: if: github.event.inputs.sdkJavaVersion != '' with: distribution: "temurin" - java-version: "21" + java-version: "25" - name: Setup Gradle if: github.event.inputs.sdkJavaVersion != '' uses: gradle/actions/setup-gradle@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 57f26521..edc704f7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,10 +37,7 @@ jobs: java-hello-world-gradle.zip java-hello-world-maven.zip - java-hello-world-new-api-gradle.zip - java-hello-world-new-api-maven.zip java-hello-world-maven-spring-boot.zip - java-hello-world-new-api-maven-spring-boot.zip java-hello-world-maven-quarkus.zip java-hello-world-lambda-cdk.zip java-tour-of-orchestration.zip @@ -145,27 +142,6 @@ jobs: with: source-directory: java/templates/java-maven-spring-boot destination-repo: java-spring-boot-template - copy-java-new-api-maven-template: - name: Copy Java New API Maven template to java-new-api-maven-template repo - uses: ./.github/workflows/copy-to-repo.yml - secrets: inherit - with: - source-directory: java/templates/java-new-api-maven - destination-repo: java-new-api-maven-template - copy-java-new-api-gradle-template: - name: Copy Java New API Gradle template to java-new-api-gradle-template repo - uses: ./.github/workflows/copy-to-repo.yml - secrets: inherit - with: - source-directory: java/templates/java-new-api-gradle - destination-repo: java-new-api-gradle-template - copy-java-new-api-spring-boot-template: - name: Copy Java New API Spring boot template to java-new-api-spring-boot-template repo - uses: ./.github/workflows/copy-to-repo.yml - secrets: inherit - with: - source-directory: java/templates/java-new-api-maven-spring-boot - destination-repo: java-new-api-spring-boot-template copy-kotlin-template: name: Copy Kotlin template to kotlin-template repo uses: ./.github/workflows/copy-to-repo.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d670f78e..c2d4bf8e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,7 +43,7 @@ jobs: RESTATE_DISABLE_TELEMETRY: "true" strategy: matrix: - jvm-version: [ 21 ] + jvm-version: [ 25 ] steps: - uses: actions/checkout@v3 diff --git a/.tools/prepare_release_zip.sh b/.tools/prepare_release_zip.sh index 9d7e76a9..33a928f2 100755 --- a/.tools/prepare_release_zip.sh +++ b/.tools/prepare_release_zip.sh @@ -34,10 +34,7 @@ create_release_zip java/integrations/java-gradle-lambda-cdk java-hello-world-lam create_release_zip java/patterns-use-cases java-patterns-use-cases create_release_zip java/templates/java-gradle java-hello-world-gradle create_release_zip java/templates/java-maven java-hello-world-maven -create_release_zip java/templates/java-new-api-gradle java-hello-world-new-api-gradle -create_release_zip java/templates/java-new-api-maven java-hello-world-new-api-maven create_release_zip java/templates/java-maven-spring-boot java-hello-world-maven-spring-boot -create_release_zip java/templates/java-new-api-maven-spring-boot java-hello-world-new-api-maven-spring-boot create_release_zip java/templates/java-maven-quarkus java-hello-world-maven-quarkus create_release_zip java/tutorials/tour-of-orchestration-java java-tour-of-orchestration create_release_zip java/tutorials/tour-of-workflows-java java-tour-of-workflows diff --git a/.tools/run_jvm_tests.sh b/.tools/run_jvm_tests.sh index cb9b3e66..161454ee 100755 --- a/.tools/run_jvm_tests.sh +++ b/.tools/run_jvm_tests.sh @@ -7,11 +7,8 @@ PROJECT_ROOT="$(dirname "$SELF_PATH")/.." pushd $PROJECT_ROOT/java/templates/java-gradle && ./gradlew --console=plain check && popd pushd $PROJECT_ROOT/java/templates/java-maven && mvn -B verify && popd -pushd $PROJECT_ROOT/java/templates/java-new-api-gradle && ./gradlew --console=plain check && popd -pushd $PROJECT_ROOT/java/templates/java-new-api-maven && mvn -B verify && popd pushd $PROJECT_ROOT/java/templates/java-maven-quarkus && mvn -B verify && popd pushd $PROJECT_ROOT/java/templates/java-maven-spring-boot && mvn -B verify && popd -pushd $PROJECT_ROOT/java/templates/java-new-api-maven-spring-boot && mvn -B verify && popd pushd $PROJECT_ROOT/kotlin/templates/kotlin-gradle && ./gradlew --console=plain check && popd pushd $PROJECT_ROOT/kotlin/templates/kotlin-gradle-spring-boot && ./gradlew --console=plain check && popd diff --git a/.tools/update_jvm_examples.sh b/.tools/update_jvm_examples.sh index c63a72cf..d287c183 100755 --- a/.tools/update_jvm_examples.sh +++ b/.tools/update_jvm_examples.sh @@ -38,11 +38,8 @@ function search_and_replace_version_maven() { search_and_replace_version_gradle $PROJECT_ROOT/java/templates/java-gradle search_and_replace_version_maven $PROJECT_ROOT/java/templates/java-maven -search_and_replace_version_gradle $PROJECT_ROOT/java/templates/java-new-api-gradle -search_and_replace_version_maven $PROJECT_ROOT/java/templates/java-new-api-maven search_and_replace_version_maven $PROJECT_ROOT/java/templates/java-maven-quarkus search_and_replace_version_maven $PROJECT_ROOT/java/templates/java-maven-spring-boot -search_and_replace_version_maven $PROJECT_ROOT/java/templates/java-new-api-maven-spring-boot search_and_replace_version_gradle $PROJECT_ROOT/kotlin/templates/kotlin-gradle search_and_replace_version_gradle $PROJECT_ROOT/kotlin/templates/kotlin-gradle-spring-boot diff --git a/java/basics/build.gradle.kts b/java/basics/build.gradle.kts index c032bd24..4c77fe2d 100644 --- a/java/basics/build.gradle.kts +++ b/java/basics/build.gradle.kts @@ -7,11 +7,9 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - annotationProcessor("dev.restate:sdk-api-gen:$restateVersion") - // Restate SDK implementation("dev.restate:sdk-java-http:$restateVersion") @@ -27,7 +25,7 @@ dependencies { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(25)) } } @@ -38,10 +36,18 @@ application { } else { mainClass.set("durable_execution.RoleUpdateService") } + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } tasks.withType { // Using -parameters allows to use Jackson ParameterName feature // https://github.com/FasterXML/jackson-modules-java8/tree/2.14/parameter-names options.compilerArgs.add("-parameters") +} + +tasks.named("test") { + useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } \ No newline at end of file diff --git a/java/basics/src/main/java/building_blocks/MyService.java b/java/basics/src/main/java/building_blocks/MyService.java index 39673f6d..a663a349 100644 --- a/java/basics/src/main/java/building_blocks/MyService.java +++ b/java/basics/src/main/java/building_blocks/MyService.java @@ -1,11 +1,11 @@ package building_blocks; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import dev.restate.sdk.endpoint.Endpoint; import dev.restate.sdk.http.vertx.RestateHttpServer; -import virtual_objects.GreeterObjectClient; +import virtual_objects.GreeterObject; import java.time.Duration; import java.util.UUID; @@ -31,43 +31,43 @@ public class MyService { // This handler can be called over HTTP at http://restate:8080/MyService/handlerName // Use the context to access Restate's durable building blocks @Handler - public void run(Context ctx) throws Exception { + public void run() throws Exception { // 1. IDEMPOTENCY: Add an idempotency key to the header of your requests // Restate deduplicates calls automatically. Nothing to do here. // 2. DURABLE RPC: Call other services without manual retry and deduplication logic // Restate persists all requests and ensures execution till completion - String result = GreeterObjectClient.fromContext(ctx, "my-obj-key").greet("hello").await(); + String result = Restate.virtualObject(GreeterObject.class, "my-obj-key").greet("hello"); // 3. DURABLE MESSAGING: send (delayed) messages to other services without deploying a message broker // Restate persists the timers and triggers execution - GreeterObjectClient.fromContext(ctx, "my-obj-key").send().greet("hello"); + Restate.virtualObjectHandle(GreeterObject.class, "my-obj-key").send(GreeterObject::greet, "hello"); // 4. DURABLE PROMISES: tracked by Restate, can be moved between processes and survive failures // Awakeables: block the workflow until notified by another handler - var awakeable = ctx.awakeable(String.class); + var awakeable = Restate.awakeable(String.class); // Wait on the promise // If the process crashes while waiting, Restate will recover the promise somewhere else String greeting = awakeable.await(); // Another process can resolve the awakeable via its ID - ctx.awakeableHandle(awakeable.id()).resolve(String.class, "hello"); + Restate.awakeableHandle(awakeable.id()).resolve(String.class, "hello"); // 5. DURABLE TIMERS: sleep or wait for a timeout, tracked by Restate and recoverable // When this runs on FaaS, the handler suspends and the timer is tracked by Restate // Example of durable recoverable sleep // If the service crashes two seconds later, Restate will invoke it after another 3 seconds - ctx.sleep(Duration.ofSeconds(5)); + Restate.sleep(Duration.ofSeconds(5)); // Example of waiting on a promise (call/awakeable/...) or a timeout awakeable.await(Duration.ofSeconds(5000)); // Example of scheduling a handler for later on - GreeterObjectClient.fromContext(ctx, "my-obj-key").send().ungreet(Duration.ofDays(1)); + Restate.virtualObjectHandle(GreeterObject.class, "my-obj-key").send(GreeterObject::ungreet, Duration.ofDays(1)); // 7. PERSIST RESULTS: avoid re-execution of actions on retries // Use this for non-deterministic actions or interaction with APIs, DBs, ... // For example, generate idempotency keys that are stable across retries // Then use these to call other APIs and let them deduplicate String paymentDeduplicationID = UUID.randomUUID().toString(); - ctx.run(() -> chargeBankAccount(paymentDeduplicationID, 100)); + Restate.run("charge-bank-account", () -> chargeBankAccount(paymentDeduplicationID, 100)); } public static void main(String[] args) { diff --git a/java/basics/src/main/java/durable_execution/SubscriptionService.java b/java/basics/src/main/java/durable_execution/SubscriptionService.java index 869befa8..e0d7e06a 100644 --- a/java/basics/src/main/java/durable_execution/SubscriptionService.java +++ b/java/basics/src/main/java/durable_execution/SubscriptionService.java @@ -1,6 +1,6 @@ package durable_execution; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import dev.restate.sdk.endpoint.Endpoint; @@ -33,18 +33,18 @@ public class SubscriptionService { @Handler - public void add(Context ctx, SubscriptionRequest req) { - // Restate persists the result of all `ctx` actions and recovers them after failures + public void add(SubscriptionRequest req) { + // Restate persists the result of all `Restate` actions and recovers them after failures // For example, generate a stable idempotency key: - var paymentId = ctx.random().nextUUID().toString(); + var paymentId = Restate.random().nextUUID().toString(); - // ctx.run persists results of successful actions and skips execution on retries + // Restate.run persists results of successful actions and skips execution on retries // Failed actions (timeouts, API downtime, etc.) get retried - var payRef = ctx.run(String.class, () -> + var payRef = Restate.run("createRecurringPayment", String.class, () -> createRecurringPayment(req.creditCard(), paymentId)); for (String subscription : req.subscriptions()) { - ctx.run(() -> createSubscription(req.userId(), subscription, payRef)); + Restate.run("createSubscription", () -> createSubscription(req.userId(), subscription, payRef)); } } diff --git a/java/basics/src/main/java/virtual_objects/GreeterObject.java b/java/basics/src/main/java/virtual_objects/GreeterObject.java index db31bea4..6a087f6c 100644 --- a/java/basics/src/main/java/virtual_objects/GreeterObject.java +++ b/java/basics/src/main/java/virtual_objects/GreeterObject.java @@ -10,7 +10,7 @@ */ package virtual_objects; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.endpoint.Endpoint; @@ -38,26 +38,29 @@ public class GreeterObject { StateKey.of("count", Integer.TYPE); @Handler - public String greet(ObjectContext ctx, String greeting) { + public String greet(String greeting) { + var state = Restate.state(); // Access the state attached to this object (this 'name') // State access and updates are exclusive and consistent with the invocations - int count = ctx.get(COUNT).orElse(0); + int count = state.get(COUNT).orElse(0); int newCount = count + 1; - ctx.set(COUNT, newCount); + state.set(COUNT, newCount); - return String.format( "%s %s, for the %d-th time", greeting, ctx.key(), newCount); + return String.format( "%s %s, for the %d-th time", greeting, Restate.key(), newCount); } @Handler - public String ungreet(ObjectContext ctx) { - int count = ctx.get(COUNT).orElse(0); + public String ungreet() { + var state = Restate.state(); + + int count = state.get(COUNT).orElse(0); if(count > 0){ int newCount = count - 1; - ctx.set(COUNT, newCount); + state.set(COUNT, newCount); } - return String.format("Dear %s, taking one greeting back: %d", ctx.key(), count); + return String.format("Dear %s, taking one greeting back: %d", Restate.key(), count); } public static void main(String[] args) { diff --git a/java/basics/src/main/java/workflows/SignupWorkflow.java b/java/basics/src/main/java/workflows/SignupWorkflow.java index 2559ec56..6f78e4fa 100644 --- a/java/basics/src/main/java/workflows/SignupWorkflow.java +++ b/java/basics/src/main/java/workflows/SignupWorkflow.java @@ -10,8 +10,7 @@ */ package workflows; -import dev.restate.sdk.SharedWorkflowContext; -import dev.restate.sdk.WorkflowContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Shared; import dev.restate.sdk.annotation.Workflow; import dev.restate.sdk.endpoint.Endpoint; @@ -41,21 +40,21 @@ public class SignupWorkflow { // --- The workflow logic --- @Workflow - public boolean run(WorkflowContext ctx, User user) { + public boolean run(User user) { // workflow ID = user ID; workflow runs once per user - String userId = ctx.key(); + String userId = Restate.key(); // Durably executed action; write to other system - ctx.run(() -> createUserEntry(user)); + Restate.run("createUserEntry", () -> createUserEntry(user)); // Sent user email with verification link - String secret = ctx.random().nextUUID().toString(); - ctx.run(() -> sendEmailWithLink(userId, user, secret)); + String secret = Restate.random().nextUUID().toString(); + Restate.run("sendEmail", () -> sendEmailWithLink(userId, user, secret)); // Wait until user clicked email verification link // Promise gets resolved or rejected by the other handlers String clickSecret = - ctx.promise(LINK_CLICKED) + Restate.promise(LINK_CLICKED) .future() .await(); @@ -65,9 +64,9 @@ public boolean run(WorkflowContext ctx, User user) { // --- Other handlers interact with the workflow via queries and signals --- @Shared - public void click(SharedWorkflowContext ctx, String secret) { + public void click(String secret) { // Send data to the workflow via a durable promise - ctx.promiseHandle(LINK_CLICKED).resolve(secret); + Restate.promiseHandle(LINK_CLICKED).resolve(secret); } public static void main(String[] args) { diff --git a/java/end-to-end-applications/food-ordering/README.md b/java/end-to-end-applications/food-ordering/README.md index fe840a9f..83751698 100644 --- a/java/end-to-end-applications/food-ordering/README.md +++ b/java/end-to-end-applications/food-ordering/README.md @@ -86,7 +86,7 @@ The flow of an incoming order is as follows: 2. It then calls the `OrderStatusService` to create a new order in the system. The `OrderStatusService` is a virtual object which tracks the status of each order by storing it in Restate's key-value store. 3. The order workflow then triggers the payment by calling a third-party payment provider (implemented as a stub in this example). To do this, the order workflow first generates a stable idempotency token provided by the SDK, and then uses this to call the payment provider. The payment provider can deduplicate retries via the idempotency key. 4. The workflow then sets the order status to `SCHEDULED` and sets a timer to continue processing after the delivery delay has passed. For example, if a customer ordered food for later in the day, the order will be scheduled for preparation at the requested time. If any failures occur during the sleep, Restate makes sure that the workflow will still wake up on time. - 5. Once the timer fires, the order workflow creates an awakeable and sends a request to the restaurant point-of-sales system to start the preparation. This is done via an HTTP request wrapped in `ctx.run` to log the result in Restate. The status of the order is set to `IN_PREPARATION`. The restaurant will use the awakeable callback to signal when the prepration is done. Once this happens, the order workflow will continue and set the order status to `SCHEDULING_DELIVERY`. + 5. Once the timer fires, the order workflow creates an awakeable and sends a request to the restaurant point-of-sales system to start the preparation. This is done via an HTTP request wrapped in `Restate.run` to log the result in Restate. The status of the order is set to `IN_PREPARATION`. The restaurant will use the awakeable callback to signal when the prepration is done. Once this happens, the order workflow will continue and set the order status to `SCHEDULING_DELIVERY`. 6. Finally, the order workflow calls the delivery manager (`DeliveryManager.java`) to schedule the delivery of the order (see description below). It does this by using an awakeable, that the delivery manager will use to signal when the delivery is done. Once the delivery is done, the order workflow will set the order status to `DELIVERED`. ### The delivery workflow diff --git a/java/end-to-end-applications/food-ordering/app/build.gradle.kts b/java/end-to-end-applications/food-ordering/app/build.gradle.kts index 43d91a3f..73ee9c08 100644 --- a/java/end-to-end-applications/food-ordering/app/build.gradle.kts +++ b/java/end-to-end-applications/food-ordering/app/build.gradle.kts @@ -12,7 +12,7 @@ allprojects { java { // Configure the java toolchain to use. If not found, it will be downloaded automatically - toolchain { languageVersion = JavaLanguageVersion.of(17) } + toolchain { languageVersion = JavaLanguageVersion.of(25) } } } diff --git a/java/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts b/java/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts index 8efad182..e829124f 100644 --- a/java/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts +++ b/java/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts @@ -11,12 +11,10 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { // Restate SDK - annotationProcessor("dev.restate:sdk-api-gen:$restateVersion") - implementation("dev.restate:sdk-java-http:$restateVersion") // Jackson parameter names @@ -36,6 +34,14 @@ dependencies { // Set main class application { mainClass.set("dev.restate.sdk.examples.AppMain") + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") +} + +tasks.named("test") { + useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } jib { diff --git a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/AppMain.java b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/AppMain.java index f40f96ef..62ed1eca 100644 --- a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/AppMain.java +++ b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/AppMain.java @@ -11,18 +11,16 @@ package dev.restate.sdk.examples; - import dev.restate.sdk.endpoint.Endpoint; import dev.restate.sdk.http.vertx.RestateHttpServer; public class AppMain { public static void main(String[] args) { RestateHttpServer.listen( - Endpoint.bind(new OrderWorkflow()) - .bind(new OrderStatusService()) - .bind(new DeliveryManager()) - .bind(new DriverDeliveryMatcher()) - .bind(new DriverDigitalTwin()) - ); + Endpoint.bind(new OrderWorkflow()) + .bind(new OrderStatusService()) + .bind(new DeliveryManager()) + .bind(new DriverDeliveryMatcher()) + .bind(new DriverDigitalTwin())); } } diff --git a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DeliveryManager.java b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DeliveryManager.java index 690eb81e..58ef0680 100644 --- a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DeliveryManager.java +++ b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DeliveryManager.java @@ -11,13 +11,13 @@ package dev.restate.sdk.examples; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; -import dev.restate.sdk.examples.types.*; -import dev.restate.sdk.examples.utils.GeoUtils; import dev.restate.sdk.common.StateKey; import dev.restate.sdk.common.TerminalException; +import dev.restate.sdk.examples.types.*; +import dev.restate.sdk.examples.utils.GeoUtils; /** * Manages the delivery of the order to the customer. Keyed by the order ID (similar to the @@ -35,12 +35,14 @@ public class DeliveryManager { * Gets called by the OrderService when a new order has been prepared and needs to be delivered. */ @Handler - public void start(ObjectContext ctx, DeliveryRequest request) throws TerminalException { - String orderId = ctx.key(); + public void start(DeliveryRequest request) throws TerminalException { + String orderId = Restate.key(); // Temporary placeholder: random location - var restaurantLocation = ctx.run(Location.class, GeoUtils::randomLocation); - var customerLocation = ctx.run(Location.class, GeoUtils::randomLocation); + var restaurantLocation = + Restate.run("restaurant location", Location.class, GeoUtils::randomLocation); + var customerLocation = + Restate.run("customer location", Location.class, GeoUtils::randomLocation); // Store the delivery information in Restate's state store DeliveryInformation deliveryInfo = @@ -51,29 +53,26 @@ public void start(ObjectContext ctx, DeliveryRequest request) throws TerminalExc restaurantLocation, customerLocation, false); - ctx.set(DELIVERY_INFO, deliveryInfo); + Restate.state().set(DELIVERY_INFO, deliveryInfo); // Acquire a driver - var driverAwakeable = ctx.awakeable(String.class); - DriverDeliveryMatcherClient.fromContext(ctx, GeoUtils.DEMO_REGION) - .send() - .requestDriverForDelivery(driverAwakeable.id()); + var driverAwakeable = Restate.awakeable(String.class); + Restate.virtualObjectHandle(DriverDeliveryMatcher.class, GeoUtils.DEMO_REGION) + .send(DriverDeliveryMatcher::requestDriverForDelivery, driverAwakeable.id()); // Wait until the driver pool service has located a driver // This awakeable gets resolved either immediately when there is a pending delivery // or later, when a new delivery comes in. var driverId = driverAwakeable.await(); // Assign the driver to the job - DriverDigitalTwinClient.fromContext(ctx, driverId) + Restate.virtualObject(DriverDigitalTwin.class, driverId) .assignDeliveryJob( new AssignDeliveryRequest( - orderId, request.getRestaurantId(), restaurantLocation, customerLocation)) - .await(); + orderId, request.getRestaurantId(), restaurantLocation, customerLocation)); // Update the status of the order to "waiting for the driver" - OrderStatusServiceClient.fromContext(ctx, orderId) - .send() - .setStatus(StatusEnum.WAITING_FOR_DRIVER); + Restate.virtualObjectHandle(OrderStatusService.class, orderId) + .send(OrderStatusService::setStatus, StatusEnum.WAITING_FOR_DRIVER); } /** @@ -81,20 +80,23 @@ public void start(ObjectContext ctx, DeliveryRequest request) throws TerminalExc * when the driver has arrived at the restaurant. */ @Handler - public void notifyDeliveryPickup(ObjectContext ctx) throws TerminalException { + public void notifyDeliveryPickup() throws TerminalException { + var state = Restate.state(); // Retrieve the delivery information for this delivery var delivery = - ctx.get(DELIVERY_INFO) + state + .get(DELIVERY_INFO) .orElseThrow( () -> new TerminalException( "Delivery was picked up but there is no ongoing delivery.")); // Update the status of the delivery to "picked up" delivery.notifyPickup(); - ctx.set(DELIVERY_INFO, delivery); + state.set(DELIVERY_INFO, delivery); // Update the status of the order to "in delivery" - OrderStatusServiceClient.fromContext(ctx, ctx.key()).send().setStatus(StatusEnum.IN_DELIVERY); + Restate.virtualObjectHandle(OrderStatusService.class, Restate.key()) + .send(OrderStatusService::setStatus, StatusEnum.IN_DELIVERY); } /** @@ -102,19 +104,21 @@ public void notifyDeliveryPickup(ObjectContext ctx) throws TerminalException { * when the driver has delivered the order to the customer. */ @Handler - public void notifyDeliveryDelivered(ObjectContext ctx) throws TerminalException { + public void notifyDeliveryDelivered() throws TerminalException { + var state = Restate.state(); // Retrieve the delivery information for this delivery var delivery = - ctx.get(DELIVERY_INFO) + state + .get(DELIVERY_INFO) .orElseThrow( () -> new TerminalException( "Delivery was delivered but there is no ongoing delivery.")); // Order has been delivered, so state can be cleared - ctx.clear(DELIVERY_INFO); + state.clear(DELIVERY_INFO); // Notify the OrderService that the delivery has been completed - ctx.awakeableHandle(delivery.getCallbackId()).resolve(Void.class, null); + Restate.awakeableHandle(delivery.getCallbackId()).resolve(Void.class, null); } /** @@ -123,11 +127,11 @@ public void notifyDeliveryDelivered(ObjectContext ctx) throws TerminalException * has moved to a new location. */ @Handler - public void handleDriverLocationUpdate(ObjectContext ctx, Location newLocation) - throws TerminalException { + public void handleDriverLocationUpdate(Location newLocation) throws TerminalException { // Retrieve the delivery information for this delivery var delivery = - ctx.get(DELIVERY_INFO) + Restate.state() + .get(DELIVERY_INFO) .orElseThrow( () -> new TerminalException( @@ -142,6 +146,7 @@ public void handleDriverLocationUpdate(ObjectContext ctx, Location newLocation) delivery.getRestaurantLocation(), delivery.getCustomerLocation()); // Update the ETA of the order - OrderStatusServiceClient.fromContext(ctx, ctx.key()).send().setETA(eta); + Restate.virtualObjectHandle(OrderStatusService.class, Restate.key()) + .send(OrderStatusService::setETA, eta); } } diff --git a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DriverDeliveryMatcher.java b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DriverDeliveryMatcher.java index 42cee583..b9bae3b0 100644 --- a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DriverDeliveryMatcher.java +++ b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DriverDeliveryMatcher.java @@ -11,14 +11,12 @@ package dev.restate.sdk.examples; -import com.fasterxml.jackson.core.type.TypeReference; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.common.StateKey; import dev.restate.sdk.common.TerminalException; import dev.restate.serde.TypeRef; - import java.util.LinkedList; import java.util.Queue; @@ -43,23 +41,24 @@ public class DriverDeliveryMatcher { * in line. If no pending deliveries, driver is added to the available driver pool */ @Handler - public void setDriverAvailable(ObjectContext ctx, String driverId) throws TerminalException { - var pendingDeliveries = ctx.get(PENDING_DELIVERIES).orElse(new LinkedList<>()); + public void setDriverAvailable(String driverId) throws TerminalException { + var state = Restate.state(); + var pendingDeliveries = state.get(PENDING_DELIVERIES).orElse(new LinkedList<>()); // If there is a pending delivery, assign it to the driver var nextDelivery = pendingDeliveries.poll(); if (nextDelivery != null) { // Update the queue in state. Delivery was removed. - ctx.set(PENDING_DELIVERIES, pendingDeliveries); + state.set(PENDING_DELIVERIES, pendingDeliveries); // Notify that delivery is ongoing - ctx.awakeableHandle(nextDelivery).resolve(String.class, driverId); + Restate.awakeableHandle(nextDelivery).resolve(String.class, driverId); return; } // Otherwise remember driver as available - var availableDrivers = ctx.get(AVAILABLE_DRIVERS).orElse(new LinkedList<>()); + var availableDrivers = state.get(AVAILABLE_DRIVERS).orElse(new LinkedList<>()); availableDrivers.offer(driverId); - ctx.set(AVAILABLE_DRIVERS, availableDrivers); + state.set(AVAILABLE_DRIVERS, availableDrivers); } /** @@ -67,23 +66,23 @@ public void setDriverAvailable(ObjectContext ctx, String driverId) throws Termin * available. If no available drivers, the delivery is added to the pending deliveries queue */ @Handler - public void requestDriverForDelivery(ObjectContext ctx, String deliveryCallbackId) - throws TerminalException { - var availableDrivers = ctx.get(AVAILABLE_DRIVERS).orElse(new LinkedList<>()); + public void requestDriverForDelivery(String deliveryCallbackId) throws TerminalException { + var state = Restate.state(); + var availableDrivers = state.get(AVAILABLE_DRIVERS).orElse(new LinkedList<>()); // If a driver is available, assign the delivery right away var nextAvailableDriver = availableDrivers.poll(); if (nextAvailableDriver != null) { // Remove driver from the pool - ctx.set(AVAILABLE_DRIVERS, availableDrivers); + state.set(AVAILABLE_DRIVERS, availableDrivers); // Notify that delivery is ongoing - ctx.awakeableHandle(deliveryCallbackId).resolve(String.class, nextAvailableDriver); + Restate.awakeableHandle(deliveryCallbackId).resolve(String.class, nextAvailableDriver); return; } // otherwise store the delivery request until a new driver becomes available - var pendingDeliveries = ctx.get(PENDING_DELIVERIES).orElse(new LinkedList<>()); + var pendingDeliveries = state.get(PENDING_DELIVERIES).orElse(new LinkedList<>()); pendingDeliveries.offer(deliveryCallbackId); - ctx.set(PENDING_DELIVERIES, pendingDeliveries); + state.set(PENDING_DELIVERIES, pendingDeliveries); } } diff --git a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DriverDigitalTwin.java b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DriverDigitalTwin.java index b9818402..ecd5a315 100644 --- a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DriverDigitalTwin.java +++ b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/DriverDigitalTwin.java @@ -11,16 +11,15 @@ package dev.restate.sdk.examples; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; +import dev.restate.sdk.common.StateKey; +import dev.restate.sdk.common.TerminalException; import dev.restate.sdk.examples.types.AssignDeliveryRequest; import dev.restate.sdk.examples.types.AssignedDelivery; import dev.restate.sdk.examples.types.DriverStatus; import dev.restate.sdk.examples.types.Location; -import dev.restate.sdk.common.StateKey; -import dev.restate.sdk.common.TerminalException; - import java.util.Optional; /** @@ -48,11 +47,12 @@ public class DriverDigitalTwin { * (DriverMobileAppSimulator) calls this method. */ @Handler - public void setDriverAvailable(ObjectContext ctx, String region) throws TerminalException { - expectStatus(ctx, DriverStatus.IDLE); + public void setDriverAvailable(String region) throws TerminalException { + expectStatus(DriverStatus.IDLE); - ctx.set(DRIVER_STATUS, DriverStatus.WAITING_FOR_WORK); - DriverDeliveryMatcherClient.fromContext(ctx, region).send().setDriverAvailable(ctx.key()); + Restate.state().set(DRIVER_STATUS, DriverStatus.WAITING_FOR_WORK); + Restate.virtualObjectHandle(DriverDeliveryMatcher.class, region) + .send(DriverDeliveryMatcher::setDriverAvailable, Restate.key()); } /** @@ -61,89 +61,90 @@ public void setDriverAvailable(ObjectContext ctx, String region) throws Terminal * location. */ @Handler - public void assignDeliveryJob(ObjectContext ctx, AssignDeliveryRequest request) - throws TerminalException { - expectStatus(ctx, DriverStatus.WAITING_FOR_WORK); + public void assignDeliveryJob(AssignDeliveryRequest request) throws TerminalException { + expectStatus(DriverStatus.WAITING_FOR_WORK); + var state = Restate.state(); // Update the status and assigned delivery information of the driver - ctx.set(DRIVER_STATUS, DriverStatus.DELIVERING); - ctx.set( + state.set(DRIVER_STATUS, DriverStatus.DELIVERING); + state.set( ASSIGNED_DELIVERY, new AssignedDelivery( - ctx.key(), + Restate.key(), request.getOrderId(), request.getRestaurantId(), request.getRestaurantLocation(), request.getCustomerLocation())); // Notify current location to the delivery service - ctx.get(DRIVER_LOCATION) + state + .get(DRIVER_LOCATION) .ifPresent( loc -> - DeliveryManagerClient.fromContext(ctx, request.getOrderId()) - .send() - .handleDriverLocationUpdate(loc)); + Restate.virtualObjectHandle(DeliveryManager.class, request.getOrderId()) + .send(DeliveryManager::handleDriverLocationUpdate, loc)); } /** * Gets called by the driver's mobile app when he has picked up the delivery from the restaurant. */ @Handler - public void notifyDeliveryPickup(ObjectContext ctx) throws TerminalException { - expectStatus(ctx, DriverStatus.DELIVERING); + public void notifyDeliveryPickup() throws TerminalException { + expectStatus(DriverStatus.DELIVERING); + var state = Restate.state(); // Retrieve the ongoing delivery and update its status var currentDelivery = - ctx.get(ASSIGNED_DELIVERY) + state + .get(ASSIGNED_DELIVERY) .orElseThrow( () -> new TerminalException( "Driver is in status DELIVERING but there is no current delivery set.")); currentDelivery.notifyPickup(); - ctx.set(ASSIGNED_DELIVERY, currentDelivery); + state.set(ASSIGNED_DELIVERY, currentDelivery); // Update the status of the delivery in the delivery manager - DeliveryManagerClient.fromContext(ctx, currentDelivery.getOrderId()) - .send() - .notifyDeliveryPickup(); + Restate.virtualObjectHandle(DeliveryManager.class, currentDelivery.getOrderId()) + .send(DeliveryManager::notifyDeliveryPickup); } /** Gets called by the driver's mobile app when he has delivered the order to the customer. */ @Handler - public void notifyDeliveryDelivered(ObjectContext ctx) throws TerminalException { - expectStatus(ctx, DriverStatus.DELIVERING); + public void notifyDeliveryDelivered() throws TerminalException { + expectStatus(DriverStatus.DELIVERING); + var state = Restate.state(); // Retrieve the ongoing delivery var assignedDelivery = - ctx.get(ASSIGNED_DELIVERY) + state + .get(ASSIGNED_DELIVERY) .orElseThrow( () -> new TerminalException( "Driver is in status DELIVERING but there is no current delivery set.")); // Clean up the state - ctx.clear(ASSIGNED_DELIVERY); + state.clear(ASSIGNED_DELIVERY); // Notify the delivery service that the delivery was delivered - DeliveryManagerClient.fromContext(ctx, assignedDelivery.getOrderId()) - .send() - .notifyDeliveryDelivered(); + Restate.virtualObjectHandle(DeliveryManager.class, assignedDelivery.getOrderId()) + .send(DeliveryManager::notifyDeliveryDelivered); // Update the status of the driver to idle - ctx.set(DRIVER_STATUS, DriverStatus.IDLE); + state.set(DRIVER_STATUS, DriverStatus.IDLE); } /** Gets called by the driver's mobile app when he has moved to a new location. */ @Handler - public void handleDriverLocationUpdateEvent(ObjectContext ctx, Location location) { + public void handleDriverLocationUpdateEvent(Location location) { // Update the location of the driver - ctx.set(DRIVER_LOCATION, location); + Restate.state().set(DRIVER_LOCATION, location); // Update the location of the delivery, if there is one - Optional assignedDelivery = ctx.get(ASSIGNED_DELIVERY); + Optional assignedDelivery = Restate.state().get(ASSIGNED_DELIVERY); if (assignedDelivery.isPresent()) { - DeliveryManagerClient.fromContext(ctx, assignedDelivery.get().getOrderId()) - .send() - .handleDriverLocationUpdate(location); + Restate.virtualObjectHandle(DeliveryManager.class, assignedDelivery.get().getOrderId()) + .send(DeliveryManager::handleDriverLocationUpdate, location); } } @@ -153,16 +154,16 @@ public void handleDriverLocationUpdateEvent(ObjectContext ctx, Location location * got assigned to him. */ @Handler - public Optional getAssignedDelivery(ObjectContext ctx) { - return ctx.get(ASSIGNED_DELIVERY); + public Optional getAssignedDelivery() { + return Restate.state().get(ASSIGNED_DELIVERY); } // Utility function to check if the driver is in the expected state // If the driver is in a different state, a terminal exception is thrown that stops any retries // from taking place. // Is only called from inside the driver service. - private void expectStatus(ObjectContext ctx, DriverStatus expectedStatus) { - var currentStatus = ctx.get(DRIVER_STATUS).orElse(DriverStatus.IDLE); + private void expectStatus(DriverStatus expectedStatus) { + var currentStatus = Restate.state().get(DRIVER_STATUS).orElse(DriverStatus.IDLE); if (currentStatus != expectedStatus) { throw new TerminalException( diff --git a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/OrderStatusService.java b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/OrderStatusService.java index 804fe18e..9f73f5eb 100644 --- a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/OrderStatusService.java +++ b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/OrderStatusService.java @@ -11,12 +11,12 @@ package dev.restate.sdk.examples; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; -import dev.restate.sdk.examples.types.StatusEnum; import dev.restate.sdk.common.StateKey; import dev.restate.sdk.common.TerminalException; +import dev.restate.sdk.examples.types.StatusEnum; @VirtualObject public class OrderStatusService { @@ -45,19 +45,20 @@ public StatusEnum getStatus() { /** Gets called by the webUI frontend to display the status of an order. */ @Handler - public OrderStatus get(ObjectContext ctx) throws TerminalException { - var status = ctx.get(ORDER_STATUS).orElse(StatusEnum.NEW); - var eta = ctx.get(ORDER_ETA).orElse(-1L); + public OrderStatus get() throws TerminalException { + var state = Restate.state(); + var status = state.get(ORDER_STATUS).orElse(StatusEnum.NEW); + var eta = state.get(ORDER_ETA).orElse(-1L); return new OrderStatus(status, eta); } @Handler - public void setStatus(ObjectContext ctx, StatusEnum statusEnum) throws TerminalException { - ctx.set(ORDER_STATUS, statusEnum); + public void setStatus(StatusEnum statusEnum) throws TerminalException { + Restate.state().set(ORDER_STATUS, statusEnum); } @Handler - public void setETA(ObjectContext ctx, long eta) throws TerminalException { - ctx.set(ORDER_ETA, eta); + public void setETA(long eta) throws TerminalException { + Restate.state().set(ORDER_ETA, eta); } } diff --git a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/OrderWorkflow.java b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/OrderWorkflow.java index 5049b997..0cfe61b5 100644 --- a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/OrderWorkflow.java +++ b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/OrderWorkflow.java @@ -11,16 +11,15 @@ package dev.restate.sdk.examples; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; +import dev.restate.sdk.common.TerminalException; import dev.restate.sdk.examples.clients.PaymentClient; import dev.restate.sdk.examples.clients.RestaurantClient; import dev.restate.sdk.examples.types.DeliveryRequest; import dev.restate.sdk.examples.types.OrderRequest; import dev.restate.sdk.examples.types.StatusEnum; -import dev.restate.sdk.common.TerminalException; - import java.time.Duration; /** @@ -34,18 +33,18 @@ public class OrderWorkflow { private final PaymentClient paymentClnt = PaymentClient.get(); @Handler - public void create(Context ctx, OrderRequest order) throws TerminalException { + public void create(OrderRequest order) throws TerminalException { String id = order.getOrderId(); - var orderStatusService = OrderStatusServiceClient.fromContext(ctx, id); + var orderStatusService = Restate.virtualObject(OrderStatusService.class, id); // 1. Set status orderStatusService.setStatus(StatusEnum.CREATED); // 2. Handle payment - String token = ctx.random().nextUUID().toString(); + String token = Restate.random().nextUUID().toString(); boolean paid = - ctx.run( + Restate.run( "process payment", Boolean.TYPE, () -> paymentClnt.charge(id, token, order.getTotalCost())); @@ -58,22 +57,23 @@ public void create(Context ctx, OrderRequest order) throws TerminalException { // 3. Schedule preparation orderStatusService.setStatus(StatusEnum.SCHEDULED); - ctx.sleep(Duration.ofMillis(order.getDeliveryDelay())); + Restate.sleep(Duration.ofMillis(order.getDeliveryDelay())); // 4. Trigger preparation - var preparationFuture = ctx.awakeable(Void.class); - ctx.run("notify restaurant", () -> restaurant.prepare(id, preparationFuture.id())); + var preparationFuture = Restate.awakeable(Void.class); + Restate.run("notify restaurant", () -> restaurant.prepare(id, preparationFuture.id())); orderStatusService.setStatus(StatusEnum.IN_PREPARATION); preparationFuture.await(); orderStatusService.setStatus(StatusEnum.SCHEDULING_DELIVERY); // 5. Find a driver and start delivery - var deliveryAwakeable = ctx.awakeable(Void.class); + var deliveryAwakeable = Restate.awakeable(Void.class); - DeliveryManagerClient.fromContext(ctx, id) - .send() - .start(new DeliveryRequest(order.getRestaurantId(), deliveryAwakeable.id())); + Restate.virtualObjectHandle(DeliveryManager.class, id) + .send( + DeliveryManager::start, + new DeliveryRequest(order.getRestaurantId(), deliveryAwakeable.id())); deliveryAwakeable.await(); orderStatusService.setStatus(StatusEnum.DELIVERED); } diff --git a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/clients/RestaurantClient.java b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/clients/RestaurantClient.java index 1200eec8..74913b64 100644 --- a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/clients/RestaurantClient.java +++ b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/clients/RestaurantClient.java @@ -12,7 +12,6 @@ package dev.restate.sdk.examples.clients; import dev.restate.sdk.common.TerminalException; - import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; diff --git a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/external/DriverMobileAppSimulator.java b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/external/DriverMobileAppSimulator.java index 6b32ff4d..a542c267 100644 --- a/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/external/DriverMobileAppSimulator.java +++ b/java/end-to-end-applications/food-ordering/app/restate-app/src/main/java/dev/restate/sdk/examples/external/DriverMobileAppSimulator.java @@ -11,20 +11,20 @@ package dev.restate.sdk.examples.external; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; +import dev.restate.sdk.common.StateKey; +import dev.restate.sdk.common.TerminalException; import dev.restate.sdk.endpoint.Endpoint; import dev.restate.sdk.examples.*; import dev.restate.sdk.examples.clients.KafkaPublisher; import dev.restate.sdk.examples.types.AssignedDelivery; import dev.restate.sdk.examples.types.Location; import dev.restate.sdk.examples.utils.GeoUtils; -import java.time.Duration; import dev.restate.sdk.http.vertx.RestateHttpServer; -import dev.restate.sdk.common.StateKey; -import dev.restate.sdk.common.TerminalException; import dev.restate.serde.jackson.JacksonSerdes; +import java.time.Duration; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -54,24 +54,26 @@ public class DriverMobileAppSimulator { /** Mimics the driver setting himself to available in the app */ @Handler - public void startDriver(ObjectContext ctx) throws TerminalException { + public void startDriver() throws TerminalException { + var state = Restate.state(); // If this driver was already created, do nothing - if (ctx.get(CURRENT_LOCATION).isPresent()) { + if (state.get(CURRENT_LOCATION).isPresent()) { return; } - logger.info("Starting driver " + ctx.key()); - var location = ctx.run(Location.class, GeoUtils::randomLocation); - ctx.set(CURRENT_LOCATION, location); - producer.sendDriverUpdate(ctx.key(), JacksonSerdes.of(Location.class).serialize(location).toByteArray()); + logger.info("Starting driver " + Restate.key()); + var location = Restate.run("current location", Location.class, GeoUtils::randomLocation); + state.set(CURRENT_LOCATION, location); + producer.sendDriverUpdate( + Restate.key(), JacksonSerdes.of(Location.class).serialize(location).toByteArray()); // Tell the digital twin of the driver in the food ordering app, that he is available - DriverDigitalTwinClient.fromContext(ctx, ctx.key()) - .setDriverAvailable(GeoUtils.DEMO_REGION) - .await(); + Restate.virtualObject(DriverDigitalTwin.class, Restate.key()) + .setDriverAvailable(GeoUtils.DEMO_REGION); // Start polling for work - DriverMobileAppSimulatorClient.fromContext(ctx, ctx.key()).send().pollForWork(); + Restate.virtualObjectHandle(DriverMobileAppSimulator.class, Restate.key()) + .send(DriverMobileAppSimulator::pollForWork); } /** @@ -79,16 +81,16 @@ public void startDriver(ObjectContext ctx) throws TerminalException { * again after a short delay. */ @Handler - public void pollForWork(ObjectContext ctx) throws TerminalException { - var thisDriverSim = DriverMobileAppSimulatorClient.fromContext(ctx, ctx.key()); + public void pollForWork() throws TerminalException { + var thisDriverSim = Restate.virtualObjectHandle(DriverMobileAppSimulator.class, Restate.key()); // Ask the digital twin of the driver in the food ordering app, if he already got a job assigned var optionalAssignedDelivery = - DriverDigitalTwinClient.fromContext(ctx, ctx.key()).getAssignedDelivery().await(); + Restate.virtualObject(DriverDigitalTwin.class, Restate.key()).getAssignedDelivery(); // If there is no job, ask again after a short delay if (optionalAssignedDelivery.isEmpty()) { - thisDriverSim.send().pollForWork(Duration.ofMillis(POLL_INTERVAL)); + thisDriverSim.send(DriverMobileAppSimulator::pollForWork, Duration.ofMillis(POLL_INTERVAL)); return; } @@ -101,21 +103,24 @@ public void pollForWork(ObjectContext ctx) throws TerminalException { delivery.getRestaurantId(), delivery.getRestaurantLocation(), delivery.getCustomerLocation()); - ctx.set(ASSIGNED_DELIVERY, newAssignedDelivery); + Restate.state().set(ASSIGNED_DELIVERY, newAssignedDelivery); // Start moving to the delivery pickup location - thisDriverSim.send().move(Duration.ofMillis(MOVE_INTERVAL)); + thisDriverSim.send(DriverMobileAppSimulator::move, Duration.ofMillis(MOVE_INTERVAL)); } /** Periodically lets the food ordering app know the new location */ @Handler - public void move(ObjectContext ctx) throws TerminalException { - var thisDriverSim = DriverMobileAppSimulatorClient.fromContext(ctx, ctx.key()); + public void move() throws TerminalException { + var state = Restate.state(); + var thisDriverSim = Restate.virtualObjectHandle(DriverMobileAppSimulator.class, Restate.key()); var assignedDelivery = - ctx.get(ASSIGNED_DELIVERY) + state + .get(ASSIGNED_DELIVERY) .orElseThrow(() -> new TerminalException("Driver has no delivery assigned")); var currentLocation = - ctx.get(CURRENT_LOCATION) + state + .get(CURRENT_LOCATION) .orElseThrow(() -> new TerminalException("Driver has no location assigned")); // Get next destination to go to @@ -126,29 +131,30 @@ public void move(ObjectContext ctx) throws TerminalException { // Move to the next location var newLocation = GeoUtils.moveToDestination(currentLocation, nextDestination); - ctx.set(CURRENT_LOCATION, newLocation); - producer.sendDriverUpdate(ctx.key(), JacksonSerdes.of(Location.class).serialize(newLocation).toByteArray()); + state.set(CURRENT_LOCATION, newLocation); + producer.sendDriverUpdate( + Restate.key(), JacksonSerdes.of(Location.class).serialize(newLocation).toByteArray()); // If we reached the destination, notify the food ordering app if (newLocation.equals(nextDestination)) { // If the delivery was already picked up, then that means it now arrived at the customer if (assignedDelivery.isOrderPickedUp()) { // Delivery is delivered to customer - ctx.clear(ASSIGNED_DELIVERY); + state.clear(ASSIGNED_DELIVERY); // Notify the driver's digital twin in the food ordering app of the delivery success - DriverDigitalTwinClient.fromContext(ctx, ctx.key()).notifyDeliveryDelivered().await(); + Restate.virtualObject(DriverDigitalTwin.class, Restate.key()).notifyDeliveryDelivered(); // Take a small break before starting the next delivery - ctx.sleep(Duration.ofMillis(PAUSE_BETWEEN_DELIVERIES)); + Restate.sleep(Duration.ofMillis(PAUSE_BETWEEN_DELIVERIES)); // Tell the driver's digital twin in the food ordering app, that he is available - DriverDigitalTwinClient.fromContext(ctx, ctx.key()) - .send() - .setDriverAvailable(GeoUtils.DEMO_REGION); + Restate.virtualObjectHandle(DriverDigitalTwin.class, Restate.key()) + .send(DriverDigitalTwin::setDriverAvailable, GeoUtils.DEMO_REGION); // Start polling for work - DriverMobileAppSimulatorClient.fromContext(ctx, ctx.key()).send().pollForWork(); + Restate.virtualObjectHandle(DriverMobileAppSimulator.class, Restate.key()) + .send(DriverMobileAppSimulator::pollForWork); return; } @@ -156,12 +162,12 @@ public void move(ObjectContext ctx) throws TerminalException { // restaurant // and will start the delivery assignedDelivery.notifyPickup(); - ctx.set(ASSIGNED_DELIVERY, assignedDelivery); - DriverDigitalTwinClient.fromContext(ctx, ctx.key()).notifyDeliveryPickup().await(); + state.set(ASSIGNED_DELIVERY, assignedDelivery); + Restate.virtualObject(DriverDigitalTwin.class, Restate.key()).notifyDeliveryPickup(); } // Call this method again after a short delay - thisDriverSim.send().move(Duration.ofMillis(MOVE_INTERVAL)); + thisDriverSim.send(DriverMobileAppSimulator::move, Duration.ofMillis(MOVE_INTERVAL)); } public static void main(String[] args) { diff --git a/java/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts b/java/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts index 8696d576..a5f9b973 100644 --- a/java/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts +++ b/java/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts @@ -10,7 +10,7 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { // Kafka @@ -28,6 +28,14 @@ dependencies { // Set main class application { mainClass.set("dev.restate.sdk.examples.RestaurantMain") + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") +} + +tasks.named("test") { + useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } diff --git a/java/end-to-end-applications/subway-fare-calculator/build.gradle.kts b/java/end-to-end-applications/subway-fare-calculator/build.gradle.kts index 313c460c..76c9a9e5 100644 --- a/java/end-to-end-applications/subway-fare-calculator/build.gradle.kts +++ b/java/end-to-end-applications/subway-fare-calculator/build.gradle.kts @@ -7,20 +7,27 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - annotationProcessor("dev.restate:sdk-api-gen:$restateVersion") implementation("dev.restate:sdk-java-http:$restateVersion") } // Set main class application { mainClass.set("dev.restate.example.CardTracker") + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } java { toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(25)) } -} \ No newline at end of file +} + +tasks.named("test") { + useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") +} diff --git a/java/end-to-end-applications/subway-fare-calculator/src/main/java/dev/restate/example/CardTracker.java b/java/end-to-end-applications/subway-fare-calculator/src/main/java/dev/restate/example/CardTracker.java index 937be773..de310c3b 100644 --- a/java/end-to-end-applications/subway-fare-calculator/src/main/java/dev/restate/example/CardTracker.java +++ b/java/end-to-end-applications/subway-fare-calculator/src/main/java/dev/restate/example/CardTracker.java @@ -1,8 +1,7 @@ package dev.restate.example; import dev.restate.example.apis.CardStatusServiceApi; -import dev.restate.sdk.ObjectContext; -import dev.restate.sdk.SharedObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Shared; import dev.restate.sdk.annotation.VirtualObject; @@ -23,17 +22,18 @@ public class CardTracker { private static final StateKey TOTAL_FARE_TODAY = StateKey.of("fare", DailyFare.class); @Handler - public String badgeIn(ObjectContext ctx, String station) { - final String cardId = ctx.key(); + public String badgeIn(String station) { + final String cardId = Restate.key(); + var state = Restate.state(); // authorize card if we haven't done that today - final boolean authorized = ctx.get(AUTHORIZED).orElseGet(() -> { - boolean success = Payments.authorizeCard(ctx, cardId); - ctx.set(AUTHORIZED, success); + final boolean authorized = state.get(AUTHORIZED).orElseGet(() -> { + boolean success = Payments.authorizeCard(cardId); + state.set(AUTHORIZED, success); if (!success) { // make call to status cache to block this card at the gates - ctx.run("block card", () -> CardStatusServiceApi.tagCardAsBlocked(cardId)); + Restate.run("block card", () -> CardStatusServiceApi.tagCardAsBlocked(cardId)); } return success; @@ -43,66 +43,67 @@ public String badgeIn(ObjectContext ctx, String station) { } // start this journey - ctx.set(ONGOING_JOURNEY, station); + state.set(ONGOING_JOURNEY, station); // ensure this journey finishes by end of operations - CardTrackerClient.fromContext(ctx, cardId) - .send() - .finalizeAllJourneys(delayTillEndOfDay()); + Restate.virtualObjectHandle(CardTracker.class, cardId) + .send(CardTracker::finalizeAllJourneys, delayTillEndOfDay()); return "OK"; } @Handler - public String badgeOut(ObjectContext ctx, String exitStation) { - final String cardId = ctx.key(); + public String badgeOut(String exitStation) { + final String cardId = Restate.key(); + var state = Restate.state(); - final Optional startingStation = ctx.get(ONGOING_JOURNEY); + final Optional startingStation = state.get(ONGOING_JOURNEY); if (startingStation.isEmpty()) { return "BLOCKED"; } - ctx.clear(ONGOING_JOURNEY); + state.clear(ONGOING_JOURNEY); - final DailyFare fare = ctx.get(TOTAL_FARE_TODAY).orElseGet(DailyFare::new); + final DailyFare fare = state.get(TOTAL_FARE_TODAY).orElseGet(DailyFare::new); final long tripPrice = fare.addTrip(startingStation.get(), exitStation); - ctx.set(TOTAL_FARE_TODAY, fare); + state.set(TOTAL_FARE_TODAY, fare); - return tryCharge(ctx, cardId, tripPrice) ? "OK" : "BLOCKED"; + return tryCharge(cardId, tripPrice) ? "OK" : "BLOCKED"; } @Handler - public void finalizeAllJourneys(ObjectContext ctx) { + public void finalizeAllJourneys() { + var state = Restate.state(); // Executes at the end of the day // If the card still has an ongoing journey, end it and charge the day ticket - ctx.get(ONGOING_JOURNEY).ifPresent((String startStation) -> { - String cardId = ctx.key(); - DailyFare fare = ctx.get(TOTAL_FARE_TODAY).orElseGet(DailyFare::new); + state.get(ONGOING_JOURNEY).ifPresent((String startStation) -> { + String cardId = Restate.key(); + DailyFare fare = state.get(TOTAL_FARE_TODAY).orElseGet(DailyFare::new); long remainderToPay = fare.upgradeToDayTicket(); - tryCharge(ctx, cardId, remainderToPay); - ctx.clear(ONGOING_JOURNEY); + tryCharge(cardId, remainderToPay); + state.clear(ONGOING_JOURNEY); }); - ctx.clear(TOTAL_FARE_TODAY); + state.clear(TOTAL_FARE_TODAY); } @Shared - public boolean isBlocked(SharedObjectContext ctx) { - return !ctx.get(AUTHORIZED).orElse(true); + public boolean isBlocked() { + return !Restate.state().get(AUTHORIZED).orElse(true); } @Handler - public void unblock(ObjectContext ctx) { - ctx.clear(AUTHORIZED); + public void unblock() { + Restate.state().clear(AUTHORIZED); } - private boolean tryCharge(ObjectContext ctx, String cardRef, long amountCents) { + private boolean tryCharge(String cardRef, long amountCents) { if (amountCents == 0) { return true; } - boolean paymentSuccess = Payments.chargeCard(ctx, cardRef, amountCents); + boolean paymentSuccess = Payments.chargeCard(cardRef, amountCents); if (!paymentSuccess) { - ctx.set(AUTHORIZED, false); - ctx.run("block card", () -> CardStatusServiceApi.tagCardAsBlocked(cardRef)); + Restate.state().set(AUTHORIZED, false); + Restate.run("block card", () -> CardStatusServiceApi.tagCardAsBlocked(cardRef)); } return paymentSuccess; } diff --git a/java/end-to-end-applications/subway-fare-calculator/src/main/java/dev/restate/example/Payments.java b/java/end-to-end-applications/subway-fare-calculator/src/main/java/dev/restate/example/Payments.java index 09e33b3c..56d613cc 100644 --- a/java/end-to-end-applications/subway-fare-calculator/src/main/java/dev/restate/example/Payments.java +++ b/java/end-to-end-applications/subway-fare-calculator/src/main/java/dev/restate/example/Payments.java @@ -1,7 +1,7 @@ package dev.restate.example; import dev.restate.example.apis.PaymentApi; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.common.RetryPolicy; import dev.restate.sdk.common.TerminalException; @@ -15,17 +15,17 @@ public class Payments { .setMaxAttempts(AUTH_ATTEMPTS) .setInitialDelay(ATTEMPT_DELAY); - public static boolean authorizeCard(Context ctx, String cardRef) { + public static boolean authorizeCard(String cardRef) { try { - return ctx.run("auth attempt", Boolean.TYPE, retryThreeTimes, () -> PaymentApi.runAuthorization(cardRef)); + return Restate.run("auth attempt", Boolean.TYPE, retryThreeTimes, () -> PaymentApi.runAuthorization(cardRef)); } catch (TerminalException e) { return false; } } - public static boolean chargeCard(Context ctx, String cardRef, long amountCents) { + public static boolean chargeCard(String cardRef, long amountCents) { try { - return ctx.run("charge attempt", Boolean.TYPE, retryThreeTimes, () -> PaymentApi.makePayment(cardRef, amountCents)); + return Restate.run("charge attempt", Boolean.TYPE, retryThreeTimes, () -> PaymentApi.makePayment(cardRef, amountCents)); } catch (TerminalException e) { return false; } diff --git a/java/end-to-end-applications/workflow-interpreter/pom.xml b/java/end-to-end-applications/workflow-interpreter/pom.xml index d130f25e..551963a8 100644 --- a/java/end-to-end-applications/workflow-interpreter/pom.xml +++ b/java/end-to-end-applications/workflow-interpreter/pom.xml @@ -27,10 +27,10 @@ - 17 + 25 4.1.124.Final - 2.7.0 + 2.9.0 @@ -64,23 +64,44 @@ + + + + org.apache.maven.plugins + maven-toolchains-plugin + 3.2.0 + + + + select-jdk-toolchain + + + + + [25,) + + org.springframework.boot spring-boot-maven-plugin + + + --enable-native-access=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow + maven-compiler-plugin true - - - dev.restate - sdk-api-gen - ${restate.version} - - + + + + maven-surefire-plugin + + + --enable-native-access=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow diff --git a/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/ImageProcessingWorkflow.java b/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/ImageProcessingWorkflow.java index 0ce017a1..061c9d39 100644 --- a/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/ImageProcessingWorkflow.java +++ b/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/ImageProcessingWorkflow.java @@ -5,9 +5,9 @@ import com.example.restatestarter.types.WorkflowStepProcessor; import dev.restate.common.Target; import dev.restate.common.Request; -import dev.restate.sdk.WorkflowContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Workflow; -import dev.restate.sdk.springboot.RestateWorkflow; +import dev.restate.sdk.springboot.RestateComponent; import dev.restate.sdk.common.StateKey; import dev.restate.serde.TypeTag; @@ -15,26 +15,28 @@ import static com.example.restatestarter.utils.WorkflowProcessingUtils.*; -@RestateWorkflow +@RestateComponent +@Workflow public class ImageProcessingWorkflow { private static final StateKey STATUS = StateKey.of("status", WorkflowStatus.class); @Workflow - public WorkflowStatus run(WorkflowContext ctx, List wfSteps) throws Exception { + public WorkflowStatus run(List wfSteps) throws Exception { validateWorkflowDefinition(wfSteps); - String imgName = ctx.random().nextUUID().toString(); + String imgName = Restate.random().nextUUID().toString(); // Add the image input and output names for each step (uuid + step number) List enrichedWfSteps = addImgPathToSteps(wfSteps, imgName); + var state = Restate.state(); WorkflowStatus status = new WorkflowStatus("Processing", imgName, Collections.emptyList()); - ctx.set(STATUS, status); + state.set(STATUS, status); for (WorkflowStep step : enrichedWfSteps) { WorkflowStepProcessor processor = getProcessorStepFromRegistry(step.action()); - String result = ctx.call( + String result = Restate.call( Request.of( Target.service(processor.service(), processor.method()), TypeTag.of(WorkflowStep.class), @@ -43,11 +45,11 @@ public WorkflowStatus run(WorkflowContext ctx, List wfSteps) throw ) ).await(); status = status.withNewOutput(result); - ctx.set(STATUS, status); + state.set(STATUS, status); } status = status.withStatus("Finished"); - ctx.set(STATUS, status); + state.set(STATUS, status); return status; } -} \ No newline at end of file +} diff --git a/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/PuppeteerService.java b/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/PuppeteerService.java index fe09cc43..42fdf3bb 100644 --- a/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/PuppeteerService.java +++ b/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/PuppeteerService.java @@ -1,9 +1,10 @@ package com.example.restatestarter; import com.example.restatestarter.types.WorkflowStep; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; -import dev.restate.sdk.springboot.RestateService; +import dev.restate.sdk.annotation.Service; +import dev.restate.sdk.springboot.RestateComponent; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; @@ -15,15 +16,16 @@ import java.nio.file.Files; import java.nio.file.Paths; -@RestateService +@RestateComponent +@Service public class PuppeteerService { @Handler - public String run(Context ctx, WorkflowStep wf) throws Exception { + public String run(WorkflowStep wf) throws Exception { System.out.println("Taking screenshot of website with parameters: " + wf); String screenshotUrl = (String) wf.parameters().get("url"); - ctx.run(() -> takeWebsiteScreenshot(wf.imgOutputPath(), screenshotUrl)); + Restate.run("takeScreenshot", () -> takeWebsiteScreenshot(wf.imgOutputPath(), screenshotUrl)); return "[Took screenshot of website with url: " + screenshotUrl + "]"; } @@ -41,4 +43,4 @@ private void takeWebsiteScreenshot(String imgOutputPath, String screenshotUrl) t driver.quit(); } -} \ No newline at end of file +} diff --git a/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/TransformerService.java b/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/TransformerService.java index 858afa09..df65cc23 100644 --- a/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/TransformerService.java +++ b/java/end-to-end-applications/workflow-interpreter/src/main/java/com/example/restatestarter/TransformerService.java @@ -1,23 +1,25 @@ package com.example.restatestarter; import com.example.restatestarter.types.WorkflowStep; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; -import dev.restate.sdk.springboot.RestateService; +import dev.restate.sdk.annotation.Service; +import dev.restate.sdk.springboot.RestateComponent; import java.awt.image.BufferedImage; import static com.example.restatestarter.utils.TransformerUtils.*; -@RestateService +@RestateComponent +@Service public class TransformerService { @Handler - public String rotate(Context ctx, WorkflowStep wfStep) throws Exception { + public String rotate(WorkflowStep wfStep) throws Exception { int angle = (int) wfStep.parameters().get("angle"); System.out.println("Rotating image with angle: " + angle); - ctx.run(() -> { + Restate.run("rotate", () -> { BufferedImage image = getImage(wfStep.imgInputPath()); BufferedImage rotatedImage = rotateImage(image, angle); writeImage(rotatedImage, wfStep.imgOutputPath()); @@ -27,11 +29,11 @@ public String rotate(Context ctx, WorkflowStep wfStep) throws Exception { } @Handler - public String blur(Context ctx, WorkflowStep wfStep) throws Exception { + public String blur(WorkflowStep wfStep) throws Exception { int blur = (int) wfStep.parameters().get("blur"); System.out.println("Blurring image with parameter " + blur); - ctx.run(() -> { + Restate.run("blur", () -> { BufferedImage image = getImage(wfStep.imgInputPath()); BufferedImage blurredImage = blurImage(image, blur); writeImage(blurredImage, wfStep.imgOutputPath()); @@ -39,4 +41,4 @@ public String blur(Context ctx, WorkflowStep wfStep) throws Exception { return "[Blurred image with strength param " + blur + "]"; } -} \ No newline at end of file +} diff --git a/java/integrations/java-gradle-lambda-cdk/README.md b/java/integrations/java-gradle-lambda-cdk/README.md index bf279352..b909410e 100644 --- a/java/integrations/java-gradle-lambda-cdk/README.md +++ b/java/integrations/java-gradle-lambda-cdk/README.md @@ -33,7 +33,7 @@ For more information on CDK, please see [Getting started with the AWS CDK](https * npm * gradle -* JDK >= 21 +* JDK >= 25 * AWS account, bootstrapped for CDK use * valid AWS credentials with sufficient privileges to create the necessary resources * an existing [Restate Cloud](https://restate.dev) environment (environment id + API key) diff --git a/java/integrations/java-gradle-lambda-cdk/cdk/lambda-jvm-cdk-stack.ts b/java/integrations/java-gradle-lambda-cdk/cdk/lambda-jvm-cdk-stack.ts index c6ea1e00..5da78ddd 100644 --- a/java/integrations/java-gradle-lambda-cdk/cdk/lambda-jvm-cdk-stack.ts +++ b/java/integrations/java-gradle-lambda-cdk/cdk/lambda-jvm-cdk-stack.ts @@ -20,11 +20,15 @@ export class LambdaJvmCdkStack extends cdk.Stack { super(scope, id, props); const handler: lambda.Function = new lambda.Function(this, "GreeterService", { - runtime: lambda.Runtime.JAVA_21, + runtime: lambda.Runtime.JAVA_25, architecture: lambda.Architecture.ARM_64, code: lambda.Code.fromAsset("lambda/build/distributions/lambda.zip"), handler: "my.example.LambdaHandler", timeout: cdk.Duration.seconds(10), + environment: { + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + JAVA_TOOL_OPTIONS: "--enable-native-access=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow", + }, loggingFormat: lambda.LoggingFormat.JSON, applicationLogLevelV2: lambda.ApplicationLogLevel.DEBUG, systemLogLevelV2: lambda.SystemLogLevel.INFO, diff --git a/java/integrations/java-gradle-lambda-cdk/lambda/build.gradle.kts b/java/integrations/java-gradle-lambda-cdk/lambda/build.gradle.kts index 6977fc10..0c7ecdcf 100644 --- a/java/integrations/java-gradle-lambda-cdk/lambda/build.gradle.kts +++ b/java/integrations/java-gradle-lambda-cdk/lambda/build.gradle.kts @@ -6,12 +6,9 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - // Annotation processor - annotationProcessor("dev.restate:sdk-api-gen:$restateVersion") - // Restate SDK implementation("dev.restate:sdk-java-lambda:$restateVersion") @@ -29,7 +26,7 @@ dependencies { // Setup Java compiler target java { toolchain { - languageVersion.set(JavaLanguageVersion.of(21)) + languageVersion.set(JavaLanguageVersion.of(25)) } } diff --git a/java/integrations/java-gradle-lambda-cdk/lambda/src/main/java/my/example/Greeter.java b/java/integrations/java-gradle-lambda-cdk/lambda/src/main/java/my/example/Greeter.java index dda30ced..7ee68d3b 100644 --- a/java/integrations/java-gradle-lambda-cdk/lambda/src/main/java/my/example/Greeter.java +++ b/java/integrations/java-gradle-lambda-cdk/lambda/src/main/java/my/example/Greeter.java @@ -3,7 +3,7 @@ import static my.example.Utils.sendNotification; import static my.example.Utils.sendReminder; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import java.time.Duration; @@ -12,12 +12,12 @@ public class Greeter { @Handler - public String greet(Context ctx, String name) { + public String greet(String name) { // Durably execute a set of steps; resilient against failures - String greetingId = ctx.random().nextUUID().toString(); - ctx.run(() -> sendNotification(greetingId, name)); - ctx.sleep(Duration.ofMillis(1000)); - ctx.run(() -> sendReminder(greetingId)); + String greetingId = Restate.random().nextUUID().toString(); + Restate.run("send-notification", () -> sendNotification(greetingId, name)); + Restate.sleep(Duration.ofMillis(1000)); + Restate.run("send-reminder", () -> sendReminder(greetingId)); // Respond to caller return "You said hi to " + name + "!"; diff --git a/java/integrations/java-spring/build.gradle.kts b/java/integrations/java-spring/build.gradle.kts index e5b23feb..cb1f858a 100644 --- a/java/integrations/java-spring/build.gradle.kts +++ b/java/integrations/java-spring/build.gradle.kts @@ -13,15 +13,13 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { implementation("org.springframework.boot:spring-boot-starter") testImplementation("org.springframework.boot:spring-boot-starter-test") testRuntimeOnly("org.junit.platform:junit-platform-launcher") - annotationProcessor("dev.restate:sdk-api-gen:$restateVersion") - implementation("org.springframework.boot", "spring-boot-starter-data-jpa") // Restate SDK @@ -35,7 +33,7 @@ dependencies { java { toolchain { - languageVersion = JavaLanguageVersion.of(21) + languageVersion = JavaLanguageVersion.of(25) } } @@ -46,6 +44,13 @@ application { tasks.withType { useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") +} + +tasks.named("bootRun") { + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } spotless { diff --git a/java/integrations/java-spring/src/main/java/dev/restate/examples/ProductService.java b/java/integrations/java-spring/src/main/java/dev/restate/examples/ProductService.java index 361d5fb5..deaf0485 100644 --- a/java/integrations/java-spring/src/main/java/dev/restate/examples/ProductService.java +++ b/java/integrations/java-spring/src/main/java/dev/restate/examples/ProductService.java @@ -2,12 +2,14 @@ import dev.restate.examples.model.Product; import dev.restate.examples.repository.ProductRepository; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; -import dev.restate.sdk.springboot.RestateVirtualObject; +import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.common.TerminalException; +import dev.restate.sdk.springboot.RestateComponent; -@RestateVirtualObject +@RestateComponent +@VirtualObject public class ProductService { private final ProductRepository productRepository; @@ -17,21 +19,23 @@ public ProductService(ProductRepository productRepository) { } @Handler - public Product getProductInformation(ObjectContext ctx) { - return ctx.run( + public Product getProductInformation() { + return Restate.run( + "getProduct", Product.class, () -> productRepository - .findById(ctx.key()) + .findById(Restate.key()) .orElseThrow(() -> new TerminalException("Product does not exist"))); } @Handler - public boolean reserve(ObjectContext ctx) { - String productId = ctx.key(); + public boolean reserve() { + String productId = Restate.key(); Product product = - ctx.run( + Restate.run( + "getProduct", Product.class, () -> productRepository @@ -42,21 +46,26 @@ public boolean reserve(ObjectContext ctx) { return false; } - ctx.run(() -> productRepository.updateQuantity(productId, product.getQuantity() - 1)); + Restate.run( + "updateQuantity", + () -> productRepository.updateQuantity(productId, product.getQuantity() - 1)); return true; } @Handler - public void release(ObjectContext ctx) { - String productId = ctx.key(); + public void release() { + String productId = Restate.key(); Product product = - ctx.run( + Restate.run( + "getProduct", Product.class, () -> productRepository .findById(productId) .orElseThrow(() -> new TerminalException("Product does not exist"))); - ctx.run(() -> productRepository.updateQuantity(productId, product.getQuantity() + 1)); + Restate.run( + "updateQuantity", + () -> productRepository.updateQuantity(productId, product.getQuantity() + 1)); } } diff --git a/java/patterns-use-cases/build.gradle.kts b/java/patterns-use-cases/build.gradle.kts index 6b2a85c7..7d419319 100644 --- a/java/patterns-use-cases/build.gradle.kts +++ b/java/patterns-use-cases/build.gradle.kts @@ -8,11 +8,9 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - annotationProcessor("dev.restate:sdk-api-gen:$restateVersion") - // Restate SDK implementation("dev.restate:sdk-java-http:$restateVersion") @@ -36,7 +34,7 @@ dependencies { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(21)) + languageVersion.set(JavaLanguageVersion.of(25)) } } @@ -47,6 +45,8 @@ application { } else { mainClass.set("my.example.dataupload.DataUploadService") } + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } tasks.withType { @@ -57,6 +57,8 @@ tasks.withType { tasks.named("test") { useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } spotless { diff --git a/java/patterns-use-cases/src/main/java/my/example/batcher/BatchReceiver.java b/java/patterns-use-cases/src/main/java/my/example/batcher/BatchReceiver.java index f2599435..679074f6 100644 --- a/java/patterns-use-cases/src/main/java/my/example/batcher/BatchReceiver.java +++ b/java/patterns-use-cases/src/main/java/my/example/batcher/BatchReceiver.java @@ -1,6 +1,5 @@ package my.example.batcher; -import dev.restate.sdk.Context; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import java.util.List; @@ -13,7 +12,7 @@ public class BatchReceiver { private static final Logger LOG = LogManager.getLogger(BatchReceiver.class); @Handler - public void receive(Context ctx, List items) { + public void receive(List items) { LOG.info("Received batch: {}", items); } } diff --git a/java/patterns-use-cases/src/main/java/my/example/batcher/Batcher.java b/java/patterns-use-cases/src/main/java/my/example/batcher/Batcher.java index e40a6de1..85f19bb3 100644 --- a/java/patterns-use-cases/src/main/java/my/example/batcher/Batcher.java +++ b/java/patterns-use-cases/src/main/java/my/example/batcher/Batcher.java @@ -1,7 +1,7 @@ package my.example.batcher; import dev.restate.sdk.InvocationHandle; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.common.StateKey; @@ -24,8 +24,9 @@ public class Batcher { record BatcherState(List items, String expireInvocationId) {} @Handler - public void receive(ObjectContext ctx, String item) { - ctx.get(STATE) + public void receive(String item) { + Restate.state() + .get(STATE) .ifPresentOrElse( state -> { LOG.info("Adding item {} to existing batch", item); @@ -33,30 +34,32 @@ public void receive(ObjectContext ctx, String item) { if (state.items().size() == MAX_BATCH) { LOG.info("Sending batch as it reached {} items", MAX_BATCH); // cancel scheduled sending, since we are sending due to item count - ctx.invocationHandle(state.expireInvocationId()).cancel(); - BatchReceiverClient.fromContext(ctx).receive(state.items()); - ctx.clearAll(); + Restate.invocationHandle(state.expireInvocationId()).cancel(); + Restate.service(BatchReceiver.class).receive(state.items()); + Restate.state().clearAll(); } else { // write back updated state - ctx.set(STATE, state); + Restate.state().set(STATE, state); } }, () -> { LOG.info("Adding item to new batch, will send in at most {}", MAX_BATCH_WAIT); InvocationHandle invocationId = - BatcherClient.fromContext(ctx, ctx.key()).send().expire(MAX_BATCH_WAIT); - ctx.set(STATE, new BatcherState(List.of(item), invocationId.invocationId())); + Restate.virtualObjectHandle(Batcher.class, Restate.key()) + .send(Batcher::expire, MAX_BATCH_WAIT); + Restate.state() + .set(STATE, new BatcherState(List.of(item), invocationId.invocationId())); }); } @Handler - public void expire(ObjectContext ctx) { + public void expire() { // if there is no state expire should never be called (meaning a bug), // so throw TerminalException since there is no recovery - var state = ctx.get(STATE).orElseThrow(TerminalException::new); + var state = Restate.state().get(STATE).orElseThrow(TerminalException::new); LOG.info("Sending batch with {} items as the timer fired", state.items().size()); - BatchReceiverClient.fromContext(ctx).receive(state.items()); - ctx.clearAll(); + Restate.service(BatchReceiver.class).receive(state.items()); + Restate.state().clearAll(); } public static void main(String[] args) { diff --git a/java/patterns-use-cases/src/main/java/my/example/concurrenttasks/EmailVerification.java b/java/patterns-use-cases/src/main/java/my/example/concurrenttasks/EmailVerification.java index 10e372ad..9c1065d3 100644 --- a/java/patterns-use-cases/src/main/java/my/example/concurrenttasks/EmailVerification.java +++ b/java/patterns-use-cases/src/main/java/my/example/concurrenttasks/EmailVerification.java @@ -3,7 +3,7 @@ import static my.example.concurrenttasks.utils.EmailClient.sendReminder; import static my.example.concurrenttasks.utils.EmailClient.sendVerificationEmail; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.Select; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; @@ -28,7 +28,7 @@ * or restarts, it resumes exactly where it left off - no lost emails, no duplicate * reminders, no forgotten timeouts. * - * 2. DURABLE FUTURES: The ctx.awakeable() creates a durable future that can be + * 2. DURABLE FUTURES: The Restate.awakeable() creates a durable future that can be * resolved from external systems (like a webhook when user clicks verification link). * This survives service restarts and infrastructure failures. * @@ -54,14 +54,14 @@ public class EmailVerification { public record VerifyEmailRequest(String email, String userId) {} @Handler - public String verifyEmail(Context ctx, VerifyEmailRequest req) { - var confirmationFuture = ctx.awakeable(Boolean.class); - ctx.run("send email", () -> sendVerificationEmail(req.email(), confirmationFuture.id())); + public String verifyEmail(VerifyEmailRequest req) { + var confirmationFuture = Restate.awakeable(Boolean.class); + Restate.run("send email", () -> sendVerificationEmail(req.email(), confirmationFuture.id())); - var verificationTimeout = ctx.timer(Duration.ofDays(1)); + var verificationTimeout = Restate.timer(Duration.ofDays(1)); while (true) { - var reminderTimer = ctx.timer(Duration.ofSeconds(10)); + var reminderTimer = Restate.timer(Duration.ofSeconds(10)); var selected = Select.select() @@ -76,7 +76,7 @@ public String verifyEmail(Context ctx, VerifyEmailRequest req) { case "failure": return "Email rejected"; case "reminder": - ctx.run("send reminder", () -> sendReminder(req.email(), confirmationFuture.id())); + Restate.run("send reminder", () -> sendReminder(req.email(), confirmationFuture.id())); break; case "timeout": throw new TerminalException("Verification timed out"); diff --git a/java/patterns-use-cases/src/main/java/my/example/cron/Cron.java b/java/patterns-use-cases/src/main/java/my/example/cron/Cron.java index 4ddd30ad..705482af 100644 --- a/java/patterns-use-cases/src/main/java/my/example/cron/Cron.java +++ b/java/patterns-use-cases/src/main/java/my/example/cron/Cron.java @@ -7,9 +7,7 @@ import com.cronutils.parser.CronParser; import dev.restate.common.Request; import dev.restate.common.Target; -import dev.restate.sdk.Context; -import dev.restate.sdk.ObjectContext; -import dev.restate.sdk.SharedObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.*; import dev.restate.sdk.common.StateKey; import dev.restate.sdk.common.TerminalException; @@ -46,11 +44,11 @@ public record JobInfo(JobRequest request, String nextExecutionTime, String nextE @Service public static class JobInitiator { @Handler - public String create(Context ctx, JobRequest request) { + public String create(JobRequest request) { // Create a new job ID and initiate the cron job object for that ID // We can then address this job object by its ID - var jobId = ctx.random().nextUUID().toString(); - var cronJob = CronJobClient.fromContext(ctx, jobId).initiate(request).await(); + var jobId = Restate.random().nextUUID().toString(); + var cronJob = Restate.virtualObject(Job.class, jobId).initiate(request); return String.format( "Job created with ID %s and next execution time %s", jobId, cronJob.nextExecutionTime()); } @@ -65,37 +63,41 @@ public static class Job { new CronParser(CronDefinitionBuilder.instanceDefinitionFor(UNIX)); @Handler - public JobInfo initiate(ObjectContext ctx, JobRequest request) { - if (ctx.get(JOB_STATE).isPresent()) { + public JobInfo initiate(JobRequest request) { + if (Restate.state().get(JOB_STATE).isPresent()) { throw new TerminalException("Job already exists for this ID"); } - return scheduleNextExecution(ctx, request); + return scheduleNextExecution(request); } @Handler - public void execute(ObjectContext ctx) { + public void execute() { JobRequest request = - ctx.get(JOB_STATE).orElseThrow(() -> new TerminalException("Job not found")).request; + Restate.state() + .get(JOB_STATE) + .orElseThrow(() -> new TerminalException("Job not found")) + .request; - executeTask(ctx, request); - scheduleNextExecution(ctx, request); + executeTask(request); + scheduleNextExecution(request); } @Handler - public void cancel(ObjectContext ctx) { - ctx.get(JOB_STATE) - .ifPresent(jobState -> ctx.invocationHandle(jobState.nextExecutionId).cancel()); + public void cancel() { + Restate.state() + .get(JOB_STATE) + .ifPresent(jobState -> Restate.invocationHandle(jobState.nextExecutionId).cancel()); // Clear the job state - ctx.clearAll(); + Restate.state().clearAll(); } @Shared - public Optional getInfo(SharedObjectContext ctx) { - return ctx.get(JOB_STATE); + public Optional getInfo() { + return Restate.state().get(JOB_STATE); } - private void executeTask(ObjectContext ctx, JobRequest job) { + private void executeTask(JobRequest job) { Target target = (job.key.isPresent()) ? Target.virtualObject(job.service, job.method, job.key.get()) @@ -105,10 +107,10 @@ private void executeTask(ObjectContext ctx, JobRequest job) { ? Request.of( target, TypeTag.of(String.class), TypeTag.of(Void.class), job.payload.get()) : Request.of(target, new byte[0]); - ctx.send(request); + Restate.send(request); } - private JobInfo scheduleNextExecution(ObjectContext ctx, JobRequest request) { + private JobInfo scheduleNextExecution(JobRequest request) { // Parse cron expression ExecutionTime executionTime; try { @@ -118,7 +120,7 @@ private JobInfo scheduleNextExecution(ObjectContext ctx, JobRequest request) { } // Calculate next execution time - var now = ctx.run(ZonedDateTime.class, ZonedDateTime::now); + var now = Restate.run("now", ZonedDateTime.class, ZonedDateTime::now); var delay = executionTime .timeToNextExecution(now) @@ -129,12 +131,12 @@ private JobInfo scheduleNextExecution(ObjectContext ctx, JobRequest request) { .orElseThrow(() -> new TerminalException("Cannot determine next execution time")); // Schedule next execution for this job - String thisJobId = ctx.key(); // This got generated by the CronJobInitiator - var handle = CronJobClient.fromContext(ctx, thisJobId).send().execute(delay); + String thisJobId = Restate.key(); // This got generated by the CronJobInitiator + var handle = Restate.virtualObjectHandle(Job.class, thisJobId).send(Job::execute, delay); // Save job state var jobState = new JobInfo(request, next.toString(), handle.invocationId()); - ctx.set(JOB_STATE, jobState); + Restate.state().set(JOB_STATE, jobState); return jobState; } } diff --git a/java/patterns-use-cases/src/main/java/my/example/cron/TaskService.java b/java/patterns-use-cases/src/main/java/my/example/cron/TaskService.java index 04a3ed2f..47be6206 100644 --- a/java/patterns-use-cases/src/main/java/my/example/cron/TaskService.java +++ b/java/patterns-use-cases/src/main/java/my/example/cron/TaskService.java @@ -1,6 +1,5 @@ package my.example.cron; -import dev.restate.sdk.Context; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import dev.restate.sdk.endpoint.Endpoint; @@ -16,7 +15,7 @@ public class TaskService { This is a task stub to be able to demo the cron service. */ @Handler - public void executeTask(Context ctx, String task) { + public void executeTask(String task) { // Here you would implement the logic to execute the task // For example, you could call another service or perform some computation logger.info("Executing task with payload: {}", task); diff --git a/java/patterns-use-cases/src/main/java/my/example/durablerpc/MyClient.java b/java/patterns-use-cases/src/main/java/my/example/durablerpc/MyClient.java index 95da77ac..cfbec19d 100644 --- a/java/patterns-use-cases/src/main/java/my/example/durablerpc/MyClient.java +++ b/java/patterns-use-cases/src/main/java/my/example/durablerpc/MyClient.java @@ -1,6 +1,7 @@ package my.example.durablerpc; import dev.restate.client.Client; +import dev.restate.common.InvocationOptions; import java.util.Optional; public class MyClient { @@ -13,9 +14,11 @@ public boolean reserveProduct(String productId, String reservationId) { // Durable RPC call to the product service // Restate registers the request and makes sure runs to completion exactly once boolean reserved = - ProductServiceClient.fromClient(restateClient, productId) + restateClient + .virtualObjectHandle(ProductService.class, productId) // Restate deduplicates requests with the same idempotency key - .reserve(opts -> opts.idempotencyKey(reservationId)); + .call(ProductService::reserve, InvocationOptions.idempotencyKey(reservationId)) + .response(); return reserved; } diff --git a/java/patterns-use-cases/src/main/java/my/example/durablerpc/ProductService.java b/java/patterns-use-cases/src/main/java/my/example/durablerpc/ProductService.java index 8b0bc652..147100c6 100644 --- a/java/patterns-use-cases/src/main/java/my/example/durablerpc/ProductService.java +++ b/java/patterns-use-cases/src/main/java/my/example/durablerpc/ProductService.java @@ -1,6 +1,6 @@ package my.example.durablerpc; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.common.StateKey; @@ -20,13 +20,13 @@ public class ProductService { private static final StateKey RESERVED = StateKey.of("reserved", Boolean.TYPE); @Handler - public boolean reserve(ObjectContext ctx) { - if (ctx.get(RESERVED).orElse(false)) { + public boolean reserve() { + if (Restate.state().get(RESERVED).orElse(false)) { LOG.info("Product already reserved"); return false; } LOG.info("Reserving product"); - ctx.set(RESERVED, true); + Restate.state().set(RESERVED, true); return true; } diff --git a/java/patterns-use-cases/src/main/java/my/example/eventenrichment/PackageTracker.java b/java/patterns-use-cases/src/main/java/my/example/eventenrichment/PackageTracker.java index 6c83c099..57aa563a 100644 --- a/java/patterns-use-cases/src/main/java/my/example/eventenrichment/PackageTracker.java +++ b/java/patterns-use-cases/src/main/java/my/example/eventenrichment/PackageTracker.java @@ -1,7 +1,6 @@ package my.example.eventenrichment; -import dev.restate.sdk.ObjectContext; -import dev.restate.sdk.SharedObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Shared; import dev.restate.sdk.annotation.VirtualObject; @@ -23,26 +22,30 @@ public class PackageTracker { // Called first by the seller over HTTP @Handler - public void registerPackage(ObjectContext ctx, PackageInfo packageInfo) { + public void registerPackage(PackageInfo packageInfo) { // Store the package details in the state - ctx.set(PACKAGE_INFO, packageInfo); + Restate.state().set(PACKAGE_INFO, packageInfo); } // Connected to a Kafka topic for real-time location updates @Handler - public void updateLocation(ObjectContext ctx, LocationUpdate locationUpdate) { + public void updateLocation(LocationUpdate locationUpdate) { var packageInfo = - ctx.get(PACKAGE_INFO).orElseThrow(() -> new TerminalException("Package not found")); + Restate.state() + .get(PACKAGE_INFO) + .orElseThrow(() -> new TerminalException("Package not found")); // Update the package info with the new location packageInfo.addLocation(locationUpdate); - ctx.set(PACKAGE_INFO, packageInfo); + Restate.state().set(PACKAGE_INFO, packageInfo); } // Called by the delivery dashboard to get the package details @Shared - public PackageInfo getPackageInfo(SharedObjectContext ctx) { - return ctx.get(PACKAGE_INFO).orElseThrow(() -> new TerminalException("Package not found")); + public PackageInfo getPackageInfo() { + return Restate.state() + .get(PACKAGE_INFO) + .orElseThrow(() -> new TerminalException("Package not found")); } public static void main(String[] args) { diff --git a/java/patterns-use-cases/src/main/java/my/example/eventtransactions/UserFeed.java b/java/patterns-use-cases/src/main/java/my/example/eventtransactions/UserFeed.java index e52210a1..18c1335b 100644 --- a/java/patterns-use-cases/src/main/java/my/example/eventtransactions/UserFeed.java +++ b/java/patterns-use-cases/src/main/java/my/example/eventtransactions/UserFeed.java @@ -4,7 +4,7 @@ import static my.example.eventtransactions.utils.Stubs.getPostStatus; import static my.example.eventtransactions.utils.Stubs.updateUserFeed; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.endpoint.Endpoint; @@ -21,20 +21,21 @@ public record SocialMediaPost(String content, String metadata) {} // Connect a handler to a Kafka topic. Restate manages the Kafka subscription and offsets. // Events are pushed in order to the Virtual Object (Kafka key = object key). @Handler - public void processPost(ObjectContext ctx, SocialMediaPost post) { - String userId = ctx.key(); + public void processPost(SocialMediaPost post) { + String userId = Restate.key(); // Durable side effects: Restate persists intermediate results and replays them on failure. - String postId = ctx.run(String.class, () -> createPost(userId, post)); + String postId = Restate.run("create post", String.class, () -> createPost(userId, post)); // No restrictions on the handler code: loops, sleeps, etc. - while (ctx.run(String.class, () -> getPostStatus(postId)).equals("PENDING")) { + while (Restate.run("get post status", String.class, () -> getPostStatus(postId)) + .equals("PENDING")) { // Delay processing until content moderation is complete (handler suspends when on FaaS). // This only blocks other posts for this user (Virtual Object), not for other users. - ctx.sleep(Duration.ofSeconds(5)); + Restate.sleep(Duration.ofSeconds(5)); } - ctx.run(() -> updateUserFeed(userId, postId)); + Restate.run("update feed", () -> updateUserFeed(userId, postId)); } public static void main(String[] args) { diff --git a/java/patterns-use-cases/src/main/java/my/example/parallelizework/FanOutWorker.java b/java/patterns-use-cases/src/main/java/my/example/parallelizework/FanOutWorker.java index a575c7c6..4b83e56c 100644 --- a/java/patterns-use-cases/src/main/java/my/example/parallelizework/FanOutWorker.java +++ b/java/patterns-use-cases/src/main/java/my/example/parallelizework/FanOutWorker.java @@ -2,8 +2,8 @@ import static my.example.parallelizework.utils.Utils.*; -import dev.restate.sdk.Context; import dev.restate.sdk.DurableFuture; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import dev.restate.sdk.endpoint.Endpoint; @@ -41,14 +41,15 @@ public class FanOutWorker { @Handler - public Result run(Context ctx, Task task) { + public Result run(Task task) { // Split the task in subtasks - var subTasks = ctx.run(new TypeRef<>() {}, () -> split(task)); + var subTasks = Restate.run("split", new TypeRef>() {}, () -> split(task)); // Fan out the subtasks - run them in parallel List> resultFutures = new ArrayList<>(); for (SubTask subTask : subTasks) { - resultFutures.add(FanOutWorkerClient.fromContext(ctx).runSubtask(subTask)); + resultFutures.add( + Restate.serviceHandle(FanOutWorker.class).call(FanOutWorker::runSubtask, subTask)); } DurableFuture.all(resultFutures).await(); @@ -60,10 +61,10 @@ public Result run(Context ctx, Task task) { // Can also run on FaaS @Handler - public SubTaskResult runSubtask(Context ctx, SubTask subTask) { + public SubTaskResult runSubtask(SubTask subTask) { // Processing logic goes here ... // Can be moved to a separate service to scale independently - return executeSubtask(ctx, subTask); + return executeSubtask(subTask); } public static void main(String[] args) { diff --git a/java/patterns-use-cases/src/main/java/my/example/parallelizework/utils/Utils.java b/java/patterns-use-cases/src/main/java/my/example/parallelizework/utils/Utils.java index 9ae43608..b4f27324 100644 --- a/java/patterns-use-cases/src/main/java/my/example/parallelizework/utils/Utils.java +++ b/java/patterns-use-cases/src/main/java/my/example/parallelizework/utils/Utils.java @@ -1,6 +1,6 @@ package my.example.parallelizework.utils; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import java.time.Duration; import java.util.Arrays; import java.util.List; @@ -17,11 +17,11 @@ public static List split(Task task) { return Arrays.stream(task.description().split(",")).map(SubTask::new).toList(); } - public static SubTaskResult executeSubtask(Context ctx, SubTask subtask) { + public static SubTaskResult executeSubtask(SubTask subtask) { // Execute subtask logger.info("Started executing subtask: {}", subtask.description()); // Sleep for a random amount between 0 and 5 seconds - ctx.sleep(Duration.ofSeconds(ctx.random().nextInt(0, 10))); + Restate.sleep(Duration.ofSeconds(Restate.random().nextInt(0, 10))); logger.info("Execution subtask finished: {}", subtask.description()); return new SubTaskResult(subtask.description() + ": DONE"); } diff --git a/java/patterns-use-cases/src/main/java/my/example/queue/AsyncTaskWorker.java b/java/patterns-use-cases/src/main/java/my/example/queue/AsyncTaskWorker.java index bcf3ff1c..5997c2d5 100644 --- a/java/patterns-use-cases/src/main/java/my/example/queue/AsyncTaskWorker.java +++ b/java/patterns-use-cases/src/main/java/my/example/queue/AsyncTaskWorker.java @@ -1,6 +1,5 @@ package my.example.queue; -import dev.restate.sdk.Context; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import dev.restate.sdk.endpoint.Endpoint; @@ -12,7 +11,7 @@ public class AsyncTaskWorker { public record TaskOpts(String key, String taskName, String payload) {} @Handler - public String runTask(Context ctx, TaskOpts params) { + public String runTask(TaskOpts params) { return someHeavyWork(params); } diff --git a/java/patterns-use-cases/src/main/java/my/example/queue/TaskSubmitter.java b/java/patterns-use-cases/src/main/java/my/example/queue/TaskSubmitter.java index 0f727f49..18629fc4 100644 --- a/java/patterns-use-cases/src/main/java/my/example/queue/TaskSubmitter.java +++ b/java/patterns-use-cases/src/main/java/my/example/queue/TaskSubmitter.java @@ -1,6 +1,7 @@ package my.example.queue; import dev.restate.client.Client; +import dev.restate.common.InvocationOptions; /* * Restate is as a sophisticated task queue, with extra features like: @@ -22,15 +23,16 @@ public void submitAndAwaitTasks(AsyncTaskWorker.TaskOpts taskOpts) { // submit the task; similar to publishing a message to a queue // Restate ensures the task is executed exactly once var handle = - AsyncTaskWorkerClient.fromClient(restateClient) + restateClient + .serviceHandle(AsyncTaskWorker.class) // optionally add a delay to execute the task later - .send() - .runTask( + .send( + AsyncTaskWorker::runTask, taskOpts, // optionally add a delay to execute the task later // Duration.ofDays(1), // use a stable uuid as an idempotency key; Restate deduplicates for us - opts -> opts.idempotencyKey("dQw4w9WgXcQ")); + InvocationOptions.idempotencyKey("dQw4w9WgXcQ")); // ... do other things while the task is being processed ... diff --git a/java/patterns-use-cases/src/main/java/my/example/sagas/BookingWorkflow.java b/java/patterns-use-cases/src/main/java/my/example/sagas/BookingWorkflow.java index b6b6e22a..1d03950b 100644 --- a/java/patterns-use-cases/src/main/java/my/example/sagas/BookingWorkflow.java +++ b/java/patterns-use-cases/src/main/java/my/example/sagas/BookingWorkflow.java @@ -1,6 +1,6 @@ package my.example.sagas; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import dev.restate.sdk.common.TerminalException; @@ -48,20 +48,23 @@ public record BookingRequest( String customerId, FlightRequest flight, CarRequest car, HotelRequest hotel) {} @Handler - public void run(Context ctx, BookingRequest req) throws TerminalException { + public void run(BookingRequest req) throws TerminalException { // Create a list of undo actions List compensations = new ArrayList<>(); try { // For each action, we register a compensation that will be executed on failures - compensations.add(() -> ctx.run("Cancel flight", () -> FlightClient.cancel(req.customerId))); - ctx.run("Book flight", () -> FlightClient.book(req.customerId, req.flight())); + compensations.add( + () -> Restate.run("Cancel flight", () -> FlightClient.cancel(req.customerId))); + Restate.run("Book flight", () -> FlightClient.book(req.customerId, req.flight())); - compensations.add(() -> ctx.run("Cancel car", () -> CarRentalClient.cancel(req.customerId))); - ctx.run("Book car", () -> CarRentalClient.book(req.customerId, req.car())); + compensations.add( + () -> Restate.run("Cancel car", () -> CarRentalClient.cancel(req.customerId))); + Restate.run("Book car", () -> CarRentalClient.book(req.customerId, req.car())); - compensations.add(() -> ctx.run("Cancel hotel", () -> HotelClient.cancel(req.customerId))); - ctx.run("Book hotel", () -> HotelClient.book(req.customerId, req.hotel())); + compensations.add( + () -> Restate.run("Cancel hotel", () -> HotelClient.cancel(req.customerId))); + Restate.run("Book hotel", () -> HotelClient.book(req.customerId, req.hotel())); } // Terminal exceptions are not retried by Restate. We undo previous actions and fail the // workflow. diff --git a/java/patterns-use-cases/src/main/java/my/example/schedulingtasks/PaymentTracker.java b/java/patterns-use-cases/src/main/java/my/example/schedulingtasks/PaymentTracker.java index 6011d5ba..ba93ef42 100644 --- a/java/patterns-use-cases/src/main/java/my/example/schedulingtasks/PaymentTracker.java +++ b/java/patterns-use-cases/src/main/java/my/example/schedulingtasks/PaymentTracker.java @@ -3,7 +3,7 @@ import static my.example.schedulingtasks.utils.Utils.escalateToHuman; import static my.example.schedulingtasks.utils.Utils.sendReminderEmail; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.common.StateKey; @@ -21,29 +21,30 @@ public class PaymentTracker { // Stripe sends us webhook events for invoice payment attempts @Handler - public void onPaymentSuccess(ObjectContext ctx, StripeEvent event) { - ctx.set(PAID, true); + public void onPaymentSuccess(StripeEvent event) { + Restate.state().set(PAID, true); } @Handler - public void onPaymentFailure(ObjectContext ctx, StripeEvent event) { + public void onPaymentFailure(StripeEvent event) { + var state = Restate.state(); + // Already paid, no need to send reminders - if (ctx.get(PAID).orElse(false)) { + if (state.get(PAID).orElse(false)) { return; } - int remindersCount = ctx.get(REMINDER_COUNT).orElse(0); + int remindersCount = state.get(REMINDER_COUNT).orElse(0); if (remindersCount < 3) { - ctx.set(REMINDER_COUNT, remindersCount + 1); - ctx.run(() -> sendReminderEmail(event)); + state.set(REMINDER_COUNT, remindersCount + 1); + Restate.run("send reminder", () -> sendReminderEmail(event)); // Schedule next reminder via a delayed self call - PaymentTrackerClient.fromContext(ctx, ctx.key()) - .send() - .onPaymentFailure(event, Duration.ofDays(1)); + Restate.virtualObjectHandle(PaymentTracker.class, Restate.key()) + .send(PaymentTracker::onPaymentFailure, event, Duration.ofDays(1)); } else { // After three reminders, escalate to support team - ctx.run(() -> escalateToHuman(event)); + Restate.run("escalate", () -> escalateToHuman(event)); } } diff --git a/java/patterns-use-cases/src/main/java/my/example/signalspayments/PaymentService.java b/java/patterns-use-cases/src/main/java/my/example/signalspayments/PaymentService.java index 42064240..3a1d3fc2 100644 --- a/java/patterns-use-cases/src/main/java/my/example/signalspayments/PaymentService.java +++ b/java/patterns-use-cases/src/main/java/my/example/signalspayments/PaymentService.java @@ -4,7 +4,7 @@ import com.stripe.model.PaymentIntent; import com.stripe.net.ApiResource; import dev.restate.sdk.Awakeable; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Accept; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Raw; @@ -45,18 +45,18 @@ public class PaymentService { public record PaymentRequest(Long amount, String paymentMethodId, boolean delayedStatus) {} @Handler - public void processPayment(Context ctx, PaymentRequest request) { + public void processPayment(PaymentRequest request) { PaymentUtils.verifyPaymentRequest(request); // Generate a deterministic idempotency key - String idempotencyKey = ctx.random().nextUUID().toString(); + String idempotencyKey = Restate.random().nextUUID().toString(); // Initiate a listener for external calls for potential webhook callbacks - Awakeable webhookPromise = ctx.awakeable(paymentIntentSerde); + Awakeable webhookPromise = Restate.awakeable(paymentIntentSerde); // Make a synchronous call to the payment service PaymentIntent paymentIntent = - ctx.run( + Restate.run( "Stripe call", paymentIntentSerde, () -> { @@ -91,10 +91,10 @@ public void processPayment(Context ctx, PaymentRequest request) { @Handler public boolean processWebhook( - Context ctx, // The raw request is the webhook call from Stripe that we will verify in the handler @Accept("*/*") @Raw byte[] request) { - Event event = stripe.parseWebhookCall(request, ctx.request().headers().get("stripe-signature")); + Event event = + stripe.parseWebhookCall(request, Restate.request().headers().get("stripe-signature")); if (!PaymentUtils.isPaymentIntent(event)) { logger.info("Unhandled event type: {}", event.getType()); @@ -111,7 +111,7 @@ public boolean processWebhook( 400, "Missing callback property: " + PaymentUtils.RESTATE_CALLBACK_ID); } - ctx.awakeableHandle(webhookPromise).resolve(paymentIntentSerde, paymentIntent); + Restate.awakeableHandle(webhookPromise).resolve(paymentIntentSerde, paymentIntent); return true; } diff --git a/java/patterns-use-cases/src/main/java/my/example/statefulactors/MachineOperator.java b/java/patterns-use-cases/src/main/java/my/example/statefulactors/MachineOperator.java index fbe75a86..7c2283dc 100644 --- a/java/patterns-use-cases/src/main/java/my/example/statefulactors/MachineOperator.java +++ b/java/patterns-use-cases/src/main/java/my/example/statefulactors/MachineOperator.java @@ -3,7 +3,7 @@ import static my.example.statefulactors.utils.MachineOperations.bringUpMachine; import static my.example.statefulactors.utils.MachineOperations.tearDownMachine; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.common.StateKey; @@ -31,34 +31,34 @@ enum Status { private static final StateKey STATUS = StateKey.of("state", Status.class); @Handler - public String setUp(ObjectContext ctx) { - String machineId = ctx.key(); + public String setUp() { + String machineId = Restate.key(); // Ignore duplicate calls to start - var status = ctx.get(STATUS).orElse(Status.DOWN); + var status = Restate.state().get(STATUS).orElse(Status.DOWN); if (status.equals(Status.UP)) { return machineId + " is already running"; } // Bringing up a machine is a slow process that frequently crashes - bringUpMachine(ctx, machineId); - ctx.set(STATUS, Status.UP); + bringUpMachine(machineId); + Restate.state().set(STATUS, Status.UP); return machineId + " is now running"; } @Handler - public String tearDown(ObjectContext ctx) { - String machineId = ctx.key(); + public String tearDown() { + String machineId = Restate.key(); - var status = ctx.get(STATUS).orElse(Status.DOWN); + var status = Restate.state().get(STATUS).orElse(Status.DOWN); if (!status.equals(Status.UP)) { return machineId + " is not up, cannot tear down"; } // Tearing down a machine is a slow process that frequently crashes - tearDownMachine(ctx, machineId); - ctx.set(STATUS, Status.DOWN); + tearDownMachine(machineId); + Restate.state().set(STATUS, Status.DOWN); return machineId + " is now down"; } diff --git a/java/patterns-use-cases/src/main/java/my/example/statefulactors/utils/MachineOperations.java b/java/patterns-use-cases/src/main/java/my/example/statefulactors/utils/MachineOperations.java index 81c3fafe..d5df8635 100644 --- a/java/patterns-use-cases/src/main/java/my/example/statefulactors/utils/MachineOperations.java +++ b/java/patterns-use-cases/src/main/java/my/example/statefulactors/utils/MachineOperations.java @@ -1,6 +1,6 @@ package my.example.statefulactors.utils; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import java.time.Duration; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -22,21 +22,21 @@ public static void maybeCrash(double probability) { } } - public static void bringUpMachine(Context ctx, String machineId) { + public static void bringUpMachine(String machineId) { logger.info("{} beginning transition to UP", machineId); // Some long fragile process maybeCrash(0.4); - ctx.sleep(Duration.ofMillis(5000)); + Restate.sleep(Duration.ofMillis(5000)); logger.info("{} is now running", machineId); } - public static void tearDownMachine(Context ctx, String machineId) { + public static void tearDownMachine(String machineId) { logger.info("{} beginning transition to down", machineId); // Some long fragile process maybeCrash(0.4); - ctx.sleep(Duration.ofMillis(5000)); + Restate.sleep(Duration.ofMillis(5000)); logger.info("{} is now down", machineId); } } diff --git a/java/patterns-use-cases/src/main/java/my/example/statemachinepayments/PaymentProcessor.java b/java/patterns-use-cases/src/main/java/my/example/statemachinepayments/PaymentProcessor.java index 663ececd..41736cf2 100644 --- a/java/patterns-use-cases/src/main/java/my/example/statemachinepayments/PaymentProcessor.java +++ b/java/patterns-use-cases/src/main/java/my/example/statemachinepayments/PaymentProcessor.java @@ -2,12 +2,12 @@ import static my.example.statemachinepayments.types.PaymentStatus.*; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.common.StateKey; import java.time.Duration; -import my.example.statemachinepayments.accounts.AccountClient; +import my.example.statemachinepayments.accounts.Account; import my.example.statemachinepayments.types.*; /* @@ -33,9 +33,9 @@ public class PaymentProcessor { private static final Duration EXPIRY_TIMEOUT = Duration.ofDays(1); @Handler - public Result makePayment(ObjectContext ctx, Payment payment) { - final String paymentId = ctx.key(); - final PaymentStatus status = ctx.get(STATUS).orElse(NEW); + public Result makePayment(Payment payment) { + final String paymentId = Restate.key(); + final PaymentStatus status = Restate.state().get(STATUS).orElse(NEW); if (status == CANCELLED) { return new Result(false, "Payment already cancelled"); @@ -46,50 +46,50 @@ public Result makePayment(ObjectContext ctx, Payment payment) { // Charge the target account Result paymentResult = - AccountClient.fromContext(ctx, payment.getAccountId()) - .withdraw(payment.getAmountCents()) - .await(); + Restate.virtualObject(Account.class, payment.getAccountId()) + .withdraw(payment.getAmountCents()); // Remember only on success, so that on failure (when we didn't charge) the external // caller may retry this (with the same payment-id), for the sake of this example if (paymentResult.isSuccess()) { - ctx.set(STATUS, COMPLETED_SUCCESSFULLY); - ctx.set(PAYMENT, payment); - PaymentProcessorClient.fromContext(ctx, paymentId).send().expire(EXPIRY_TIMEOUT); + Restate.state().set(STATUS, COMPLETED_SUCCESSFULLY); + Restate.state().set(PAYMENT, payment); + Restate.virtualObjectHandle(PaymentProcessor.class, paymentId) + .send(PaymentProcessor::expire, EXPIRY_TIMEOUT); } return paymentResult; } @Handler - public void cancelPayment(ObjectContext ctx) { - PaymentStatus status = ctx.get(STATUS).orElse(NEW); + public void cancelPayment() { + PaymentStatus status = Restate.state().get(STATUS).orElse(NEW); switch (status) { case NEW -> { // not seen this payment-id before, mark as canceled, in case the cancellation // overtook the actual payment request (on the external caller's side) - ctx.set(STATUS, CANCELLED); - PaymentProcessorClient.fromContext(ctx, ctx.key()).send().expire(EXPIRY_TIMEOUT); + Restate.state().set(STATUS, CANCELLED); + Restate.virtualObjectHandle(PaymentProcessor.class, Restate.key()) + .send(PaymentProcessor::expire, EXPIRY_TIMEOUT); } case CANCELLED -> {} case COMPLETED_SUCCESSFULLY -> { // remember this as cancelled - ctx.set(STATUS, CANCELLED); + Restate.state().set(STATUS, CANCELLED); // undo the payment - Payment payment = ctx.get(PAYMENT).get(); - AccountClient.fromContext(ctx, payment.getAccountId()) - .send() - .deposit(payment.getAmountCents()); + Payment payment = Restate.state().get(PAYMENT).get(); + Restate.virtualObjectHandle(Account.class, payment.getAccountId()) + .send(Account::deposit, payment.getAmountCents()); } } } @Handler - public void expire(ObjectContext ctx) { - ctx.clearAll(); + public void expire() { + Restate.state().clearAll(); } } diff --git a/java/patterns-use-cases/src/main/java/my/example/statemachinepayments/accounts/Account.java b/java/patterns-use-cases/src/main/java/my/example/statemachinepayments/accounts/Account.java index b788656e..2ba322b0 100644 --- a/java/patterns-use-cases/src/main/java/my/example/statemachinepayments/accounts/Account.java +++ b/java/patterns-use-cases/src/main/java/my/example/statemachinepayments/accounts/Account.java @@ -1,6 +1,6 @@ package my.example.statemachinepayments.accounts; -import dev.restate.sdk.ObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.common.StateKey; @@ -18,27 +18,27 @@ public class Account { private static final StateKey BALANCE = StateKey.of("balance", Long.TYPE); @Handler - public void deposit(ObjectContext ctx, Long amountCents) { + public void deposit(Long amountCents) { if (amountCents <= 0) { throw new TerminalException("Amount must be greater than 0"); } - long balanceCents = ctx.get(BALANCE).orElse(initializeRandomAmount()); - ctx.set(BALANCE, balanceCents + amountCents); + long balanceCents = Restate.state().get(BALANCE).orElse(initializeRandomAmount()); + Restate.state().set(BALANCE, balanceCents + amountCents); } @Handler - public Result withdraw(ObjectContext ctx, Long amountCents) { + public Result withdraw(Long amountCents) { if (amountCents <= 0) { throw new TerminalException("Amount must be greater than 0"); } - long balanceCents = ctx.get(BALANCE).orElse(initializeRandomAmount()); + long balanceCents = Restate.state().get(BALANCE).orElse(initializeRandomAmount()); if (balanceCents < amountCents) { return new Result(false, "Insufficient funds: " + balanceCents + " cents"); } - ctx.set(BALANCE, balanceCents - amountCents); + Restate.state().set(BALANCE, balanceCents - amountCents); return new Result(true, "Withdrawal successful"); } diff --git a/java/patterns-use-cases/src/main/java/my/example/syncasync/DataUploadService.java b/java/patterns-use-cases/src/main/java/my/example/syncasync/DataUploadService.java index 269d21c5..fda3fc9b 100644 --- a/java/patterns-use-cases/src/main/java/my/example/syncasync/DataUploadService.java +++ b/java/patterns-use-cases/src/main/java/my/example/syncasync/DataUploadService.java @@ -3,8 +3,7 @@ import static my.example.syncasync.utils.DataOperations.createS3Bucket; import static my.example.syncasync.utils.DataOperations.uploadData; -import dev.restate.sdk.SharedWorkflowContext; -import dev.restate.sdk.WorkflowContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Shared; import dev.restate.sdk.annotation.Workflow; import dev.restate.sdk.common.DurablePromiseKey; @@ -19,19 +18,19 @@ public class DataUploadService { DurablePromiseKey.of("url", String.class); @Workflow - public String run(WorkflowContext ctx) { - String url = ctx.run(String.class, () -> createS3Bucket()); - ctx.run(() -> uploadData(url)); + public String run() { + String url = Restate.run("create bucket", String.class, () -> createS3Bucket()); + Restate.run("upload", () -> uploadData(url)); - ctx.promiseHandle(URL_PROMISE).resolve(url); + Restate.promiseHandle(URL_PROMISE).resolve(url); return url; } @Shared - public void resultAsEmail(SharedWorkflowContext ctx, String email) { - String url = ctx.promise(URL_PROMISE).future().await(); - ctx.run(() -> EmailClient.send(url, email)); + public void resultAsEmail(String email) { + String url = Restate.promise(URL_PROMISE).future().await(); + Restate.run("send email", () -> EmailClient.send(url, email)); } public static void main(String[] args) { diff --git a/java/patterns-use-cases/src/main/java/my/example/syncasync/UploadClient.java b/java/patterns-use-cases/src/main/java/my/example/syncasync/UploadClient.java index 42a8aa9b..f270a17b 100644 --- a/java/patterns-use-cases/src/main/java/my/example/syncasync/UploadClient.java +++ b/java/patterns-use-cases/src/main/java/my/example/syncasync/UploadClient.java @@ -20,16 +20,16 @@ public void uploadData(String userId, String email) throws Exception { // Submit the workflow Client restateClient = Client.connect(RESTATE_URL); - var uploadClient = DataUploadServiceClient.fromClient(restateClient, userId); - uploadClient.submit(); + var handle = + restateClient.workflowHandle(DataUploadService.class, userId).send(DataUploadService::run); String url; try { // Wait for the workflow to complete or timeout - url = uploadClient.workflowHandle().attachAsync().get(5, TimeUnit.SECONDS).response(); + url = handle.attachAsync().get(5, TimeUnit.SECONDS).response(); } catch (TimeoutException e) { logger.info("Slow upload... Mail the link later"); - uploadClient.resultAsEmail(email); + restateClient.workflow(DataUploadService.class, userId).resultAsEmail(email); return; } diff --git a/java/templates/java-gradle/README.md b/java/templates/java-gradle/README.md index d6bef3b2..444cff37 100644 --- a/java/templates/java-gradle/README.md +++ b/java/templates/java-gradle/README.md @@ -10,9 +10,6 @@ To run: ./gradlew run ``` -Restate SDK uses annotation processing to generate client classes. -When modifying the annotated services in Intellij, it is suggested to run **CTRL + F9** to re-generate the client classes. - ## Using AI coding tools If you use Claude Code or Codex, then the Restate plugin will automatically be installed. For Cursor, consult the [skills repo README](https://github.com/restatedev/skills). diff --git a/java/templates/java-gradle/build.gradle.kts b/java/templates/java-gradle/build.gradle.kts index e3b3a470..a0c12c12 100644 --- a/java/templates/java-gradle/build.gradle.kts +++ b/java/templates/java-gradle/build.gradle.kts @@ -7,11 +7,9 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - annotationProcessor("dev.restate:sdk-api-gen:$restateVersion") - // Restate SDK implementation("dev.restate:sdk-java-http:$restateVersion") @@ -26,15 +24,19 @@ dependencies { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(25)) } } // Set main class application { mainClass.set("my.example.Greeter") + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } tasks.named("test") { useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } diff --git a/java/templates/java-gradle/src/main/java/my/example/Greeter.java b/java/templates/java-gradle/src/main/java/my/example/Greeter.java index fcb46da0..663f19e3 100644 --- a/java/templates/java-gradle/src/main/java/my/example/Greeter.java +++ b/java/templates/java-gradle/src/main/java/my/example/Greeter.java @@ -1,6 +1,6 @@ package my.example; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import dev.restate.sdk.endpoint.Endpoint; @@ -18,12 +18,12 @@ public record Greeting(String name) {} public record GreetingResponse(String message) {} @Handler - public GreetingResponse greet(Context ctx, Greeting req) { + public GreetingResponse greet(Greeting req) { // Durably execute a set of steps; resilient against failures - String greetingId = ctx.random().nextUUID().toString(); - ctx.run("Notification", () -> sendNotification(greetingId, req.name)); - ctx.sleep(Duration.ofSeconds(1)); - ctx.run("Reminder", () -> sendReminder(greetingId, req.name)); + String greetingId = Restate.random().nextUUID().toString(); + Restate.run("Notification", () -> sendNotification(greetingId, req.name)); + Restate.sleep(Duration.ofSeconds(1)); + Restate.run("Reminder", () -> sendReminder(greetingId, req.name)); // Respond to caller return new GreetingResponse("You said hi to " + req.name + "!"); diff --git a/java/templates/java-gradle/src/test/java/my/example/GreeterTest.java b/java/templates/java-gradle/src/test/java/my/example/GreeterTest.java index e72e54b7..bc473ca7 100644 --- a/java/templates/java-gradle/src/test/java/my/example/GreeterTest.java +++ b/java/templates/java-gradle/src/test/java/my/example/GreeterTest.java @@ -28,7 +28,7 @@ class GreeterTest { @Test @Timeout(value = 10) void testGreet(@RestateClient Client ingressClient) { - var client = GreeterClient.fromClient(ingressClient); + var client = ingressClient.service(Greeter.class); GreetingResponse response = client.greet(new Greeting("Francesco")); assertEquals(response.message(), "You said hi to Francesco!"); diff --git a/java/templates/java-maven-quarkus/pom.xml b/java/templates/java-maven-quarkus/pom.xml index 284bd8b2..d4de689a 100644 --- a/java/templates/java-maven-quarkus/pom.xml +++ b/java/templates/java-maven-quarkus/pom.xml @@ -7,7 +7,7 @@ 3.13.0 - 17 + 25 UTF-8 UTF-8 quarkus-bom @@ -15,9 +15,10 @@ 3.15.1 true 3.3.1 - 2.7.0 + 2.9.0 + @@ -64,11 +65,31 @@ + + + org.apache.maven.plugins + maven-toolchains-plugin + 3.2.0 + + + + select-jdk-toolchain + + + + + [25,) + + ${quarkus.platform.group-id} quarkus-maven-plugin ${quarkus.platform.version} true + + + --enable-native-access=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow + @@ -85,13 +106,6 @@ ${compiler-plugin.version} true - - - dev.restate - sdk-api-gen - ${restate.version} - - diff --git a/java/templates/java-maven-quarkus/src/main/java/org/acme/Greeter.java b/java/templates/java-maven-quarkus/src/main/java/org/acme/Greeter.java index 31ddc6cf..7b60ee68 100644 --- a/java/templates/java-maven-quarkus/src/main/java/org/acme/Greeter.java +++ b/java/templates/java-maven-quarkus/src/main/java/org/acme/Greeter.java @@ -1,6 +1,6 @@ package org.acme; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import jakarta.enterprise.context.ApplicationScoped; @@ -21,12 +21,12 @@ public record Greeting(String name) {} public record GreetingResponse(String message) {} @Handler - public GreetingResponse greet(Context ctx, Greeting req) { + public GreetingResponse greet(Greeting req) { // Durably execute a set of steps; resilient against failures - String greetingId = ctx.random().nextUUID().toString(); - ctx.run("Notification", () -> sendNotification(greetingId, req.name)); - ctx.sleep(Duration.ofSeconds(1)); - ctx.run("Reminder", () -> sendReminder(greetingId, req.name)); + String greetingId = Restate.random().nextUUID().toString(); + Restate.run("Notification", () -> sendNotification(greetingId, req.name)); + Restate.sleep(Duration.ofSeconds(1)); + Restate.run("Reminder", () -> sendReminder(greetingId, req.name)); // Respond to caller return new GreetingResponse("You said hi to " + req.name + "!"); diff --git a/java/templates/java-maven-spring-boot/README.md b/java/templates/java-maven-spring-boot/README.md index 1426e395..e512d5db 100644 --- a/java/templates/java-maven-spring-boot/README.md +++ b/java/templates/java-maven-spring-boot/README.md @@ -12,9 +12,6 @@ To start the service, simply run: $ mvn compile spring-boot:run ``` -Restate SDK uses annotation processing to generate client classes. -When modifying the annotated services in Intellij, it is suggested to run **CTRL + F9** to re-generate the client classes. - ## Using AI coding tools If you use Claude Code or Codex, then the Restate plugin will automatically be installed. For Cursor, consult the [skills repo README](https://github.com/restatedev/skills). diff --git a/java/templates/java-maven-spring-boot/pom.xml b/java/templates/java-maven-spring-boot/pom.xml index d5feb111..9c0c44a3 100644 --- a/java/templates/java-maven-spring-boot/pom.xml +++ b/java/templates/java-maven-spring-boot/pom.xml @@ -27,9 +27,11 @@ - 17 - 2.7.0 + 25 + 2.9.0 + + org.springframework.boot @@ -55,23 +57,37 @@ + + + org.apache.maven.plugins + maven-toolchains-plugin + 3.2.0 + + + + select-jdk-toolchain + + + + + [25,) + + org.springframework.boot spring-boot-maven-plugin + + + --enable-native-access=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow + + + + maven-surefire-plugin + + + --enable-native-access=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow + - - maven-compiler-plugin - - true - - - dev.restate - sdk-api-gen - ${restate.version} - - - - diff --git a/java/templates/java-maven-spring-boot/src/main/java/com/example/restatestarter/Greeter.java b/java/templates/java-maven-spring-boot/src/main/java/com/example/restatestarter/Greeter.java index bbc24a06..63de5f5c 100644 --- a/java/templates/java-maven-spring-boot/src/main/java/com/example/restatestarter/Greeter.java +++ b/java/templates/java-maven-spring-boot/src/main/java/com/example/restatestarter/Greeter.java @@ -1,8 +1,9 @@ package com.example.restatestarter; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; -import dev.restate.sdk.springboot.RestateService; +import dev.restate.sdk.annotation.Service; +import dev.restate.sdk.springboot.RestateComponent; import org.springframework.beans.factory.annotation.Value; import java.time.Duration; @@ -10,7 +11,8 @@ import static com.example.restatestarter.Utils.sendNotification; import static com.example.restatestarter.Utils.sendReminder; -@RestateService +@RestateComponent +@Service public class Greeter { @Value("${greetingPrefix}") @@ -20,12 +22,12 @@ public record Greeting(String name) {} public record GreetingResponse(String message) {} @Handler - public GreetingResponse greet(Context ctx, Greeting req) { + public GreetingResponse greet(Greeting req) { // Durably execute a set of steps; resilient against failures - String greetingId = ctx.random().nextUUID().toString(); - ctx.run("Notification", () -> sendNotification(greetingId, req.name)); - ctx.sleep(Duration.ofSeconds(1)); - ctx.run("Reminder", () -> sendReminder(greetingId, req.name)); + String greetingId = Restate.random().nextUUID().toString(); + Restate.run("Notification", () -> sendNotification(greetingId, req.name)); + Restate.sleep(Duration.ofSeconds(1)); + Restate.run("Reminder", () -> sendReminder(greetingId, req.name)); // Respond to caller return new GreetingResponse("You said " + greetingPrefix + " to " + req.name + "!"); diff --git a/java/templates/java-maven-spring-boot/src/main/java/com/example/restatestarter/HelloController.java b/java/templates/java-maven-spring-boot/src/main/java/com/example/restatestarter/HelloController.java index 9bfca0ff..45588de3 100644 --- a/java/templates/java-maven-spring-boot/src/main/java/com/example/restatestarter/HelloController.java +++ b/java/templates/java-maven-spring-boot/src/main/java/com/example/restatestarter/HelloController.java @@ -16,7 +16,7 @@ public HelloController(Client restateClient) { @GetMapping("/") public String index() { - return GreeterClient.fromClient(restateClient).greet(new Greeting("Alice")) + " from Spring Boot!"; + return restateClient.service(Greeter.class).greet(new Greeting("Alice")) + " from Spring Boot!"; } } \ No newline at end of file diff --git a/java/templates/java-maven-spring-boot/src/test/java/com/example/restatestarter/GreeterTest.java b/java/templates/java-maven-spring-boot/src/test/java/com/example/restatestarter/GreeterTest.java index 0a3408f1..54696d99 100644 --- a/java/templates/java-maven-spring-boot/src/test/java/com/example/restatestarter/GreeterTest.java +++ b/java/templates/java-maven-spring-boot/src/test/java/com/example/restatestarter/GreeterTest.java @@ -29,7 +29,7 @@ public class GreeterTest { @Test @Timeout(value = 10) void greet(@RestateClient Client ingressClient) { - var client = GreeterClient.fromClient(ingressClient); + var client = ingressClient.service(Greeter.class); var response = client.greet(new Greeting("Francesco")); assertThat(response.message()).isEqualTo("You said ciao to Francesco!"); diff --git a/java/templates/java-maven/README.md b/java/templates/java-maven/README.md index 714e2837..370b8abc 100644 --- a/java/templates/java-maven/README.md +++ b/java/templates/java-maven/README.md @@ -7,12 +7,9 @@ Have a look at the [Java Quickstart guide](https://docs.restate.dev/get_started/ To run: ```shell -mvn compile exec:java +mvn compile exec:exec ``` -Restate SDK uses annotation processing to generate client classes. -When modifying the annotated services in Intellij, it is suggested to run **CTRL + F9** to re-generate the client classes. - ## Using AI coding tools If you use Claude Code or Codex, then the Restate plugin will automatically be installed. For Cursor, consult the [skills repo README](https://github.com/restatedev/skills). diff --git a/java/templates/java-maven/pom.xml b/java/templates/java-maven/pom.xml index c9e17ac7..9de37fbe 100644 --- a/java/templates/java-maven/pom.xml +++ b/java/templates/java-maven/pom.xml @@ -13,11 +13,11 @@ UTF-8 - 17 - 17 - 2.7.0 + 25 + 2.9.0 + dev.restate @@ -59,35 +59,48 @@ - + org.apache.maven.plugins - maven-compiler-plugin - 3.11.0 + maven-toolchains-plugin + 3.2.0 + + + + select-jdk-toolchain + + + - - - dev.restate - sdk-api-gen - ${restate.version} - - + [25,) - + org.codehaus.mojo exec-maven-plugin - 3.1.0 + 3.6.3 - my.example.Greeter + java + + --enable-native-access=ALL-UNNAMED + --sun-misc-unsafe-memory-access=allow + -classpath + + my.example.Greeter + maven-surefire-plugin 3.5.1 + + + --enable-native-access=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow + diff --git a/java/templates/java-maven/src/main/java/my/example/Greeter.java b/java/templates/java-maven/src/main/java/my/example/Greeter.java index 9efbb825..ccf9eff3 100644 --- a/java/templates/java-maven/src/main/java/my/example/Greeter.java +++ b/java/templates/java-maven/src/main/java/my/example/Greeter.java @@ -1,6 +1,6 @@ package my.example; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import dev.restate.sdk.endpoint.Endpoint; @@ -18,12 +18,12 @@ public record Greeting(String name) {} public record GreetingResponse(String message) {} @Handler - public GreetingResponse greet(Context ctx, Greeting req) { + public GreetingResponse greet(Greeting req) { // Durably execute a set of steps; resilient against failures - String greetingId = ctx.random().nextUUID().toString(); - ctx.run("Notification", () -> sendNotification(greetingId, req.name)); - ctx.sleep(Duration.ofSeconds(1)); - ctx.run("Reminder", () -> sendReminder(greetingId, req.name)); + String greetingId = Restate.random().nextUUID().toString(); + Restate.run("Notification", () -> sendNotification(greetingId, req.name)); + Restate.sleep(Duration.ofSeconds(1)); + Restate.run("Reminder", () -> sendReminder(greetingId, req.name)); // Respond to caller return new GreetingResponse("You said hi to " + req.name + "!"); diff --git a/java/templates/java-maven/src/test/java/my/example/GreeterTest.java b/java/templates/java-maven/src/test/java/my/example/GreeterTest.java index c3e42324..94775334 100644 --- a/java/templates/java-maven/src/test/java/my/example/GreeterTest.java +++ b/java/templates/java-maven/src/test/java/my/example/GreeterTest.java @@ -28,7 +28,7 @@ class GreeterTest { @Test @Timeout(value = 10) void testGreet(@RestateClient Client ingressClient) { - var client = GreeterClient.fromClient(ingressClient); + var client = ingressClient.service(Greeter.class); GreetingResponse response = client.greet(new Greeting("Francesco")); assertEquals(response.message(), "You said hi to Francesco!"); diff --git a/java/templates/java-new-api-gradle/.agents/plugins/marketplace.json b/java/templates/java-new-api-gradle/.agents/plugins/marketplace.json deleted file mode 100644 index b9c8574c..00000000 --- a/java/templates/java-new-api-gradle/.agents/plugins/marketplace.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "restatedev-plugin", - "interface": { - "displayName": "Restate" - }, - "plugins": [ - { - "name": "restatedev", - "source": { - "source": "git-subdir", - "url": "https://github.com/restatedev/skills.git", - "path": "./plugins/restatedev", - "ref": "main" - }, - "policy": { - "installation": "AVAILABLE", - "authentication": "ON_INSTALL" - }, - "category": "Coding" - } - ] -} diff --git a/java/templates/java-new-api-gradle/.ai/mcp/mcp.json b/java/templates/java-new-api-gradle/.ai/mcp/mcp.json deleted file mode 100644 index 78a21c5a..00000000 --- a/java/templates/java-new-api-gradle/.ai/mcp/mcp.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "mcpServers": { - "restate-docs": { - "url": "https://docs.restate.dev/mcp" - } - } -} \ No newline at end of file diff --git a/java/templates/java-new-api-gradle/.aiassistant/rules/restate.md b/java/templates/java-new-api-gradle/.aiassistant/rules/restate.md deleted file mode 100644 index 599b1e28..00000000 --- a/java/templates/java-new-api-gradle/.aiassistant/rules/restate.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -apply: by model decision -instructions: Guidelines for working with Restate durable services in this project ---- - -# Restate Java project - -This project uses [Restate](https://restate.dev) — a durable execution runtime for resilient services, workflows, and AI agents. Restate captures every completed step so handlers can resume exactly where they left off after crashes, restarts, or retries. - -## Core concepts - -- **Services** — stateless handlers that run deterministically; retries resume from the last durable step. -- **Virtual Objects** — stateful, key-addressed handlers. State lives in Restate; Restate serializes per-key access. -- **Workflows** — long-running, multi-step flows with a single lifecycle per key. -- **Contexts** — every handler receives `Context`, `ObjectContext`, `WorkflowContext` (or their `Shared` variants). All non-deterministic work (I/O, random, time, RPC) must go through the context so it is journaled. - -## Rules for this codebase - -- Never perform side effects directly. Wrap I/O, randomness, timers, and RPCs in `ctx.run(...)`, `ctx.sleep(...)`, etc., so they are durable. -- Keep handler code deterministic between journal entries: same inputs must produce the same sequence of context calls. -- Prefer the typed client APIs (`XxxClient.fromContext(ctx, key)`) for service-to-service calls instead of raw HTTP. -- Serializable inputs/outputs only — use Jackson-compatible POJOs or records. - -## Getting more detail - -For API reference, lifecycle semantics, debugging, migration guidance, Kafka/idempotency patterns, and framework integrations (Quarkus, Spring Boot), query the **`restate-docs` MCP server** configured for this project (`.ai/mcp/mcp.json`). It's bound to `https://docs.restate.dev/mcp` and can search the full documentation on demand. - -Useful entry points the MCP server can resolve: -- SDK API and pitfalls -- Designing services and picking a service type -- Invocation lifecycle, cancellation, idempotency, sends, Kafka -- Debugging stuck invocations and journal mismatches diff --git a/java/templates/java-new-api-gradle/.claude/settings.json b/java/templates/java-new-api-gradle/.claude/settings.json deleted file mode 100644 index 1c69c4f5..00000000 --- a/java/templates/java-new-api-gradle/.claude/settings.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extraKnownMarketplaces": { - "restatedev-plugin": { - "source": { - "source": "github", - "repo": "restatedev/skills" - } - } - }, - "enabledPlugins": { - "restatedev@restatedev-plugin": true - } -} diff --git a/java/templates/java-new-api-gradle/.gitignore b/java/templates/java-new-api-gradle/.gitignore deleted file mode 100644 index 135eaf77..00000000 --- a/java/templates/java-new-api-gradle/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build - -*.iml - -# Unignore the gradle wrapper -!gradle/wrapper/gradle-wrapper.jar \ No newline at end of file diff --git a/java/templates/java-new-api-gradle/README.md b/java/templates/java-new-api-gradle/README.md deleted file mode 100644 index 444cff37..00000000 --- a/java/templates/java-new-api-gradle/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Hello world - Java HTTP example - -Sample project configuration of a Restate service using the Java SDK and HTTP server. - -Have a look at the [Java Quickstart guide](https://docs.restate.dev/get_started/quickstart?sdk=java) for more information on how to use this project. - -To run: - -```shell -./gradlew run -``` - -## Using AI coding tools - -If you use Claude Code or Codex, then the Restate plugin will automatically be installed. For Cursor, consult the [skills repo README](https://github.com/restatedev/skills). - -Plugin repo: https://github.com/restatedev/skills/tree/main \ No newline at end of file diff --git a/java/templates/java-new-api-gradle/build.gradle.kts b/java/templates/java-new-api-gradle/build.gradle.kts deleted file mode 100644 index bdf3bbbe..00000000 --- a/java/templates/java-new-api-gradle/build.gradle.kts +++ /dev/null @@ -1,38 +0,0 @@ -plugins { - java - application -} - -repositories { - mavenCentral() -} - -val restateVersion = "2.7.0" - -dependencies { - // Restate SDK - implementation("dev.restate:sdk-java-http:$restateVersion") - - // Logging - implementation("org.apache.logging.log4j:log4j-api:2.24.1") - - // JUnit (API & test launcher) - testImplementation("org.junit.jupiter:junit-jupiter:5.14.1") - testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.14.2") - testImplementation("dev.restate:sdk-testing:$restateVersion") -} - -java { - toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) - } -} - -// Set main class -application { - mainClass.set("my.example.Greeter") -} - -tasks.named("test") { - useJUnitPlatform() -} diff --git a/java/templates/java-new-api-gradle/gradle/wrapper/gradle-wrapper.jar b/java/templates/java-new-api-gradle/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 1b33c55baabb587c669f562ae36f953de2481846..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43764 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 '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH="\\\"\\\"" - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/java/templates/java-new-api-gradle/gradlew.bat b/java/templates/java-new-api-gradle/gradlew.bat deleted file mode 100644 index 5eed7ee8..00000000 --- a/java/templates/java-new-api-gradle/gradlew.bat +++ /dev/null @@ -1,94 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem -@rem SPDX-License-Identifier: Apache-2.0 -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH= - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/java/templates/java-new-api-gradle/settings.gradle.kts b/java/templates/java-new-api-gradle/settings.gradle.kts deleted file mode 100644 index 778b3b8e..00000000 --- a/java/templates/java-new-api-gradle/settings.gradle.kts +++ /dev/null @@ -1,3 +0,0 @@ -plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version("1.0.0") -} \ No newline at end of file diff --git a/java/templates/java-new-api-gradle/src/main/java/my/example/Greeter.java b/java/templates/java-new-api-gradle/src/main/java/my/example/Greeter.java deleted file mode 100644 index 663f19e3..00000000 --- a/java/templates/java-new-api-gradle/src/main/java/my/example/Greeter.java +++ /dev/null @@ -1,35 +0,0 @@ -package my.example; - -import dev.restate.sdk.Restate; -import dev.restate.sdk.annotation.Handler; -import dev.restate.sdk.annotation.Service; -import dev.restate.sdk.endpoint.Endpoint; -import dev.restate.sdk.http.vertx.RestateHttpServer; - -import java.time.Duration; - -import static my.example.Utils.sendNotification; -import static my.example.Utils.sendReminder; - -@Service -public class Greeter { - - public record Greeting(String name) {} - public record GreetingResponse(String message) {} - - @Handler - public GreetingResponse greet(Greeting req) { - // Durably execute a set of steps; resilient against failures - String greetingId = Restate.random().nextUUID().toString(); - Restate.run("Notification", () -> sendNotification(greetingId, req.name)); - Restate.sleep(Duration.ofSeconds(1)); - Restate.run("Reminder", () -> sendReminder(greetingId, req.name)); - - // Respond to caller - return new GreetingResponse("You said hi to " + req.name + "!"); - } - - public static void main(String[] args) { - RestateHttpServer.listen(Endpoint.bind(new Greeter())); - } -} diff --git a/java/templates/java-new-api-gradle/src/main/java/my/example/Utils.java b/java/templates/java-new-api-gradle/src/main/java/my/example/Utils.java deleted file mode 100644 index 7e7138d7..00000000 --- a/java/templates/java-new-api-gradle/src/main/java/my/example/Utils.java +++ /dev/null @@ -1,22 +0,0 @@ -package my.example; - -// You can remove this file. -// It's only purpose is providing stubs for the template. - -class Utils { - public static void sendNotification(String greetingId, String name){ - if (Math.random() < 0.7 && name.equals("Alice")) { // 70% chance of failure - System.out.println("[👻 SIMULATED] Failed to send notification: " + greetingId + " - " + name); - throw new RuntimeException("[👻 SIMULATED] Failed to send notification: " + greetingId + " - " + name); - } - System.out.println("Notification sent: " + greetingId + " - " + name); - } - - public static void sendReminder(String greetingId, String name){ - if (Math.random() < 0.7 && name.equals("Alice")) { // 70% chance of failure - System.out.println("[👻 SIMULATED] Failed to send reminder: " + greetingId); - throw new RuntimeException("[👻 SIMULATED] Failed to send reminder: " + greetingId); - } - System.out.println("Reminder sent: " + greetingId); - } -} \ No newline at end of file diff --git a/java/templates/java-new-api-gradle/src/main/resources/log4j2.properties b/java/templates/java-new-api-gradle/src/main/resources/log4j2.properties deleted file mode 100644 index 536d1d39..00000000 --- a/java/templates/java-new-api-gradle/src/main/resources/log4j2.properties +++ /dev/null @@ -1,26 +0,0 @@ -# Set to debug or trace if log4j initialization is failing -status = warn - -# Console appender configuration -appender.console.type = Console -appender.console.name = consoleLogger -appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %notEmpty{[%X{restateInvocationTarget}]}%notEmpty{[%X{restateInvocationId}]} %c - %m%n - -# Filter out logging during replay -appender.console.filter.replay.type = ContextMapFilter -appender.console.filter.replay.onMatch = DENY -appender.console.filter.replay.onMismatch = NEUTRAL -appender.console.filter.replay.0.type = KeyValuePair -appender.console.filter.replay.0.key = restateInvocationStatus -appender.console.filter.replay.0.value = REPLAYING - -# Restate logs to debug level -logger.app.name = dev.restate -logger.app.level = info -logger.app.additivity = false -logger.app.appenderRef.console.ref = consoleLogger - -# Root logger -rootLogger.level = info -rootLogger.appenderRef.stdout.ref = consoleLogger \ No newline at end of file diff --git a/java/templates/java-new-api-gradle/src/test/java/my/example/GreeterTest.java b/java/templates/java-new-api-gradle/src/test/java/my/example/GreeterTest.java deleted file mode 100644 index bc473ca7..00000000 --- a/java/templates/java-new-api-gradle/src/test/java/my/example/GreeterTest.java +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) 2023 - Restate Software, Inc., Restate GmbH -// -// This file is part of the Restate Java SDK, -// which is released under the MIT license. -// -// You can find a copy of the license in file LICENSE in the root -// directory of this repository or package, or at -// https://github.com/restatedev/sdk-java/blob/main/LICENSE -package my.example; - -import dev.restate.client.Client; -import dev.restate.sdk.testing.BindService; -import dev.restate.sdk.testing.RestateClient; -import dev.restate.sdk.testing.RestateTest; -import my.example.Greeter.GreetingResponse; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Timeout; - -import static my.example.Greeter.Greeting; -import static org.junit.jupiter.api.Assertions.assertEquals; - -@RestateTest -class GreeterTest { - - @BindService - private final Greeter greeter = new Greeter(); - - @Test - @Timeout(value = 10) - void testGreet(@RestateClient Client ingressClient) { - var client = ingressClient.service(Greeter.class); - - GreetingResponse response = client.greet(new Greeting("Francesco")); - assertEquals(response.message(), "You said hi to Francesco!"); - } -} diff --git a/java/templates/java-new-api-maven-spring-boot/.agents/plugins/marketplace.json b/java/templates/java-new-api-maven-spring-boot/.agents/plugins/marketplace.json deleted file mode 100644 index b9c8574c..00000000 --- a/java/templates/java-new-api-maven-spring-boot/.agents/plugins/marketplace.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "restatedev-plugin", - "interface": { - "displayName": "Restate" - }, - "plugins": [ - { - "name": "restatedev", - "source": { - "source": "git-subdir", - "url": "https://github.com/restatedev/skills.git", - "path": "./plugins/restatedev", - "ref": "main" - }, - "policy": { - "installation": "AVAILABLE", - "authentication": "ON_INSTALL" - }, - "category": "Coding" - } - ] -} diff --git a/java/templates/java-new-api-maven-spring-boot/.ai/mcp/mcp.json b/java/templates/java-new-api-maven-spring-boot/.ai/mcp/mcp.json deleted file mode 100644 index 78a21c5a..00000000 --- a/java/templates/java-new-api-maven-spring-boot/.ai/mcp/mcp.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "mcpServers": { - "restate-docs": { - "url": "https://docs.restate.dev/mcp" - } - } -} \ No newline at end of file diff --git a/java/templates/java-new-api-maven-spring-boot/.aiassistant/rules/restate.md b/java/templates/java-new-api-maven-spring-boot/.aiassistant/rules/restate.md deleted file mode 100644 index 599b1e28..00000000 --- a/java/templates/java-new-api-maven-spring-boot/.aiassistant/rules/restate.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -apply: by model decision -instructions: Guidelines for working with Restate durable services in this project ---- - -# Restate Java project - -This project uses [Restate](https://restate.dev) — a durable execution runtime for resilient services, workflows, and AI agents. Restate captures every completed step so handlers can resume exactly where they left off after crashes, restarts, or retries. - -## Core concepts - -- **Services** — stateless handlers that run deterministically; retries resume from the last durable step. -- **Virtual Objects** — stateful, key-addressed handlers. State lives in Restate; Restate serializes per-key access. -- **Workflows** — long-running, multi-step flows with a single lifecycle per key. -- **Contexts** — every handler receives `Context`, `ObjectContext`, `WorkflowContext` (or their `Shared` variants). All non-deterministic work (I/O, random, time, RPC) must go through the context so it is journaled. - -## Rules for this codebase - -- Never perform side effects directly. Wrap I/O, randomness, timers, and RPCs in `ctx.run(...)`, `ctx.sleep(...)`, etc., so they are durable. -- Keep handler code deterministic between journal entries: same inputs must produce the same sequence of context calls. -- Prefer the typed client APIs (`XxxClient.fromContext(ctx, key)`) for service-to-service calls instead of raw HTTP. -- Serializable inputs/outputs only — use Jackson-compatible POJOs or records. - -## Getting more detail - -For API reference, lifecycle semantics, debugging, migration guidance, Kafka/idempotency patterns, and framework integrations (Quarkus, Spring Boot), query the **`restate-docs` MCP server** configured for this project (`.ai/mcp/mcp.json`). It's bound to `https://docs.restate.dev/mcp` and can search the full documentation on demand. - -Useful entry points the MCP server can resolve: -- SDK API and pitfalls -- Designing services and picking a service type -- Invocation lifecycle, cancellation, idempotency, sends, Kafka -- Debugging stuck invocations and journal mismatches diff --git a/java/templates/java-new-api-maven-spring-boot/.claude/settings.json b/java/templates/java-new-api-maven-spring-boot/.claude/settings.json deleted file mode 100644 index 1c69c4f5..00000000 --- a/java/templates/java-new-api-maven-spring-boot/.claude/settings.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extraKnownMarketplaces": { - "restatedev-plugin": { - "source": { - "source": "github", - "repo": "restatedev/skills" - } - } - }, - "enabledPlugins": { - "restatedev@restatedev-plugin": true - } -} diff --git a/java/templates/java-new-api-maven-spring-boot/.gitattributes b/java/templates/java-new-api-maven-spring-boot/.gitattributes deleted file mode 100644 index 3b41682a..00000000 --- a/java/templates/java-new-api-maven-spring-boot/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -/mvnw text eol=lf -*.cmd text eol=crlf diff --git a/java/templates/java-new-api-maven-spring-boot/.gitignore b/java/templates/java-new-api-maven-spring-boot/.gitignore deleted file mode 100644 index 549e00a2..00000000 --- a/java/templates/java-new-api-maven-spring-boot/.gitignore +++ /dev/null @@ -1,33 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/**/target/ -!**/src/test/**/target/ - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ -!**/src/main/**/build/ -!**/src/test/**/build/ - -### VS Code ### -.vscode/ diff --git a/java/templates/java-new-api-maven-spring-boot/.mvn/wrapper/maven-wrapper.properties b/java/templates/java-new-api-maven-spring-boot/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index d58dfb70..00000000 --- a/java/templates/java-new-api-maven-spring-boot/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 -distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/java/templates/java-new-api-maven-spring-boot/README.md b/java/templates/java-new-api-maven-spring-boot/README.md deleted file mode 100644 index e512d5db..00000000 --- a/java/templates/java-new-api-maven-spring-boot/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Hello world - Spring Boot example - -Sample project configuration of a Restate service using the Java SDK and Spring Boot. - -Have a look at the [Java Quickstart guide](https://docs.restate.dev/get_started/quickstart?sdk=java) for more information on how to use this project. - -## Starting the service - -To start the service, simply run: - -```shell -$ mvn compile spring-boot:run -``` - -## Using AI coding tools - -If you use Claude Code or Codex, then the Restate plugin will automatically be installed. For Cursor, consult the [skills repo README](https://github.com/restatedev/skills). - -Plugin repo: https://github.com/restatedev/skills/tree/main \ No newline at end of file diff --git a/java/templates/java-new-api-maven-spring-boot/mvnw b/java/templates/java-new-api-maven-spring-boot/mvnw deleted file mode 100755 index 19529ddf..00000000 --- a/java/templates/java-new-api-maven-spring-boot/mvnw +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.2 -# -# Optional ENV vars -# ----------------- -# JAVA_HOME - location of a JDK home dir, required when download maven via java source -# MVNW_REPOURL - repo url base for downloading maven distribution -# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output -# ---------------------------------------------------------------------------- - -set -euf -[ "${MVNW_VERBOSE-}" != debug ] || set -x - -# OS specific support. -native_path() { printf %s\\n "$1"; } -case "$(uname)" in -CYGWIN* | MINGW*) - [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" - native_path() { cygpath --path --windows "$1"; } - ;; -esac - -# set JAVACMD and JAVACCMD -set_java_home() { - # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched - if [ -n "${JAVA_HOME-}" ]; then - if [ -x "$JAVA_HOME/jre/sh/java" ]; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - JAVACCMD="$JAVA_HOME/jre/sh/javac" - else - JAVACMD="$JAVA_HOME/bin/java" - JAVACCMD="$JAVA_HOME/bin/javac" - - if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then - echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 - echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 - return 1 - fi - fi - else - JAVACMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v java - )" || : - JAVACCMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v javac - )" || : - - if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then - echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 - return 1 - fi - fi -} - -# hash string like Java String::hashCode -hash_string() { - str="${1:-}" h=0 - while [ -n "$str" ]; do - char="${str%"${str#?}"}" - h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) - str="${str#?}" - done - printf %x\\n $h -} - -verbose() { :; } -[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } - -die() { - printf %s\\n "$1" >&2 - exit 1 -} - -trim() { - # MWRAPPER-139: - # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. - # Needed for removing poorly interpreted newline sequences when running in more - # exotic environments such as mingw bash on Windows. - printf "%s" "${1}" | tr -d '[:space:]' -} - -# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties -while IFS="=" read -r key value; do - case "${key-}" in - distributionUrl) distributionUrl=$(trim "${value-}") ;; - distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; - esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" - -case "${distributionUrl##*/}" in -maven-mvnd-*bin.*) - MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ - case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in - *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; - :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; - :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; - :Linux*x86_64*) distributionPlatform=linux-amd64 ;; - *) - echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 - distributionPlatform=linux-amd64 - ;; - esac - distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" - ;; -maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; -esac - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" -distributionUrlName="${distributionUrl##*/}" -distributionUrlNameMain="${distributionUrlName%.*}" -distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" -MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" - -exec_maven() { - unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : - exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" -} - -if [ -d "$MAVEN_HOME" ]; then - verbose "found existing MAVEN_HOME at $MAVEN_HOME" - exec_maven "$@" -fi - -case "${distributionUrl-}" in -*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; -*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; -esac - -# prepare tmp dir -if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then - clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } - trap clean HUP INT TERM EXIT -else - die "cannot create temp dir" -fi - -mkdir -p -- "${MAVEN_HOME%/*}" - -# Download and Install Apache Maven -verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -verbose "Downloading from: $distributionUrl" -verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -# select .zip or .tar.gz -if ! command -v unzip >/dev/null; then - distributionUrl="${distributionUrl%.zip}.tar.gz" - distributionUrlName="${distributionUrl##*/}" -fi - -# verbose opt -__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' -[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v - -# normalize http auth -case "${MVNW_PASSWORD:+has-password}" in -'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; -has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; -esac - -if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then - verbose "Found wget ... using wget" - wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" -elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then - verbose "Found curl ... using curl" - curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" -elif set_java_home; then - verbose "Falling back to use Java to download" - javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" - targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" - cat >"$javaSource" <<-END - public class Downloader extends java.net.Authenticator - { - protected java.net.PasswordAuthentication getPasswordAuthentication() - { - return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); - } - public static void main( String[] args ) throws Exception - { - setDefault( new Downloader() ); - java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); - } - } - END - # For Cygwin/MinGW, switch paths to Windows format before running javac and java - verbose " - Compiling Downloader.java ..." - "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" - verbose " - Running Downloader.java ..." - "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" -fi - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -if [ -n "${distributionSha256Sum-}" ]; then - distributionSha256Result=false - if [ "$MVN_CMD" = mvnd.sh ]; then - echo "Checksum validation is not supported for maven-mvnd." >&2 - echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - elif command -v shasum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - else - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 - echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - fi - if [ $distributionSha256Result = false ]; then - echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 - echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 - exit 1 - fi -fi - -# unzip and move -if command -v unzip >/dev/null; then - unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" -else - tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" -fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" - -clean || : -exec_maven "$@" diff --git a/java/templates/java-new-api-maven-spring-boot/mvnw.cmd b/java/templates/java-new-api-maven-spring-boot/mvnw.cmd deleted file mode 100644 index 249bdf38..00000000 --- a/java/templates/java-new-api-maven-spring-boot/mvnw.cmd +++ /dev/null @@ -1,149 +0,0 @@ -<# : batch portion -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.2 -@REM -@REM Optional ENV vars -@REM MVNW_REPOURL - repo url base for downloading maven distribution -@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output -@REM ---------------------------------------------------------------------------- - -@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) -@SET __MVNW_CMD__= -@SET __MVNW_ERROR__= -@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% -@SET PSModulePath= -@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( - IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) -) -@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% -@SET __MVNW_PSMODULEP_SAVE= -@SET __MVNW_ARG0_NAME__= -@SET MVNW_USERNAME= -@SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) -@echo Cannot start maven from wrapper >&2 && exit /b 1 -@GOTO :EOF -: end batch / begin powershell #> - -$ErrorActionPreference = "Stop" -if ($env:MVNW_VERBOSE -eq "true") { - $VerbosePreference = "Continue" -} - -# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties -$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl -if (!$distributionUrl) { - Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" -} - -switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { - "maven-mvnd-*" { - $USE_MVND = $true - $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" - $MVN_CMD = "mvnd.cmd" - break - } - default { - $USE_MVND = $false - $MVN_CMD = $script -replace '^mvnw','mvn' - break - } -} - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" -} -$distributionUrlName = $distributionUrl -replace '^.*/','' -$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" -if ($env:MAVEN_USER_HOME) { - $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" -} -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' -$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" - -if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { - Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" - Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" - exit $? -} - -if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { - Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" -} - -# prepare tmp dir -$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile -$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" -$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null -trap { - if ($TMP_DOWNLOAD_DIR.Exists) { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } - } -} - -New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null - -# Download and Install Apache Maven -Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -Write-Verbose "Downloading from: $distributionUrl" -Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -$webclient = New-Object System.Net.WebClient -if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { - $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) -} -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum -if ($distributionSha256Sum) { - if ($USE_MVND) { - Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." - } - Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash - if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { - Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." - } -} - -# unzip and move -Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null -try { - Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null -} catch { - if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { - Write-Error "fail to move MAVEN_HOME" - } -} finally { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } -} - -Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/java/templates/java-new-api-maven-spring-boot/pom.xml b/java/templates/java-new-api-maven-spring-boot/pom.xml deleted file mode 100644 index 2d521a09..00000000 --- a/java/templates/java-new-api-maven-spring-boot/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 3.5.6 - - - com.example - restate-starter - 0.0.1-SNAPSHOT - restate-starter - Starter for Spring Boot + Restate - - - - - - - - - - - - - - - 17 - 2.7.0 - - - - org.springframework.boot - spring-boot-starter-web - - - dev.restate - sdk-spring-boot-starter - ${restate.version} - - - - org.springframework.boot - spring-boot-starter-test - test - - - dev.restate - sdk-testing - ${restate.version} - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - diff --git a/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/Greeter.java b/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/Greeter.java deleted file mode 100644 index 628cc823..00000000 --- a/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/Greeter.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.example.restatestarter; - -import dev.restate.sdk.Restate; -import dev.restate.sdk.annotation.Handler; -import dev.restate.sdk.springboot.RestateService; -import org.springframework.beans.factory.annotation.Value; - -import java.time.Duration; - -import static com.example.restatestarter.Utils.sendNotification; -import static com.example.restatestarter.Utils.sendReminder; - -@RestateService -public class Greeter { - - @Value("${greetingPrefix}") - private String greetingPrefix; - - public record Greeting(String name) {} - public record GreetingResponse(String message) {} - - @Handler - public GreetingResponse greet(Greeting req) { - // Durably execute a set of steps; resilient against failures - String greetingId = Restate.random().nextUUID().toString(); - Restate.run("Notification", () -> sendNotification(greetingId, req.name)); - Restate.sleep(Duration.ofSeconds(1)); - Restate.run("Reminder", () -> sendReminder(greetingId, req.name)); - - // Respond to caller - return new GreetingResponse("You said " + greetingPrefix + " to " + req.name + "!"); - } -} - - diff --git a/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/HelloController.java b/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/HelloController.java deleted file mode 100644 index 3ebdb044..00000000 --- a/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/HelloController.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.example.restatestarter; - -import com.example.restatestarter.Greeter.Greeting; -import dev.restate.client.Client; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -public class HelloController { - - private final Client restateClient; - - public HelloController(Client restateClient) { - this.restateClient = restateClient; - } - - @GetMapping("/") - public String index() { - return restateClient.service(Greeter.class).greet(new Greeting("Alice")).message() + " from Spring Boot!"; - } - -} \ No newline at end of file diff --git a/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/RestateStarterApplication.java b/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/RestateStarterApplication.java deleted file mode 100644 index 9bc8f2b0..00000000 --- a/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/RestateStarterApplication.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.restatestarter; - -import dev.restate.sdk.springboot.EnableRestate; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -@EnableRestate -public class RestateStarterApplication { - - public static void main(String[] args) { - SpringApplication.run(RestateStarterApplication.class, args); - } - -} diff --git a/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/Utils.java b/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/Utils.java deleted file mode 100644 index 92d8c8d3..00000000 --- a/java/templates/java-new-api-maven-spring-boot/src/main/java/com/example/restatestarter/Utils.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.example.restatestarter; - -// You can remove this file. -// It's only purpose is providing stubs for the template. - -class Utils { - public static void sendNotification(String greetingId, String name){ - if (Math.random() < 0.7 && name.equals("Alice")) { // 70% chance of failure - System.out.println("[👻 SIMULATED] Failed to send notification: " + greetingId + " - " + name); - throw new RuntimeException("[👻 SIMULATED] Failed to send notification: " + greetingId + " - " + name); - } - System.out.println("Notification sent: " + greetingId + " - " + name); - } - - public static void sendReminder(String greetingId, String name){ - if (Math.random() < 0.7 && name.equals("Alice")) { // 70% chance of failure - System.out.println("[👻 SIMULATED] Failed to send reminder: " + greetingId); - throw new RuntimeException("[👻 SIMULATED] Failed to send reminder: " + greetingId); - } - System.out.println("Reminder sent: " + greetingId); - } -} \ No newline at end of file diff --git a/java/templates/java-new-api-maven-spring-boot/src/main/resources/application.properties b/java/templates/java-new-api-maven-spring-boot/src/main/resources/application.properties deleted file mode 100644 index 0372747d..00000000 --- a/java/templates/java-new-api-maven-spring-boot/src/main/resources/application.properties +++ /dev/null @@ -1,11 +0,0 @@ -spring.application.name=restate-starter -greetingPrefix=hi - -# Restate SDK port (to expose Greeter) -restate.sdk.http.port=9080 - -# Where Restate ingress is available -restate.client.base-uri=http://localhost:8080 - -# The spring server (for Hello Controller) -server.port=3000 \ No newline at end of file diff --git a/java/templates/java-new-api-maven-spring-boot/src/test/java/com/example/restatestarter/GreeterTest.java b/java/templates/java-new-api-maven-spring-boot/src/test/java/com/example/restatestarter/GreeterTest.java deleted file mode 100644 index 54696d99..00000000 --- a/java/templates/java-new-api-maven-spring-boot/src/test/java/com/example/restatestarter/GreeterTest.java +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2023 - Restate Software, Inc., Restate GmbH -// -// This file is part of the Restate Java SDK, -// which is released under the MIT license. -// -// You can find a copy of the license in file LICENSE in the root -// directory of this repository or package, or at -// https://github.com/restatedev/sdk-java/blob/main/LICENSE -package com.example.restatestarter; - -import com.example.restatestarter.Greeter.Greeting; -import dev.restate.client.Client; -import dev.restate.sdk.testing.*; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Timeout; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -import static org.assertj.core.api.Assertions.assertThat; - -@SpringBootTest( - classes = Greeter.class, - properties = {"greetingPrefix=ciao"}) -@RestateTest -public class GreeterTest { - - @Autowired @BindService private Greeter greeter; - - @Test - @Timeout(value = 10) - void greet(@RestateClient Client ingressClient) { - var client = ingressClient.service(Greeter.class); - - var response = client.greet(new Greeting("Francesco")); - assertThat(response.message()).isEqualTo("You said ciao to Francesco!"); - } -} diff --git a/java/templates/java-new-api-maven/.agents/plugins/marketplace.json b/java/templates/java-new-api-maven/.agents/plugins/marketplace.json deleted file mode 100644 index b9c8574c..00000000 --- a/java/templates/java-new-api-maven/.agents/plugins/marketplace.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "restatedev-plugin", - "interface": { - "displayName": "Restate" - }, - "plugins": [ - { - "name": "restatedev", - "source": { - "source": "git-subdir", - "url": "https://github.com/restatedev/skills.git", - "path": "./plugins/restatedev", - "ref": "main" - }, - "policy": { - "installation": "AVAILABLE", - "authentication": "ON_INSTALL" - }, - "category": "Coding" - } - ] -} diff --git a/java/templates/java-new-api-maven/.ai/mcp/mcp.json b/java/templates/java-new-api-maven/.ai/mcp/mcp.json deleted file mode 100644 index 78a21c5a..00000000 --- a/java/templates/java-new-api-maven/.ai/mcp/mcp.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "mcpServers": { - "restate-docs": { - "url": "https://docs.restate.dev/mcp" - } - } -} \ No newline at end of file diff --git a/java/templates/java-new-api-maven/.aiassistant/rules/restate.md b/java/templates/java-new-api-maven/.aiassistant/rules/restate.md deleted file mode 100644 index 599b1e28..00000000 --- a/java/templates/java-new-api-maven/.aiassistant/rules/restate.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -apply: by model decision -instructions: Guidelines for working with Restate durable services in this project ---- - -# Restate Java project - -This project uses [Restate](https://restate.dev) — a durable execution runtime for resilient services, workflows, and AI agents. Restate captures every completed step so handlers can resume exactly where they left off after crashes, restarts, or retries. - -## Core concepts - -- **Services** — stateless handlers that run deterministically; retries resume from the last durable step. -- **Virtual Objects** — stateful, key-addressed handlers. State lives in Restate; Restate serializes per-key access. -- **Workflows** — long-running, multi-step flows with a single lifecycle per key. -- **Contexts** — every handler receives `Context`, `ObjectContext`, `WorkflowContext` (or their `Shared` variants). All non-deterministic work (I/O, random, time, RPC) must go through the context so it is journaled. - -## Rules for this codebase - -- Never perform side effects directly. Wrap I/O, randomness, timers, and RPCs in `ctx.run(...)`, `ctx.sleep(...)`, etc., so they are durable. -- Keep handler code deterministic between journal entries: same inputs must produce the same sequence of context calls. -- Prefer the typed client APIs (`XxxClient.fromContext(ctx, key)`) for service-to-service calls instead of raw HTTP. -- Serializable inputs/outputs only — use Jackson-compatible POJOs or records. - -## Getting more detail - -For API reference, lifecycle semantics, debugging, migration guidance, Kafka/idempotency patterns, and framework integrations (Quarkus, Spring Boot), query the **`restate-docs` MCP server** configured for this project (`.ai/mcp/mcp.json`). It's bound to `https://docs.restate.dev/mcp` and can search the full documentation on demand. - -Useful entry points the MCP server can resolve: -- SDK API and pitfalls -- Designing services and picking a service type -- Invocation lifecycle, cancellation, idempotency, sends, Kafka -- Debugging stuck invocations and journal mismatches diff --git a/java/templates/java-new-api-maven/.claude/settings.json b/java/templates/java-new-api-maven/.claude/settings.json deleted file mode 100644 index 1c69c4f5..00000000 --- a/java/templates/java-new-api-maven/.claude/settings.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extraKnownMarketplaces": { - "restatedev-plugin": { - "source": { - "source": "github", - "repo": "restatedev/skills" - } - } - }, - "enabledPlugins": { - "restatedev@restatedev-plugin": true - } -} diff --git a/java/templates/java-new-api-maven/.gitignore b/java/templates/java-new-api-maven/.gitignore deleted file mode 100644 index 1a05f502..00000000 --- a/java/templates/java-new-api-maven/.gitignore +++ /dev/null @@ -1,28 +0,0 @@ -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -# Ignore target -greeter/target - -*.iml \ No newline at end of file diff --git a/java/templates/java-new-api-maven/.mvn/wrapper/maven-wrapper.properties b/java/templates/java-new-api-maven/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index d58dfb70..00000000 --- a/java/templates/java-new-api-maven/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 -distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/java/templates/java-new-api-maven/README.md b/java/templates/java-new-api-maven/README.md deleted file mode 100644 index 16c2c415..00000000 --- a/java/templates/java-new-api-maven/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Hello world - Java HTTP example - -Sample project configuration of a Restate service using the Java SDK and HTTP server. - -Have a look at the [Java Quickstart guide](https://docs.restate.dev/get_started/quickstart?sdk=java) for more information on how to use this project. - -To run: - -```shell -mvn compile exec:java -``` - -## Using AI coding tools - -If you use Claude Code or Codex, then the Restate plugin will automatically be installed. For Cursor, consult the [skills repo README](https://github.com/restatedev/skills). - -Plugin repo: https://github.com/restatedev/skills/tree/main \ No newline at end of file diff --git a/java/templates/java-new-api-maven/mvnw b/java/templates/java-new-api-maven/mvnw deleted file mode 100755 index 19529ddf..00000000 --- a/java/templates/java-new-api-maven/mvnw +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.2 -# -# Optional ENV vars -# ----------------- -# JAVA_HOME - location of a JDK home dir, required when download maven via java source -# MVNW_REPOURL - repo url base for downloading maven distribution -# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output -# ---------------------------------------------------------------------------- - -set -euf -[ "${MVNW_VERBOSE-}" != debug ] || set -x - -# OS specific support. -native_path() { printf %s\\n "$1"; } -case "$(uname)" in -CYGWIN* | MINGW*) - [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" - native_path() { cygpath --path --windows "$1"; } - ;; -esac - -# set JAVACMD and JAVACCMD -set_java_home() { - # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched - if [ -n "${JAVA_HOME-}" ]; then - if [ -x "$JAVA_HOME/jre/sh/java" ]; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - JAVACCMD="$JAVA_HOME/jre/sh/javac" - else - JAVACMD="$JAVA_HOME/bin/java" - JAVACCMD="$JAVA_HOME/bin/javac" - - if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then - echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 - echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 - return 1 - fi - fi - else - JAVACMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v java - )" || : - JAVACCMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v javac - )" || : - - if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then - echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 - return 1 - fi - fi -} - -# hash string like Java String::hashCode -hash_string() { - str="${1:-}" h=0 - while [ -n "$str" ]; do - char="${str%"${str#?}"}" - h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) - str="${str#?}" - done - printf %x\\n $h -} - -verbose() { :; } -[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } - -die() { - printf %s\\n "$1" >&2 - exit 1 -} - -trim() { - # MWRAPPER-139: - # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. - # Needed for removing poorly interpreted newline sequences when running in more - # exotic environments such as mingw bash on Windows. - printf "%s" "${1}" | tr -d '[:space:]' -} - -# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties -while IFS="=" read -r key value; do - case "${key-}" in - distributionUrl) distributionUrl=$(trim "${value-}") ;; - distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; - esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" - -case "${distributionUrl##*/}" in -maven-mvnd-*bin.*) - MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ - case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in - *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; - :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; - :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; - :Linux*x86_64*) distributionPlatform=linux-amd64 ;; - *) - echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 - distributionPlatform=linux-amd64 - ;; - esac - distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" - ;; -maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; -esac - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" -distributionUrlName="${distributionUrl##*/}" -distributionUrlNameMain="${distributionUrlName%.*}" -distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" -MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" - -exec_maven() { - unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : - exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" -} - -if [ -d "$MAVEN_HOME" ]; then - verbose "found existing MAVEN_HOME at $MAVEN_HOME" - exec_maven "$@" -fi - -case "${distributionUrl-}" in -*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; -*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; -esac - -# prepare tmp dir -if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then - clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } - trap clean HUP INT TERM EXIT -else - die "cannot create temp dir" -fi - -mkdir -p -- "${MAVEN_HOME%/*}" - -# Download and Install Apache Maven -verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -verbose "Downloading from: $distributionUrl" -verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -# select .zip or .tar.gz -if ! command -v unzip >/dev/null; then - distributionUrl="${distributionUrl%.zip}.tar.gz" - distributionUrlName="${distributionUrl##*/}" -fi - -# verbose opt -__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' -[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v - -# normalize http auth -case "${MVNW_PASSWORD:+has-password}" in -'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; -has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; -esac - -if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then - verbose "Found wget ... using wget" - wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" -elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then - verbose "Found curl ... using curl" - curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" -elif set_java_home; then - verbose "Falling back to use Java to download" - javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" - targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" - cat >"$javaSource" <<-END - public class Downloader extends java.net.Authenticator - { - protected java.net.PasswordAuthentication getPasswordAuthentication() - { - return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); - } - public static void main( String[] args ) throws Exception - { - setDefault( new Downloader() ); - java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); - } - } - END - # For Cygwin/MinGW, switch paths to Windows format before running javac and java - verbose " - Compiling Downloader.java ..." - "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" - verbose " - Running Downloader.java ..." - "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" -fi - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -if [ -n "${distributionSha256Sum-}" ]; then - distributionSha256Result=false - if [ "$MVN_CMD" = mvnd.sh ]; then - echo "Checksum validation is not supported for maven-mvnd." >&2 - echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - elif command -v shasum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - else - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 - echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - fi - if [ $distributionSha256Result = false ]; then - echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 - echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 - exit 1 - fi -fi - -# unzip and move -if command -v unzip >/dev/null; then - unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" -else - tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" -fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" - -clean || : -exec_maven "$@" diff --git a/java/templates/java-new-api-maven/mvnw.cmd b/java/templates/java-new-api-maven/mvnw.cmd deleted file mode 100644 index b150b91e..00000000 --- a/java/templates/java-new-api-maven/mvnw.cmd +++ /dev/null @@ -1,149 +0,0 @@ -<# : batch portion -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.2 -@REM -@REM Optional ENV vars -@REM MVNW_REPOURL - repo url base for downloading maven distribution -@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output -@REM ---------------------------------------------------------------------------- - -@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) -@SET __MVNW_CMD__= -@SET __MVNW_ERROR__= -@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% -@SET PSModulePath= -@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( - IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) -) -@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% -@SET __MVNW_PSMODULEP_SAVE= -@SET __MVNW_ARG0_NAME__= -@SET MVNW_USERNAME= -@SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) -@echo Cannot start maven from wrapper >&2 && exit /b 1 -@GOTO :EOF -: end batch / begin powershell #> - -$ErrorActionPreference = "Stop" -if ($env:MVNW_VERBOSE -eq "true") { - $VerbosePreference = "Continue" -} - -# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties -$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl -if (!$distributionUrl) { - Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" -} - -switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { - "maven-mvnd-*" { - $USE_MVND = $true - $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" - $MVN_CMD = "mvnd.cmd" - break - } - default { - $USE_MVND = $false - $MVN_CMD = $script -replace '^mvnw','mvn' - break - } -} - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" -} -$distributionUrlName = $distributionUrl -replace '^.*/','' -$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" -if ($env:MAVEN_USER_HOME) { - $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" -} -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' -$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" - -if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { - Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" - Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" - exit $? -} - -if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { - Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" -} - -# prepare tmp dir -$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile -$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" -$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null -trap { - if ($TMP_DOWNLOAD_DIR.Exists) { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } - } -} - -New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null - -# Download and Install Apache Maven -Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -Write-Verbose "Downloading from: $distributionUrl" -Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -$webclient = New-Object System.Net.WebClient -if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { - $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) -} -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum -if ($distributionSha256Sum) { - if ($USE_MVND) { - Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." - } - Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash - if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { - Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." - } -} - -# unzip and move -Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null -try { - Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null -} catch { - if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { - Write-Error "fail to move MAVEN_HOME" - } -} finally { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } -} - -Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/java/templates/java-new-api-maven/pom.xml b/java/templates/java-new-api-maven/pom.xml deleted file mode 100644 index b9ca55d3..00000000 --- a/java/templates/java-new-api-maven/pom.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - 4.0.0 - - my.example - greeter - 1.0-SNAPSHOT - - greeter - http://www.example.com - - - UTF-8 - 17 - 17 - 2.7.0 - - - - - dev.restate - sdk-java-http - ${restate.version} - - - - - org.apache.logging.log4j - log4j-api - 2.24.1 - - - - org.junit.jupiter - junit-jupiter - test - - - dev.restate - sdk-testing - ${restate.version} - - - - - - - - org.junit - junit-bom - 5.11.3 - pom - import - - - - - - - - - org.codehaus.mojo - exec-maven-plugin - 3.1.0 - - my.example.Greeter - - - - - maven-surefire-plugin - 3.5.1 - - - - - diff --git a/java/templates/java-new-api-maven/src/main/java/my/example/Greeter.java b/java/templates/java-new-api-maven/src/main/java/my/example/Greeter.java deleted file mode 100644 index e265fe69..00000000 --- a/java/templates/java-new-api-maven/src/main/java/my/example/Greeter.java +++ /dev/null @@ -1,35 +0,0 @@ -package my.example; - -import dev.restate.sdk.Restate; -import dev.restate.sdk.annotation.Handler; -import dev.restate.sdk.annotation.Service; -import dev.restate.sdk.endpoint.Endpoint; -import dev.restate.sdk.http.vertx.RestateHttpServer; - -import java.time.Duration; - -import static my.example.Utils.sendNotification; -import static my.example.Utils.sendReminder; - -@Service -public class Greeter { - - public record Greeting(String name) {} - public record GreetingResponse(String message) {} - - @Handler - public GreetingResponse greet(Greeting req) { - // Durably execute a set of steps; resilient against failures - String greetingId = Restate.random().nextUUID().toString(); - Restate.run("Notification", () -> sendNotification(greetingId, req.name)); - Restate.sleep(Duration.ofSeconds(1)); - Restate.run("Reminder", () -> sendReminder(greetingId, req.name)); - - // Respond to caller - return new GreetingResponse("You said hi to " + req.name + "!"); - } - - public static void main(String[] args) { - RestateHttpServer.listen(Endpoint.bind(new Greeter())); - } -} diff --git a/java/templates/java-new-api-maven/src/main/java/my/example/Utils.java b/java/templates/java-new-api-maven/src/main/java/my/example/Utils.java deleted file mode 100644 index 7e7138d7..00000000 --- a/java/templates/java-new-api-maven/src/main/java/my/example/Utils.java +++ /dev/null @@ -1,22 +0,0 @@ -package my.example; - -// You can remove this file. -// It's only purpose is providing stubs for the template. - -class Utils { - public static void sendNotification(String greetingId, String name){ - if (Math.random() < 0.7 && name.equals("Alice")) { // 70% chance of failure - System.out.println("[👻 SIMULATED] Failed to send notification: " + greetingId + " - " + name); - throw new RuntimeException("[👻 SIMULATED] Failed to send notification: " + greetingId + " - " + name); - } - System.out.println("Notification sent: " + greetingId + " - " + name); - } - - public static void sendReminder(String greetingId, String name){ - if (Math.random() < 0.7 && name.equals("Alice")) { // 70% chance of failure - System.out.println("[👻 SIMULATED] Failed to send reminder: " + greetingId); - throw new RuntimeException("[👻 SIMULATED] Failed to send reminder: " + greetingId); - } - System.out.println("Reminder sent: " + greetingId); - } -} \ No newline at end of file diff --git a/java/templates/java-new-api-maven/src/main/resources/log4j2.properties b/java/templates/java-new-api-maven/src/main/resources/log4j2.properties deleted file mode 100644 index 536d1d39..00000000 --- a/java/templates/java-new-api-maven/src/main/resources/log4j2.properties +++ /dev/null @@ -1,26 +0,0 @@ -# Set to debug or trace if log4j initialization is failing -status = warn - -# Console appender configuration -appender.console.type = Console -appender.console.name = consoleLogger -appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %notEmpty{[%X{restateInvocationTarget}]}%notEmpty{[%X{restateInvocationId}]} %c - %m%n - -# Filter out logging during replay -appender.console.filter.replay.type = ContextMapFilter -appender.console.filter.replay.onMatch = DENY -appender.console.filter.replay.onMismatch = NEUTRAL -appender.console.filter.replay.0.type = KeyValuePair -appender.console.filter.replay.0.key = restateInvocationStatus -appender.console.filter.replay.0.value = REPLAYING - -# Restate logs to debug level -logger.app.name = dev.restate -logger.app.level = info -logger.app.additivity = false -logger.app.appenderRef.console.ref = consoleLogger - -# Root logger -rootLogger.level = info -rootLogger.appenderRef.stdout.ref = consoleLogger \ No newline at end of file diff --git a/java/templates/java-new-api-maven/src/test/java/my/example/GreeterTest.java b/java/templates/java-new-api-maven/src/test/java/my/example/GreeterTest.java deleted file mode 100644 index 94775334..00000000 --- a/java/templates/java-new-api-maven/src/test/java/my/example/GreeterTest.java +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) 2023 - Restate Software, Inc., Restate GmbH -// -// This file is part of the Restate Java SDK, -// which is released under the MIT license. -// -// You can find a copy of the license in file LICENSE in the root -// directory of this repository or package, or at -// https://github.com/restatedev/sdk-java/blob/main/LICENSE -package my.example; - -import dev.restate.client.Client; -import dev.restate.sdk.testing.BindService; -import dev.restate.sdk.testing.RestateClient; -import dev.restate.sdk.testing.RestateTest; -import my.example.Greeter.Greeting; -import my.example.Greeter.GreetingResponse; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Timeout; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -@RestateTest -class GreeterTest { - - @BindService - private final Greeter greeter = new Greeter(); - - @Test - @Timeout(value = 10) - void testGreet(@RestateClient Client ingressClient) { - var client = ingressClient.service(Greeter.class); - - GreetingResponse response = client.greet(new Greeting("Francesco")); - assertEquals(response.message(), "You said hi to Francesco!"); - } -} diff --git a/java/tutorials/tour-of-orchestration-java/build.gradle.kts b/java/tutorials/tour-of-orchestration-java/build.gradle.kts index 516d321c..18b817af 100644 --- a/java/tutorials/tour-of-orchestration-java/build.gradle.kts +++ b/java/tutorials/tour-of-orchestration-java/build.gradle.kts @@ -8,11 +8,9 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - annotationProcessor("dev.restate:sdk-api-gen:$restateVersion") - // Restate SDK implementation("dev.restate:sdk-java-http:$restateVersion") @@ -22,12 +20,14 @@ dependencies { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(25)) } } // Set main class application { + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") if (project.hasProperty("mainClass")) { mainClass.set(project.property("mainClass") as String) } else { @@ -35,6 +35,12 @@ application { } } +tasks.named("test") { + useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") +} + spotless { java { googleJavaFormat() diff --git a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/ConcertTicketingService.java b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/ConcertTicketingService.java index 05a2eb69..4245c001 100644 --- a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/ConcertTicketingService.java +++ b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/ConcertTicketingService.java @@ -1,6 +1,6 @@ package my.example.communication; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import my.example.auxiliary.types.PurchaseTicketRequest; @@ -9,15 +9,16 @@ public class ConcertTicketingService { @Handler - public String buy(Context ctx, PurchaseTicketRequest req) { + public String buy(PurchaseTicketRequest req) { // Request-response call - wait for payment to complete - String payRef = PaymentServiceClient.fromContext(ctx).charge(req).await(); + String payRef = Restate.service(PaymentService.class).charge(req); // One-way message - fire and forget ticket delivery - EmailServiceClient.fromContext(ctx).send().emailTicket(req); + Restate.serviceHandle(EmailService.class).send(EmailService::emailTicket, req); // Delayed message - schedule reminder for day before concert - EmailServiceClient.fromContext(ctx).send().sendReminder(req, req.dayBefore()); + Restate.serviceHandle(EmailService.class) + .send(EmailService::sendReminder, req, req.dayBefore()); return "Ticket purchased successfully with payment reference: " + payRef; } diff --git a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/EmailService.java b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/EmailService.java index 22d16c29..4152ad68 100644 --- a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/EmailService.java +++ b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/EmailService.java @@ -1,6 +1,5 @@ package my.example.communication; -import dev.restate.sdk.Context; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import my.example.auxiliary.types.PurchaseTicketRequest; @@ -9,13 +8,13 @@ public class EmailService { @Handler - public void emailTicket(Context ctx, PurchaseTicketRequest req) { + public void emailTicket(PurchaseTicketRequest req) { System.out.printf( "Sending ticket to %s for concert on %s", req.customerEmail(), req.concertDate()); } @Handler - public void sendReminder(Context ctx, PurchaseTicketRequest req) { + public void sendReminder(PurchaseTicketRequest req) { System.out.printf( "Sending reminder for concert on %s to %s", req.concertDate(), req.customerEmail()); } diff --git a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/PaymentService.java b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/PaymentService.java index 039fbda7..b66c88c8 100644 --- a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/PaymentService.java +++ b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/communication/PaymentService.java @@ -1,6 +1,6 @@ package my.example.communication; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import my.example.auxiliary.types.PurchaseTicketRequest; @@ -9,9 +9,9 @@ public class PaymentService { @Handler - public String charge(Context ctx, PurchaseTicketRequest req) { + public String charge(PurchaseTicketRequest req) { // Simulate payment processing - String paymentId = ctx.random().nextUUID().toString(); + String paymentId = Restate.random().nextUUID().toString(); System.out.printf( "Processing payment for ticket %s with payment ID %s", req.ticketId(), paymentId); return paymentId; diff --git a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/concurrenttasks/ParallelSubscriptionService.java b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/concurrenttasks/ParallelSubscriptionService.java index ebece1f2..5eb6f1c0 100644 --- a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/concurrenttasks/ParallelSubscriptionService.java +++ b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/concurrenttasks/ParallelSubscriptionService.java @@ -3,8 +3,8 @@ import static my.example.auxiliary.clients.PaymentClient.createRecurringPayment; import static my.example.auxiliary.clients.SubscriptionClient.createSubscription; -import dev.restate.sdk.Context; import dev.restate.sdk.DurableFuture; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import java.util.ArrayList; @@ -16,16 +16,16 @@ public class ParallelSubscriptionService { @Handler - public SubscriptionResult add(Context ctx, SubscriptionRequest req) { - var paymentId = ctx.random().nextUUID().toString(); + public SubscriptionResult add(SubscriptionRequest req) { + var paymentId = Restate.random().nextUUID().toString(); var payRef = - ctx.run("pay", String.class, () -> createRecurringPayment(req.creditCard(), paymentId)); + Restate.run("pay", String.class, () -> createRecurringPayment(req.creditCard(), paymentId)); // Start all subscriptions in parallel List> subscriptionFutures = new ArrayList<>(); for (String subscription : req.subscriptions()) { subscriptionFutures.add( - ctx.runAsync( + Restate.runAsync( "add-" + subscription, () -> createSubscription(req.userId(), subscription, payRef))); } diff --git a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/events/Payments.java b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/events/Payments.java index 9c1ac943..032206f4 100644 --- a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/events/Payments.java +++ b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/events/Payments.java @@ -2,7 +2,7 @@ import static my.example.auxiliary.clients.PaymentClient.initPayment; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import my.example.auxiliary.types.ConfirmationRequest; @@ -13,13 +13,13 @@ public class Payments { @Handler - public PaymentResult process(Context ctx, PaymentRequest req) { + public PaymentResult process(PaymentRequest req) { // Create awakeable to wait for webhook payment confirmation - var confirmation = ctx.awakeable(PaymentResult.class); + var confirmation = Restate.awakeable(PaymentResult.class); // Initiate payment with external provider (Stripe, PayPal, etc.) - var paymentId = ctx.random().nextUUID().toString(); - ctx.run(() -> initPayment(req, paymentId, confirmation.id())); + var paymentId = Restate.random().nextUUID().toString(); + Restate.run("pay", () -> initPayment(req, paymentId, confirmation.id())); // Wait for external payment provider to call our webhook return confirmation.await(); @@ -27,8 +27,8 @@ public PaymentResult process(Context ctx, PaymentRequest req) { // Webhook handler called by external payment provider @Handler - public void confirm(Context ctx, ConfirmationRequest confirmation) { + public void confirm(ConfirmationRequest confirmation) { // Resolve the awakeable to continue the payment flow - ctx.awakeableHandle(confirmation.id()).resolve(PaymentResult.class, confirmation.result()); + Restate.awakeableHandle(confirmation.id()).resolve(PaymentResult.class, confirmation.result()); } } diff --git a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/getstarted/SubscriptionService.java b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/getstarted/SubscriptionService.java index de46b1d0..20820748 100644 --- a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/getstarted/SubscriptionService.java +++ b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/getstarted/SubscriptionService.java @@ -3,7 +3,7 @@ import static my.example.auxiliary.clients.PaymentClient.createRecurringPayment; import static my.example.auxiliary.clients.SubscriptionClient.createSubscription; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import my.example.auxiliary.types.SubscriptionRequest; @@ -12,14 +12,15 @@ public class SubscriptionService { @Handler - public void add(Context ctx, SubscriptionRequest req) { - var paymentId = ctx.random().nextUUID().toString(); + public void add(SubscriptionRequest req) { + var paymentId = Restate.random().nextUUID().toString(); String payRef = - ctx.run("pay", String.class, () -> createRecurringPayment(req.creditCard(), paymentId)); + Restate.run("pay", String.class, () -> createRecurringPayment(req.creditCard(), paymentId)); for (String subscription : req.subscriptions()) { - ctx.run("add-" + subscription, () -> createSubscription(req.userId(), subscription, payRef)); + Restate.run( + "add-" + subscription, () -> createSubscription(req.userId(), subscription, payRef)); } } } diff --git a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/objects/UserSubscriptions.java b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/objects/UserSubscriptions.java index 62877beb..81cef0b9 100644 --- a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/objects/UserSubscriptions.java +++ b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/objects/UserSubscriptions.java @@ -1,13 +1,11 @@ package my.example.objects; -import dev.restate.sdk.ObjectContext; -import dev.restate.sdk.SharedObjectContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Shared; import dev.restate.sdk.annotation.VirtualObject; import dev.restate.sdk.common.StateKey; import dev.restate.serde.TypeRef; -import java.time.Instant; import java.util.HashSet; import java.util.Set; @@ -18,20 +16,22 @@ public class UserSubscriptions { private static final StateKey LAST_UPDATED = StateKey.of("lastUpdated", String.class); @Handler - public void add(ObjectContext ctx, String subscription) { + public void add(String subscription) { + var state = Restate.state(); + // Get current subscriptions - Set subscriptions = ctx.get(SUBSCRIPTIONS).orElse(new HashSet<>()); + Set subscriptions = state.get(SUBSCRIPTIONS).orElse(new HashSet<>()); // Add new subscription subscriptions.add(subscription); - ctx.set(SUBSCRIPTIONS, subscriptions); + state.set(SUBSCRIPTIONS, subscriptions); // Update metrics - ctx.set(LAST_UPDATED, Instant.now().toString()); + state.set(LAST_UPDATED, Restate.instantNow().toString()); } @Shared - public Set getSubscriptions(SharedObjectContext ctx) { - return ctx.get(SUBSCRIPTIONS).orElse(Set.of()); + public Set getSubscriptions() { + return Restate.state().get(SUBSCRIPTIONS).orElse(Set.of()); } } diff --git a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/sagas/SubscriptionSaga.java b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/sagas/SubscriptionSaga.java index 4b98934e..ed280515 100644 --- a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/sagas/SubscriptionSaga.java +++ b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/sagas/SubscriptionSaga.java @@ -1,6 +1,6 @@ package my.example.sagas; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import dev.restate.sdk.common.TerminalException; @@ -15,15 +15,15 @@ public class SubscriptionSaga { @Handler - public void add(Context ctx, SubscriptionRequest req) { + public void add(SubscriptionRequest req) { List compensations = new ArrayList<>(); try { - var paymentId = ctx.random().nextUUID().toString(); + var paymentId = Restate.random().nextUUID().toString(); compensations.add( - () -> ctx.run("undo-pay", () -> PaymentClient.removeRecurringPayment(paymentId))); + () -> Restate.run("undo-pay", () -> PaymentClient.removeRecurringPayment(paymentId))); String payRef = - ctx.run( + Restate.run( "pay", String.class, () -> PaymentClient.createRecurringPayment(req.creditCard(), paymentId)); @@ -31,10 +31,10 @@ public void add(Context ctx, SubscriptionRequest req) { for (String subscription : req.subscriptions()) { compensations.add( () -> - ctx.run( + Restate.run( "undo-" + subscription, () -> SubscriptionClient.removeSubscription(req.userId(), subscription))); - ctx.run( + Restate.run( "add-" + subscription, () -> SubscriptionClient.createSubscription(req.userId(), subscription, payRef)); } diff --git a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/timers/PaymentsWithTimeout.java b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/timers/PaymentsWithTimeout.java index a86bb65b..916d9552 100644 --- a/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/timers/PaymentsWithTimeout.java +++ b/java/tutorials/tour-of-orchestration-java/src/main/java/my/example/timers/PaymentsWithTimeout.java @@ -3,7 +3,7 @@ import static my.example.auxiliary.clients.PaymentClient.cancelPayment; import static my.example.auxiliary.clients.PaymentClient.initPayment; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import dev.restate.sdk.common.TimeoutException; @@ -16,23 +16,23 @@ public class PaymentsWithTimeout { @Handler - public PaymentResult process(Context ctx, PaymentRequest req) { - var confirmation = ctx.awakeable(PaymentResult.class); + public PaymentResult process(PaymentRequest req) { + var confirmation = Restate.awakeable(PaymentResult.class); - var paymentId = ctx.random().nextUUID().toString(); + var paymentId = Restate.random().nextUUID().toString(); String payRef = - ctx.run("pay", String.class, () -> initPayment(req, paymentId, confirmation.id())); + Restate.run("pay", String.class, () -> initPayment(req, paymentId, confirmation.id())); try { return confirmation.await(Duration.ofSeconds(30)); } catch (TimeoutException e) { - ctx.run("cancel-payment", () -> cancelPayment(payRef)); + Restate.run("cancel-payment", () -> cancelPayment(payRef)); return new PaymentResult(false, null, "Payment timeout"); } } @Handler - public void confirm(Context ctx, ConfirmationRequest confirmation) { - ctx.awakeableHandle(confirmation.id()).resolve(PaymentResult.class, confirmation.result()); + public void confirm(ConfirmationRequest confirmation) { + Restate.awakeableHandle(confirmation.id()).resolve(PaymentResult.class, confirmation.result()); } } diff --git a/java/tutorials/tour-of-workflows-java/build.gradle.kts b/java/tutorials/tour-of-workflows-java/build.gradle.kts index e3167f98..0f20675a 100644 --- a/java/tutorials/tour-of-workflows-java/build.gradle.kts +++ b/java/tutorials/tour-of-workflows-java/build.gradle.kts @@ -8,11 +8,9 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - annotationProcessor("dev.restate:sdk-api-gen:$restateVersion") - // Restate SDK implementation("dev.restate:sdk-java-http:$restateVersion") implementation("dev.restate:client:${restateVersion}") @@ -23,12 +21,14 @@ dependencies { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(25)) } } // Set main class application { + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") if (project.hasProperty("mainClass")) { mainClass.set(project.property("mainClass") as String) } else { @@ -36,6 +36,12 @@ application { } } +tasks.named("test") { + useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") +} + spotless { java { googleJavaFormat() diff --git a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/WorkflowSubmitter.java b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/WorkflowSubmitter.java index 51414d35..d9a87352 100644 --- a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/WorkflowSubmitter.java +++ b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/WorkflowSubmitter.java @@ -2,7 +2,7 @@ import dev.restate.client.Client; import my.example.types.User; -import my.example.workflows.SignupWorkflowClient; +import my.example.workflows.SignupWorkflow; public class WorkflowSubmitter { @@ -12,7 +12,11 @@ public static void main(String[] args) throws Exception { Client restateClient = Client.connect("http://localhost:8080"); boolean result = - SignupWorkflowClient.fromClient(restateClient, "user-123").submit(user).attach().response(); + restateClient + .workflowHandle(SignupWorkflow.class, "user-123") + .send(SignupWorkflow::run, user) + .attach() + .response(); // System.out.println("Workflow result: " + result); diff --git a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/utils/UserService.java b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/utils/UserService.java index 93432dc1..3e85ea9a 100644 --- a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/utils/UserService.java +++ b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/utils/UserService.java @@ -1,6 +1,6 @@ package my.example.utils; -import dev.restate.sdk.Context; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Handler; import dev.restate.sdk.annotation.Service; import my.example.types.CreateUserRequest; @@ -8,7 +8,8 @@ @Service public class UserService { @Handler - public Boolean createUser(Context ctx, CreateUserRequest req) { - return ctx.run("create user", Boolean.class, () -> Utils.createUser(req.userId(), req.user())); + public Boolean createUser(CreateUserRequest req) { + return Restate.run( + "create user", Boolean.class, () -> Utils.createUser(req.userId(), req.user())); } } diff --git a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithActivitiesWorkflow.java b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithActivitiesWorkflow.java index 907566b7..d6bb9f37 100644 --- a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithActivitiesWorkflow.java +++ b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithActivitiesWorkflow.java @@ -3,31 +3,31 @@ import static my.example.utils.Utils.activateUser; import static my.example.utils.Utils.sendWelcomeEmail; -import dev.restate.sdk.WorkflowContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Workflow; import my.example.types.CreateUserRequest; import my.example.types.User; -import my.example.utils.UserServiceClient; +import my.example.utils.UserService; @Workflow public class SignupWithActivitiesWorkflow { @Workflow - public boolean run(WorkflowContext ctx, User user) { - String userId = ctx.key(); + public boolean run(User user) { + String userId = Restate.key(); // // Move user DB interaction to dedicated service boolean success = true; - UserServiceClient.fromContext(ctx).createUser(new CreateUserRequest(userId, user)).await(); + Restate.service(UserService.class).createUser(new CreateUserRequest(userId, user)); if (!success) { return false; } // Execute other steps inline - ctx.run("activate", () -> activateUser(userId)); - ctx.run("welcome", () -> sendWelcomeEmail(user)); + Restate.run("activate", () -> activateUser(userId)); + Restate.run("welcome", () -> sendWelcomeEmail(user)); // return true; diff --git a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithEventsWorkflow.java b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithEventsWorkflow.java index ccbeb6a1..9a3950fd 100644 --- a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithEventsWorkflow.java +++ b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithEventsWorkflow.java @@ -2,8 +2,7 @@ import static my.example.utils.Utils.*; -import dev.restate.sdk.SharedWorkflowContext; -import dev.restate.sdk.WorkflowContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Shared; import dev.restate.sdk.annotation.Workflow; import dev.restate.sdk.common.DurablePromiseKey; @@ -16,25 +15,25 @@ public class SignupWithEventsWorkflow { DurablePromiseKey.of("user-created", String.class); @Workflow - public boolean run(WorkflowContext ctx, User user) { - String userId = ctx.key(); + public boolean run(User user) { + String userId = Restate.key(); - boolean success = ctx.run("create", Boolean.class, () -> createUser(userId, user)); + boolean success = Restate.run("create", Boolean.class, () -> createUser(userId, user)); if (!success) { - ctx.promiseHandle(USER_CREATED_PROMISE).reject("Creation failed."); + Restate.promiseHandle(USER_CREATED_PROMISE).reject("Creation failed."); return false; } - ctx.promiseHandle(USER_CREATED_PROMISE).resolve("User created."); + Restate.promiseHandle(USER_CREATED_PROMISE).resolve("User created."); - ctx.run("activate", () -> activateUser(userId)); - ctx.run("welcome", () -> sendWelcomeEmail(user)); + Restate.run("activate", () -> activateUser(userId)); + Restate.run("welcome", () -> sendWelcomeEmail(user)); return true; } @Shared - public String waitForUserCreation(SharedWorkflowContext ctx) { - return ctx.promise(USER_CREATED_PROMISE).future().await(); + public String waitForUserCreation() { + return Restate.promise(USER_CREATED_PROMISE).future().await(); } } diff --git a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithQueriesWorkflow.java b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithQueriesWorkflow.java index 32129177..c6ee61f4 100644 --- a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithQueriesWorkflow.java +++ b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithQueriesWorkflow.java @@ -2,8 +2,7 @@ import static my.example.utils.Utils.*; -import dev.restate.sdk.SharedWorkflowContext; -import dev.restate.sdk.WorkflowContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Shared; import dev.restate.sdk.annotation.Workflow; import dev.restate.sdk.common.StateKey; @@ -17,27 +16,29 @@ public class SignupWithQueriesWorkflow { private static final StateKey STATUS = StateKey.of("status", String.class); @Workflow - public boolean run(WorkflowContext ctx, User user) { - String userId = ctx.key(); + public boolean run(User user) { + String userId = Restate.key(); + var state = Restate.state(); - ctx.set(USER, user); - boolean success = ctx.run("create", Boolean.class, () -> createUser(userId, user)); + state.set(USER, user); + boolean success = Restate.run("create", Boolean.class, () -> createUser(userId, user)); if (!success) { - ctx.set(STATUS, "failed"); + state.set(STATUS, "failed"); return false; } - ctx.set(STATUS, "created"); + state.set(STATUS, "created"); - ctx.run("activate", () -> activateUser(userId)); - ctx.run("welcome", () -> sendWelcomeEmail(user)); + Restate.run("activate", () -> activateUser(userId)); + Restate.run("welcome", () -> sendWelcomeEmail(user)); return true; } @Shared - public StatusResponse getStatus(SharedWorkflowContext ctx) { - String status = ctx.get(STATUS).orElse("unknown"); - User user = ctx.get(USER).orElse(null); + public StatusResponse getStatus() { + var state = Restate.state(); + String status = state.get(STATUS).orElse("unknown"); + User user = state.get(USER).orElse(null); return new StatusResponse(status, user); } } diff --git a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithRetriesWorkflow.java b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithRetriesWorkflow.java index 12444986..2735f15c 100644 --- a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithRetriesWorkflow.java +++ b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithRetriesWorkflow.java @@ -2,7 +2,7 @@ import static my.example.utils.Utils.*; -import dev.restate.sdk.WorkflowContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Workflow; import dev.restate.sdk.common.RetryPolicy; import dev.restate.sdk.common.TerminalException; @@ -13,15 +13,15 @@ public class SignupWithRetriesWorkflow { @Workflow - public boolean run(WorkflowContext ctx, User user) { - String userId = ctx.key(); + public boolean run(User user) { + String userId = Restate.key(); - boolean success = ctx.run(Boolean.class, () -> createUser(userId, user)); + boolean success = Restate.run("create", Boolean.class, () -> createUser(userId, user)); if (!success) { return false; } - ctx.run("activate", () -> activateUser(userId)); + Restate.run("activate", () -> activateUser(userId)); // Configure retry policy // @@ -34,7 +34,7 @@ public boolean run(WorkflowContext ctx, User user) { .setMaxAttempts(3) .setMaxDuration(Duration.ofSeconds(30)); - ctx.run("welcome", myRunRetryPolicy, () -> sendWelcomeEmail(user)); + Restate.run("welcome", myRunRetryPolicy, () -> sendWelcomeEmail(user)); } catch (TerminalException error) { // This gets hit on retry exhaustion with a terminal error // Log and continue; without letting the workflow fail diff --git a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithSagasWorkflow.java b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithSagasWorkflow.java index 286ccd1c..4a412e9b 100644 --- a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithSagasWorkflow.java +++ b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithSagasWorkflow.java @@ -2,7 +2,7 @@ import static my.example.utils.Utils.*; -import dev.restate.sdk.WorkflowContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Workflow; import dev.restate.sdk.common.TerminalException; import java.util.ArrayList; @@ -14,19 +14,19 @@ public class SignupWithSagasWorkflow { @Workflow - public boolean run(WorkflowContext ctx, User user) { - String userId = ctx.key(); + public boolean run(User user) { + String userId = Restate.key(); List compensations = new ArrayList<>(); try { - compensations.add(() -> ctx.run("delete", () -> deleteUser(userId))); - ctx.run("create", () -> createUser(userId, user)); + compensations.add(() -> Restate.run("delete", () -> deleteUser(userId))); + Restate.run("create", () -> createUser(userId, user)); - compensations.add(() -> ctx.run("deactivate", () -> deactivateUser(userId))); - ctx.run("activate", () -> activateUser(userId)); + compensations.add(() -> Restate.run("deactivate", () -> deactivateUser(userId))); + Restate.run("activate", () -> activateUser(userId)); - compensations.add(() -> ctx.run("unsubscribe", () -> cancelSubscription(user))); - ctx.run("subscribe", () -> subscribeToPaidPlan(user)); + compensations.add(() -> Restate.run("unsubscribe", () -> cancelSubscription(user))); + Restate.run("subscribe", () -> subscribeToPaidPlan(user)); } catch (TerminalException e) { // Run compensations in reverse order diff --git a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithSignalsWorkflow.java b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithSignalsWorkflow.java index 6c7bf673..334158c2 100644 --- a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithSignalsWorkflow.java +++ b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithSignalsWorkflow.java @@ -2,8 +2,7 @@ import static my.example.utils.Utils.*; -import dev.restate.sdk.SharedWorkflowContext; -import dev.restate.sdk.WorkflowContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Shared; import dev.restate.sdk.annotation.Workflow; import dev.restate.sdk.common.DurablePromiseKey; @@ -17,20 +16,20 @@ public class SignupWithSignalsWorkflow { DurablePromiseKey.of("email-verified", String.class); @Workflow - public boolean run(WorkflowContext ctx, User user) { - String userId = ctx.key(); + public boolean run(User user) { + String userId = Restate.key(); // Generate verification secret and send email - String secret = ctx.random().nextUUID().toString(); - ctx.run("verify", () -> sendVerificationEmail(userId, user, secret)); + String secret = Restate.random().nextUUID().toString(); + Restate.run("verify", () -> sendVerificationEmail(userId, user, secret)); // Wait for user to click verification link - String clickedSecret = ctx.promise(EMAIL_VERIFIED_PROMISE).future().await(); + String clickedSecret = Restate.promise(EMAIL_VERIFIED_PROMISE).future().await(); return secret.equals(clickedSecret); } @Shared - public void verifyEmail(SharedWorkflowContext ctx, VerifyEmailRequest req) { - ctx.promiseHandle(EMAIL_VERIFIED_PROMISE).resolve(req.secret()); + public void verifyEmail(VerifyEmailRequest req) { + Restate.promiseHandle(EMAIL_VERIFIED_PROMISE).resolve(req.secret()); } } diff --git a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithTimersWorkflow.java b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithTimersWorkflow.java index 430160f3..ffd84b23 100644 --- a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithTimersWorkflow.java +++ b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWithTimersWorkflow.java @@ -2,9 +2,8 @@ import static my.example.utils.Utils.*; +import dev.restate.sdk.Restate; import dev.restate.sdk.Select; -import dev.restate.sdk.SharedWorkflowContext; -import dev.restate.sdk.WorkflowContext; import dev.restate.sdk.annotation.Shared; import dev.restate.sdk.annotation.Workflow; import dev.restate.sdk.common.DurablePromiseKey; @@ -20,17 +19,17 @@ public class SignupWithTimersWorkflow { DurablePromiseKey.of("email-verified", String.class); @Workflow - public boolean run(WorkflowContext ctx, User user) { - String userId = ctx.key(); + public boolean run(User user) { + String userId = Restate.key(); - var confirmationFuture = ctx.promise(EMAIL_VERIFIED_PROMISE).future(); - var secret = ctx.random().nextUUID().toString(); - ctx.run("verify", () -> sendVerificationEmail(userId, user, secret)); + var confirmationFuture = Restate.promise(EMAIL_VERIFIED_PROMISE).future(); + var secret = Restate.random().nextUUID().toString(); + Restate.run("verify", () -> sendVerificationEmail(userId, user, secret)); - var verificationTimeout = ctx.timer(Duration.ofDays(1)); + var verificationTimeout = Restate.timer(Duration.ofDays(1)); while (true) { - var reminderTimer = ctx.timer(Duration.ofSeconds(10)); + var reminderTimer = Restate.timer(Duration.ofSeconds(10)); var selected = Select.select() @@ -44,7 +43,7 @@ public boolean run(WorkflowContext ctx, User user) { var clickedSecret = confirmationFuture.await(); return secret.equals(clickedSecret); case "reminder": - ctx.run("send reminder", () -> sendReminderEmail(userId, user, secret)); + Restate.run("send reminder", () -> sendReminderEmail(userId, user, secret)); break; case "timeout": throw new TerminalException("Verification timed out"); @@ -53,7 +52,7 @@ public boolean run(WorkflowContext ctx, User user) { } @Shared - public void verifyEmail(SharedWorkflowContext ctx, VerifyEmailRequest req) { - ctx.promiseHandle(EMAIL_VERIFIED_PROMISE).resolve(req.secret()); + public void verifyEmail(VerifyEmailRequest req) { + Restate.promiseHandle(EMAIL_VERIFIED_PROMISE).resolve(req.secret()); } } diff --git a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWorkflow.java b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWorkflow.java index cf711ccc..1064cf52 100644 --- a/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWorkflow.java +++ b/java/tutorials/tour-of-workflows-java/src/main/java/my/example/workflows/SignupWorkflow.java @@ -2,7 +2,7 @@ import static my.example.utils.Utils.*; -import dev.restate.sdk.WorkflowContext; +import dev.restate.sdk.Restate; import dev.restate.sdk.annotation.Workflow; import my.example.types.User; @@ -10,18 +10,18 @@ public class SignupWorkflow { @Workflow - public boolean run(WorkflowContext ctx, User user) { - String userId = ctx.key(); // workflow ID = user ID + public boolean run(User user) { + String userId = Restate.key(); // workflow ID = user ID // Write to database - boolean success = ctx.run("create", Boolean.class, () -> createUser(userId, user)); + boolean success = Restate.run("create", Boolean.class, () -> createUser(userId, user)); if (!success) { return false; } // Call APIs - ctx.run("activate", () -> activateUser(userId)); - ctx.run("welcome", () -> sendWelcomeEmail(user)); + Restate.run("activate", () -> activateUser(userId)); + Restate.run("welcome", () -> sendWelcomeEmail(user)); return true; } diff --git a/kotlin/basics/build.gradle.kts b/kotlin/basics/build.gradle.kts index 02663b4d..655ea027 100644 --- a/kotlin/basics/build.gradle.kts +++ b/kotlin/basics/build.gradle.kts @@ -1,27 +1,32 @@ plugins { application - kotlin("jvm") version "2.2.10" - kotlin("plugin.serialization") version "2.2.10" - id("com.google.devtools.ksp") version "2.2.10-2.0.2" + kotlin("jvm") version "2.4.0" + kotlin("plugin.serialization") version "2.4.0" + // Restate proxy clients need non-final classes; the all-open plugin opens + // classes annotated with the Restate annotations (see allOpen block below). + kotlin("plugin.allopen") version "2.4.0" } repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - // Annotation processor - ksp("dev.restate:sdk-api-kotlin-gen:$restateVersion") - // Restate SDK implementation("dev.restate:sdk-kotlin-http:$restateVersion") implementation("org.apache.logging.log4j:log4j-api:2.24.1") } kotlin { - jvmToolchain(21) + jvmToolchain(25) +} + +allOpen { + annotation("dev.restate.sdk.annotation.Service") + annotation("dev.restate.sdk.annotation.VirtualObject") + annotation("dev.restate.sdk.annotation.Workflow") } // Set main class @@ -31,4 +36,6 @@ application { } else { mainClass.set("durable_execution.RoleUpdateServiceKt") } + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } diff --git a/kotlin/basics/src/main/kotlin/building_blocks/MyService.kt b/kotlin/basics/src/main/kotlin/building_blocks/MyService.kt index 4ec245cb..810cf3dc 100644 --- a/kotlin/basics/src/main/kotlin/building_blocks/MyService.kt +++ b/kotlin/basics/src/main/kotlin/building_blocks/MyService.kt @@ -6,7 +6,6 @@ import dev.restate.sdk.annotation.Service import dev.restate.sdk.http.vertx.RestateHttpServer import dev.restate.sdk.kotlin.endpoint.endpoint import utils.SubscriptionService -import utils.SubscriptionServiceClient import utils.chargeBankAccount import java.util.UUID import kotlin.time.Duration.Companion.days @@ -31,43 +30,50 @@ class MyService { // This handler can be called over HTTP at http://restate:8080/MyService/handlerName // Use the context to access Restate's durable building blocks @Handler - suspend fun run(ctx: Context) { + suspend fun run() { // 1. IDEMPOTENCY: Add an idempotency key to the header of your requests // Restate deduplicates calls automatically. Nothing to do here. // 2. DURABLE RPC: Call other services without manual retry and deduplication logic // Restate persists all requests and ensures execution till completion - val result = SubscriptionServiceClient.fromContext(ctx, "my-sub-123").create("my-request").await() + val result = toVirtualObject("my-sub-123") + .request { create("my-request") } + .call() + .await() // 3. DURABLE MESSAGING: send (delayed) messages to other services without deploying a message broker // Restate persists the timers and triggers execution - SubscriptionServiceClient.fromContext(ctx, "my-sub-123").send().create("my-request") + toVirtualObject("my-sub-123") + .request { create("my-request") } + .send() // 4. DURABLE PROMISES: tracked by Restate, can be moved between processes and survive failures // Awakeables: block the workflow until notified by another handler - val awakeable = ctx.awakeable() + val awakeable = awakeable() // Wait on the promise // If the process crashes while waiting, Restate will recover the promise somewhere else val greeting = awakeable.await() // Another process can resolve the awakeable via its ID - ctx.awakeableHandle(awakeable.id).resolve("hello") + awakeableHandle(awakeable.id).resolve("hello") // 5. DURABLE TIMERS: sleep or wait for a timeout, tracked by Restate and recoverable // When this runs on FaaS, the handler suspends and the timer is tracked by Restate // Example of durable recoverable sleep // If the service crashes two seconds later, Restate will invoke it after another 3 seconds - ctx.sleep(5.seconds) + sleep(5.seconds) // Example of waiting on a promise (call/awakeable/...) or a timeout awakeable.await(5.seconds) // Example of scheduling a handler for later on - SubscriptionServiceClient.fromContext(ctx, "my-sub-123").send().cancel(1.days) + toVirtualObject("my-sub-123") + .request { cancel() } + .send(1.days) // 7. PERSIST RESULTS: avoid re-execution of actions on retries // Use this for non-deterministic actions or interaction with APIs, DBs, ... // For example, generate idempotency keys that are stable across retries // Then use these to call other APIs and let them deduplicate val paymentDeduplicationID = UUID.randomUUID().toString() - ctx.runBlock { chargeBankAccount(paymentDeduplicationID, 100) } + runBlock { chargeBankAccount(paymentDeduplicationID, 100) } } } diff --git a/kotlin/basics/src/main/kotlin/durable_execution/SubscriptionService.kt b/kotlin/basics/src/main/kotlin/durable_execution/SubscriptionService.kt index 5d2804e6..99c1463b 100644 --- a/kotlin/basics/src/main/kotlin/durable_execution/SubscriptionService.kt +++ b/kotlin/basics/src/main/kotlin/durable_execution/SubscriptionService.kt @@ -33,19 +33,19 @@ import utils.createSubscription class SubscriptionService { @Handler - suspend fun add(ctx: Context, req: SubscriptionRequest) { - // Restate persists the result of all `ctx` actions and recovers them after failures + suspend fun add(req: SubscriptionRequest) { + // Restate persists the result of all durable actions and recovers them after failures // For example, generate a stable idempotency key: - val paymentId = ctx.random().nextUUID().toString() + val paymentId = random().nextUUID().toString() - // ctx.run persists results of successful actions and skips execution on retries + // runBlock persists results of successful actions and skips execution on retries // Failed actions (timeouts, API downtime, etc.) get retried - val payRef = ctx.runBlock { + val payRef = runBlock { createRecurringPayment(req.creditCard, paymentId) } for (subscription in req.subscriptions) { - ctx.runBlock { + runBlock { createSubscription(req.userId, subscription, payRef) } } diff --git a/kotlin/basics/src/main/kotlin/utils/SubscriptionService.kt b/kotlin/basics/src/main/kotlin/utils/SubscriptionService.kt index 335a4693..837599d1 100644 --- a/kotlin/basics/src/main/kotlin/utils/SubscriptionService.kt +++ b/kotlin/basics/src/main/kotlin/utils/SubscriptionService.kt @@ -2,16 +2,16 @@ package utils import dev.restate.sdk.annotation.Handler import dev.restate.sdk.annotation.VirtualObject -import dev.restate.sdk.kotlin.ObjectContext +import dev.restate.sdk.kotlin.* @VirtualObject class SubscriptionService { @Handler - fun create(ctx: ObjectContext, userId: String): String = + fun create(userId: String): String = "SUCCESS" @Handler - fun cancel(ctx: ObjectContext) = - println("Cancelling all subscriptions for user ${ctx.key()}") -} \ No newline at end of file + suspend fun cancel() = + println("Cancelling all subscriptions for user ${objectKey()}") +} diff --git a/kotlin/basics/src/main/kotlin/virtual_objects/GreeterObject.kt b/kotlin/basics/src/main/kotlin/virtual_objects/GreeterObject.kt index 4303ebbe..c88f4317 100644 --- a/kotlin/basics/src/main/kotlin/virtual_objects/GreeterObject.kt +++ b/kotlin/basics/src/main/kotlin/virtual_objects/GreeterObject.kt @@ -28,25 +28,27 @@ class GreeterObject { } @Handler - suspend fun greet(ctx: ObjectContext, greeting: String): String { + suspend fun greet(greeting: String): String { // Access the state attached to this object (this 'name') // State access and updates are exclusive and consistent with the invocations - val count = ctx.get(COUNT) ?: 0 + val state = state() + val count = state.get(COUNT) ?: 0 val newCount = count + 1 - ctx.set(COUNT, newCount) + state.set(COUNT, newCount) - return "$greeting ${ctx.key()}, for the $newCount-th time" + return "$greeting ${objectKey()}, for the $newCount-th time" } @Handler - suspend fun ungreet(ctx: ObjectContext): String { - val count = ctx.get(COUNT) ?: 0 + suspend fun ungreet(): String { + val state = state() + val count = state.get(COUNT) ?: 0 if (count > 0) { val newCount = count - 1 - ctx.set(COUNT, newCount) + state.set(COUNT, newCount) } - return "Dear ${ctx.key()}, taking one greeting back: $count" + return "Dear ${objectKey()}, taking one greeting back: $count" } } diff --git a/kotlin/basics/src/main/kotlin/workflows/SignupWorkflow.kt b/kotlin/basics/src/main/kotlin/workflows/SignupWorkflow.kt index d64a1ea0..8357083c 100644 --- a/kotlin/basics/src/main/kotlin/workflows/SignupWorkflow.kt +++ b/kotlin/basics/src/main/kotlin/workflows/SignupWorkflow.kt @@ -26,21 +26,21 @@ class SignupWorkflow { } @Workflow - suspend fun run(ctx: WorkflowContext, user: User): Boolean { + suspend fun run(user: User): Boolean { // workflow ID = user ID; workflow runs once per user - val userId = ctx.key() + val userId = workflowKey() // Durably executed action; write to other system - ctx.runBlock { createUserEntry(user) } + runBlock { createUserEntry(user) } // Sent user email with verification link - val secret = ctx.random().nextUUID().toString() - ctx.runBlock { sendEmailWithLink(userId, user, secret) } + val secret = random().nextUUID().toString() + runBlock { sendEmailWithLink(userId, user, secret) } // Wait until user clicked email verification link // Promise gets resolved or rejected by the other handlers val clickSecret: String = - ctx.promise(LINK_CLICKED) + promise(LINK_CLICKED) .future() .await() @@ -49,9 +49,9 @@ class SignupWorkflow { // --- Other handlers interact with the workflow via queries and signals --- @Shared - suspend fun click(ctx: SharedWorkflowContext, secret: String) { + suspend fun click(secret: String) { // Send data to the workflow via a durable promise - ctx.promiseHandle(LINK_CLICKED).resolve(secret) + promiseHandle(LINK_CLICKED).resolve(secret) } } diff --git a/kotlin/end-to-end-applications/food-ordering/README.md b/kotlin/end-to-end-applications/food-ordering/README.md index 38a48d36..bd4e0d09 100644 --- a/kotlin/end-to-end-applications/food-ordering/README.md +++ b/kotlin/end-to-end-applications/food-ordering/README.md @@ -86,7 +86,7 @@ The flow of an incoming order is as follows: 2. It then calls the `OrderStatusService` to create a new order in the system. The `OrderStatusService` is a virtual object which tracks the status of each order by storing it in Restate's key-value store. 3. The order workflow then triggers the payment by calling a third-party payment provider (implemented as a stub in this example). To do this, the order workflow first generates a stable idempotency token provided by the SDK, and then uses this to call the payment provider. The payment provider can deduplicate retries via the idempotency key. 4. The workflow then sets the order status to `SCHEDULED` and sets a timer to continue processing after the delivery delay has passed. For example, if a customer ordered food for later in the day, the order will be scheduled for preparation at the requested time. If any failures occur during the sleep, Restate makes sure that the workflow will still wake up on time. - 5. Once the timer fires, the order workflow creates an awakeable and sends a request to the restaurant point-of-sales system to start the preparation. This is done via an HTTP request wrapped in `ctx.runBlock` to log the result in Restate. The status of the order is set to `IN_PREPARATION`. The restaurant will use the awakeable callback to signal when the prepration is done. Once this happens, the order workflow will continue and set the order status to `SCHEDULING_DELIVERY`. + 5. Once the timer fires, the order workflow creates an awakeable and sends a request to the restaurant point-of-sales system to start the preparation. This is done via an HTTP request wrapped in `runBlock` to log the result in Restate. The status of the order is set to `IN_PREPARATION`. The restaurant will use the awakeable callback to signal when the prepration is done. Once this happens, the order workflow will continue and set the order status to `SCHEDULING_DELIVERY`. 6. Finally, the order workflow calls the delivery manager (`DeliveryManager.kt`) to schedule the delivery of the order (see description below). It does this by using an awakeable, that the delivery manager will use to signal when the delivery is done. Once the delivery is done, the order workflow will set the order status to `DELIVERED`. ### The delivery workflow diff --git a/kotlin/end-to-end-applications/food-ordering/app/build.gradle.kts b/kotlin/end-to-end-applications/food-ordering/app/build.gradle.kts index d380b831..8ba5ec89 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/build.gradle.kts +++ b/kotlin/end-to-end-applications/food-ordering/app/build.gradle.kts @@ -1,13 +1,17 @@ plugins { application - kotlin("jvm") version "2.2.10" - kotlin("plugin.serialization") version "2.2.10" + kotlin("jvm") version "2.4.0" + kotlin("plugin.serialization") version "2.4.0" + // Restate proxy clients need non-final classes; the all-open plugin opens + // classes annotated with the Restate annotations (see allOpen block below). + kotlin("plugin.allopen") version "2.4.0" id("com.diffplug.spotless") version "6.25.0" } subprojects { apply(plugin = "kotlin") apply(plugin = "org.jetbrains.kotlin.plugin.serialization") + apply(plugin = "org.jetbrains.kotlin.plugin.allopen") apply(plugin = "com.diffplug.spotless") dependencies { @@ -15,7 +19,13 @@ subprojects { } kotlin { - jvmToolchain(17) + jvmToolchain(25) + } + + allOpen { + annotation("dev.restate.sdk.annotation.Service") + annotation("dev.restate.sdk.annotation.VirtualObject") + annotation("dev.restate.sdk.annotation.Workflow") } // Code formatting tool @@ -30,5 +40,7 @@ subprojects { tasks.withType { useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } } \ No newline at end of file diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts b/kotlin/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts index cf64f7db..e29e96bc 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts @@ -1,16 +1,16 @@ plugins { application id("com.google.cloud.tools.jib") version "3.4.0" - id("com.google.devtools.ksp") version "2.2.10-2.0.2" } -repositories { mavenCentral() } +repositories { + mavenCentral() +} -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { // Restate SDK - ksp("dev.restate:sdk-api-kotlin-gen:$restateVersion") implementation("dev.restate:sdk-kotlin-http:$restateVersion") // Kafka @@ -18,7 +18,13 @@ dependencies { } // Set main class -application { mainClass.set("dev.restate.sdk.examples.AppMainKt") } +application { + mainClass.set("dev.restate.sdk.examples.AppMainKt") + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, + // --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = + listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") +} jib { to.image = "restate-app:0.0.1" diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/AppMain.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/AppMain.kt index 7bce9cb0..b3b0ad3b 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/AppMain.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/AppMain.kt @@ -15,7 +15,8 @@ import dev.restate.sdk.http.vertx.RestateHttpServer import dev.restate.sdk.kotlin.endpoint.endpoint fun main() { - RestateHttpServer.listen(endpoint { + RestateHttpServer.listen( + endpoint { bind(OrderWorkflow()) bind(OrderETAService()) bind(DriverDeliveryMatcher()) @@ -23,5 +24,5 @@ fun main() { // external mobile app on driver's phone bind(DriverMobileAppSimulator()) - }) + }) } diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDeliveryMatcher.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDeliveryMatcher.kt index 16283701..34a23a17 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDeliveryMatcher.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDeliveryMatcher.kt @@ -35,23 +35,24 @@ class DriverDeliveryMatcher { * in line. If no pending deliveries, driver is added to the available driver pool */ @Handler - suspend fun setDriverAvailable(ctx: ObjectContext, driverId: String) { - val pendingDeliveries = ctx.get(PENDING_DELIVERIES) ?: mutableListOf() + suspend fun setDriverAvailable(driverId: String) { + val state = state() + val pendingDeliveries = state.get(PENDING_DELIVERIES) ?: mutableListOf() // If there is a pending delivery, assign it to the driver val nextDelivery = pendingDeliveries.removeFirstOrNull() if (nextDelivery != null) { // Update the queue in state. Delivery was removed. - ctx.set(PENDING_DELIVERIES, pendingDeliveries) + state.set(PENDING_DELIVERIES, pendingDeliveries) // Notify that delivery is ongoing - ctx.awakeableHandle(nextDelivery).resolve(driverId) + awakeableHandle(nextDelivery).resolve(driverId) return } // Otherwise remember driver as available - val availableDrivers = ctx.get(AVAILABLE_DRIVERS) ?: mutableListOf() + val availableDrivers = state.get(AVAILABLE_DRIVERS) ?: mutableListOf() availableDrivers.add(driverId) - ctx.set(AVAILABLE_DRIVERS, availableDrivers) + state.set(AVAILABLE_DRIVERS, availableDrivers) } /** @@ -59,22 +60,23 @@ class DriverDeliveryMatcher { * available. If no available drivers, the delivery is added to the pending deliveries queue */ @Handler - suspend fun requestDriverForDelivery(ctx: ObjectContext, deliveryCallbackId: String) { - val availableDrivers = ctx.get(AVAILABLE_DRIVERS) ?: mutableListOf() + suspend fun requestDriverForDelivery(deliveryCallbackId: String) { + val state = state() + val availableDrivers = state.get(AVAILABLE_DRIVERS) ?: mutableListOf() // If a driver is available, assign the delivery right away val nextAvailableDriver = availableDrivers.removeFirstOrNull() if (nextAvailableDriver != null) { // Remove driver from the pool - ctx.set(AVAILABLE_DRIVERS, availableDrivers) + state.set(AVAILABLE_DRIVERS, availableDrivers) // Notify that delivery is ongoing - ctx.awakeableHandle(deliveryCallbackId).resolve(nextAvailableDriver) + awakeableHandle(deliveryCallbackId).resolve(nextAvailableDriver) return } // otherwise store the delivery request until a new driver becomes available - val pendingDeliveries = ctx.get(PENDING_DELIVERIES) ?: mutableListOf() + val pendingDeliveries = state.get(PENDING_DELIVERIES) ?: mutableListOf() pendingDeliveries.add(deliveryCallbackId) - ctx.set(PENDING_DELIVERIES, pendingDeliveries) + state.set(PENDING_DELIVERIES, pendingDeliveries) } } diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDigitalTwin.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDigitalTwin.kt index ef4cff52..02b31af2 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDigitalTwin.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDigitalTwin.kt @@ -13,8 +13,8 @@ package dev.restate.sdk.examples import dev.restate.sdk.annotation.Handler import dev.restate.sdk.annotation.Shared import dev.restate.sdk.annotation.VirtualObject -import dev.restate.sdk.kotlin.* import dev.restate.sdk.common.TerminalException +import dev.restate.sdk.kotlin.* /** * Digital twin for the driver. Represents a driver and his status, assigned delivery, and location. @@ -39,11 +39,12 @@ class DriverDigitalTwin { * (DriverMobileAppSimulator) calls this method. */ @Handler - suspend fun setDriverAvailable(ctx: ObjectContext, region: String) { - expectStatus(ctx, DriverStatus.IDLE) + suspend fun setDriverAvailable(region: String) { + expectStatus(DriverStatus.IDLE) - ctx.set(DRIVER_STATUS, DriverStatus.WAITING_FOR_WORK) - DriverDeliveryMatcherClient.fromContext(ctx, region).send().setDriverAvailable(ctx.key()) + val driverId = objectKey() + state().set(DRIVER_STATUS, DriverStatus.WAITING_FOR_WORK) + toVirtualObject(region).request { setDriverAvailable(driverId) }.send() } /** @@ -52,29 +53,34 @@ class DriverDigitalTwin { * location. */ @Handler - suspend fun assignDeliveryJob(ctx: ObjectContext, request: AssignDeliveryRequest) { - expectStatus(ctx, DriverStatus.WAITING_FOR_WORK) + suspend fun assignDeliveryJob(request: AssignDeliveryRequest) { + expectStatus(DriverStatus.WAITING_FOR_WORK) // Update the status and assigned delivery information of the driver - ctx.set(DRIVER_STATUS, DriverStatus.DELIVERING) - ctx.set( + val state = state() + state.set(DRIVER_STATUS, DriverStatus.DELIVERING) + state.set( ASSIGNED_DELIVERY, AssignedDelivery( - ctx.key(), + objectKey(), request.orderId, request.restaurantId, request.restaurantLocation, request.customerLocation)) // Initialize the ETA service - OrderETAServiceClient.fromContext(ctx, request.orderId) + toVirtualObject(request.orderId) + .request { + notifyDeliveryLocations( + DeliveryLocations(request.restaurantLocation, request.customerLocation)) + } .send() - .notifyDeliveryLocations( - DeliveryLocations(request.restaurantLocation, request.customerLocation)) // Notify current location to the delivery service - ctx.get(DRIVER_LOCATION)?.let { - OrderETAServiceClient.fromContext(ctx, request.orderId).send().notifyDriverLocationUpdate(it) + state.get(DRIVER_LOCATION)?.let { location -> + toVirtualObject(request.orderId) + .request { notifyDriverLocationUpdate(location) } + .send() } } @@ -82,51 +88,62 @@ class DriverDigitalTwin { * Gets called by the driver's mobile app when he has picked up the delivery from the restaurant. */ @Handler - suspend fun notifyDeliveryPickup(ctx: ObjectContext) { - expectStatus(ctx, DriverStatus.DELIVERING) + suspend fun notifyDeliveryPickup() { + expectStatus(DriverStatus.DELIVERING) // Retrieve the ongoing delivery and update its status + val state = state() val currentDelivery = - ctx.get(ASSIGNED_DELIVERY) + state.get(ASSIGNED_DELIVERY) ?: throw TerminalException( "Driver is in status DELIVERING but there is no current delivery set.") currentDelivery.notifyPickup() - ctx.set(ASSIGNED_DELIVERY, currentDelivery) + state.set(ASSIGNED_DELIVERY, currentDelivery) // Update the status of the delivery in the delivery manager - OrderWorkflowClient.fromContext(ctx, currentDelivery.orderId).send().notifyDeliveryPickup() - OrderETAServiceClient.fromContext(ctx, currentDelivery.orderId).send().notifyDeliveryPickup() + toVirtualObject(currentDelivery.orderId) + .request { notifyDeliveryPickup() } + .send() + toVirtualObject(currentDelivery.orderId) + .request { notifyDeliveryPickup() } + .send() } /** Gets called by the driver's mobile app when he has delivered the order to the customer. */ @Handler - suspend fun notifyDeliveryDelivered(ctx: ObjectContext) { - expectStatus(ctx, DriverStatus.DELIVERING) + suspend fun notifyDeliveryDelivered() { + expectStatus(DriverStatus.DELIVERING) // Retrieve the ongoing delivery + val state = state() val assignedDelivery = - ctx.get(ASSIGNED_DELIVERY) + state.get(ASSIGNED_DELIVERY) ?: throw TerminalException( "Driver is in status DELIVERING but there is no current delivery set.") // Clean up the state - ctx.clear(ASSIGNED_DELIVERY) + state.clear(ASSIGNED_DELIVERY) // Notify the delivery service that the delivery was delivered - OrderWorkflowClient.fromContext(ctx, assignedDelivery.orderId).send().notifyDeliveryDelivered() + toVirtualObject(assignedDelivery.orderId) + .request { notifyDeliveryDelivered() } + .send() // Update the status of the driver to idle - ctx.set(DRIVER_STATUS, DriverStatus.IDLE) + state.set(DRIVER_STATUS, DriverStatus.IDLE) } /** Gets called by the driver's mobile app when he has moved to a new location. */ @Handler - suspend fun handleDriverLocationUpdateEvent(ctx: ObjectContext, location: Location) { + suspend fun handleDriverLocationUpdateEvent(location: Location) { // Update the location of the driver - ctx.set(DRIVER_LOCATION, location) + val state = state() + state.set(DRIVER_LOCATION, location) // Update the location of the delivery, if there is one - ctx.get(ASSIGNED_DELIVERY)?.let { - OrderETAServiceClient.fromContext(ctx, it.orderId).send().notifyDriverLocationUpdate(location) + state.get(ASSIGNED_DELIVERY)?.let { delivery -> + toVirtualObject(delivery.orderId) + .request { notifyDriverLocationUpdate(location) } + .send() } } @@ -136,16 +153,16 @@ class DriverDigitalTwin { * got assigned to him. */ @Shared - suspend fun getAssignedDelivery(ctx: SharedObjectContext): GetAssignedDeliveryResult { - return GetAssignedDeliveryResult(ctx.get(ASSIGNED_DELIVERY)) + suspend fun getAssignedDelivery(): GetAssignedDeliveryResult { + return GetAssignedDeliveryResult(state().get(ASSIGNED_DELIVERY)) } // Utility function to check if the driver is in the expected state // If the driver is in a different state, a terminal exception is thrown that stops any retries // from taking place. // Is only called from inside the driver service. - private suspend fun expectStatus(ctx: ObjectContext, expectedStatus: DriverStatus) { - val currentStatus = ctx.get(DRIVER_STATUS) ?: DriverStatus.IDLE + private suspend fun expectStatus(expectedStatus: DriverStatus) { + val currentStatus = state().get(DRIVER_STATUS) ?: DriverStatus.IDLE if (currentStatus != expectedStatus) { throw TerminalException( diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderETAService.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderETAService.kt index 16a239c7..a20d76fb 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderETAService.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderETAService.kt @@ -13,9 +13,9 @@ package dev.restate.sdk.examples import dev.restate.sdk.annotation.Handler import dev.restate.sdk.annotation.Shared import dev.restate.sdk.annotation.VirtualObject +import dev.restate.sdk.common.TerminalException import dev.restate.sdk.examples.utils.GeoUtils import dev.restate.sdk.kotlin.* -import dev.restate.sdk.common.TerminalException /** Virtual object tracking the ETA, keyed by order-id */ @VirtualObject @@ -28,13 +28,13 @@ class OrderETAService { /** Gets called by the webUI frontend to display the status of an order. */ @Shared - suspend fun get(ctx: SharedObjectContext): Long { - return ctx.get(ORDER_ETA) ?: -1L + suspend fun get(): Long { + return state().get(ORDER_ETA) ?: -1L } @Handler - suspend fun notifyDeliveryLocations(ctx: ObjectContext, locations: DeliveryLocations) { - ctx.set(DELIVERY_LOCATIONS, locations) + suspend fun notifyDeliveryLocations(locations: DeliveryLocations) { + state().set(DELIVERY_LOCATIONS, locations) } /** @@ -43,8 +43,8 @@ class OrderETAService { * has moved to a new location. */ @Handler - suspend fun notifyDeliveryPickup(ctx: ObjectContext) { - ctx.set(DELIVERY_IS_PICKED_UP, Unit) + suspend fun notifyDeliveryPickup() { + state().set(DELIVERY_IS_PICKED_UP, Unit) } /** @@ -53,14 +53,15 @@ class OrderETAService { * has moved to a new location. */ @Handler - suspend fun notifyDriverLocationUpdate(ctx: ObjectContext, newLocation: Location) { + suspend fun notifyDriverLocationUpdate(newLocation: Location) { + val state = state() // Retrieve the delivery information for this delivery val locations = - ctx.get(DELIVERY_LOCATIONS) + state.get(DELIVERY_LOCATIONS) ?: throw TerminalException( "Driver is doing a delivery but there is no ongoing delivery.") - val isOrderPickedUp = ctx.get(DELIVERY_IS_PICKED_UP) != null + val isOrderPickedUp = state.get(DELIVERY_IS_PICKED_UP) != null // Parse the new location, and calculate the ETA of the delivery to the customer val eta = @@ -70,6 +71,6 @@ class OrderETAService { GeoUtils.calculateEtaMillis(locations.restaurant, locations.customer)) // Update the ETA of the order - ctx.set(ORDER_ETA, eta) + state.set(ORDER_ETA, eta) } } diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderWorkflow.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderWorkflow.kt index cbd78843..9a08ac5e 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderWorkflow.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderWorkflow.kt @@ -13,11 +13,11 @@ package dev.restate.sdk.examples import dev.restate.sdk.annotation.Handler import dev.restate.sdk.annotation.Shared import dev.restate.sdk.annotation.VirtualObject +import dev.restate.sdk.common.TerminalException import dev.restate.sdk.examples.clients.PaymentClient import dev.restate.sdk.examples.clients.RestaurantClient import dev.restate.sdk.examples.utils.GeoUtils import dev.restate.sdk.kotlin.* -import dev.restate.sdk.common.TerminalException import kotlin.time.Duration.Companion.milliseconds /** @@ -35,53 +35,54 @@ class OrderWorkflow { } @Handler - suspend fun process(ctx: ObjectContext, order: OrderRequest) { + suspend fun process(order: OrderRequest) { + val state = state() // --- 📝 Created - ctx.set(STATUS, Status.CREATED) + state.set(STATUS, Status.CREATED) // --- 💳 Payment - val token: String = ctx.random().nextUUID().toString() - val paid: Boolean = ctx.runBlock { PaymentClient.charge(order.orderId, token, order.totalCost) } + val token: String = random().nextUUID().toString() + val paid: Boolean = runBlock { PaymentClient.charge(order.orderId, token, order.totalCost) } if (!paid) { - ctx.set(STATUS, Status.REJECTED) + state.set(STATUS, Status.REJECTED) return } // --- 🕧 Scheduled - ctx.set(STATUS, Status.SCHEDULED) - ctx.sleep(order.deliveryDelay.milliseconds) + state.set(STATUS, Status.SCHEDULED) + sleep(order.deliveryDelay.milliseconds) // --- 🧑‍🍳 Preparing - val preparationAwakeable = ctx.awakeable() - ctx.runBlock { RestaurantClient.prepare(order.orderId, preparationAwakeable.id) } - ctx.set(STATUS, Status.IN_PREPARATION) + val preparationAwakeable = awakeable() + runBlock { RestaurantClient.prepare(order.orderId, preparationAwakeable.id) } + state.set(STATUS, Status.IN_PREPARATION) preparationAwakeable.await() // Declare pick-up and delivery signals - val pickupAwakeable = ctx.awakeable() - ctx.set(PICKUP_CALLBACK_ID, pickupAwakeable.id) - val deliveryAwakeable = ctx.awakeable() - ctx.set(DELIVERY_CALLBACK_ID, deliveryAwakeable.id) + val pickupAwakeable = awakeable() + state.set(PICKUP_CALLBACK_ID, pickupAwakeable.id) + val deliveryAwakeable = awakeable() + state.set(DELIVERY_CALLBACK_ID, deliveryAwakeable.id) // 🎙️ Scheduling delivery - ctx.set(STATUS, Status.SCHEDULING_DELIVERY) - startDelivery(ctx, order) + state.set(STATUS, Status.SCHEDULING_DELIVERY) + startDelivery(order) // 🔜 Waiting for a driver - ctx.set(STATUS, Status.WAITING_FOR_DRIVER) + state.set(STATUS, Status.WAITING_FOR_DRIVER) // 🚴 Delivery pickupAwakeable.await() - ctx.set(STATUS, Status.IN_DELIVERY) + state.set(STATUS, Status.IN_DELIVERY) // 😋 Delivered deliveryAwakeable.await() - ctx.set(STATUS, Status.DELIVERED) + state.set(STATUS, Status.DELIVERED) } @Shared - suspend fun getStatus(ctx: SharedObjectContext): Status { - return ctx.get(STATUS) ?: Status.NEW + suspend fun getStatus(): Status { + return state().get(STATUS) ?: Status.NEW } /** @@ -89,14 +90,14 @@ class OrderWorkflow { * when the driver has arrived at the restaurant. */ @Shared - suspend fun notifyDeliveryPickup(ctx: SharedObjectContext) { + suspend fun notifyDeliveryPickup() { // Retrieve the delivery information for this delivery val callbackId = - ctx.get(PICKUP_CALLBACK_ID) + state().get(PICKUP_CALLBACK_ID) ?: throw TerminalException("Delivery was picked up but there is no ongoing delivery.") // Notify that the delivery was picked up - ctx.awakeableHandle(callbackId).resolve(Unit) + awakeableHandle(callbackId).resolve(Unit) } /** @@ -104,37 +105,36 @@ class OrderWorkflow { * when the driver has delivered the order to the customer. */ @Shared - suspend fun notifyDeliveryDelivered(ctx: SharedObjectContext) { + suspend fun notifyDeliveryDelivered() { // Retrieve the delivery information for this delivery val callbackId = - ctx.get(DELIVERY_CALLBACK_ID) + state().get(DELIVERY_CALLBACK_ID) ?: throw TerminalException("Delivery was delivered but there is no ongoing delivery.") // Notify that the delivery has been completed - ctx.awakeableHandle(callbackId).resolve(Unit) + awakeableHandle(callbackId).resolve(Unit) } /* Coordinates DriverDeliveryMatcher and DriverDigitalTwin to start a delivery */ - private suspend fun startDelivery(ctx: ObjectContext, order: OrderRequest) { + private suspend fun startDelivery(order: OrderRequest) { // --- Wait for a driver to be available and acquire it - val driverAwakeable = ctx.awakeable() - DriverDeliveryMatcherClient.fromContext(ctx, GeoUtils.DEMO_REGION) + val driverAwakeable = awakeable() + toVirtualObject(GeoUtils.DEMO_REGION) + .request { requestDriverForDelivery(driverAwakeable.id) } .send() - .requestDriverForDelivery(driverAwakeable.id) // Wait until the driver pool service has located a driver // This awakeable gets resolved either immediately when there is a pending delivery // or later, when a new delivery comes in. val driverId = driverAwakeable.await() // --- Generate random restaurant/customer locations - val restaurantLocation = ctx.runBlock { GeoUtils.randomLocation() } - val customerLocation = ctx.runBlock { GeoUtils.randomLocation() } + val restaurantLocation = runBlock { GeoUtils.randomLocation() } + val customerLocation = runBlock { GeoUtils.randomLocation() } // --- Assign the driver to the job - DriverDigitalTwinClient.fromContext(ctx, driverId) + virtualObject(driverId) .assignDeliveryJob( AssignDeliveryRequest( order.orderId, order.restaurantId, restaurantLocation, customerLocation)) - .await() } } diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/external/DriverMobileAppSimulator.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/external/DriverMobileAppSimulator.kt index 0d074d32..ded95ad2 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/external/DriverMobileAppSimulator.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/external/DriverMobileAppSimulator.kt @@ -12,13 +12,13 @@ package dev.restate.sdk.examples.external import dev.restate.sdk.annotation.Handler import dev.restate.sdk.annotation.VirtualObject +import dev.restate.sdk.common.TerminalException import dev.restate.sdk.examples.AssignedDelivery -import dev.restate.sdk.examples.DriverDigitalTwinClient +import dev.restate.sdk.examples.DriverDigitalTwin import dev.restate.sdk.examples.Location import dev.restate.sdk.examples.clients.KafkaPublisher import dev.restate.sdk.examples.utils.GeoUtils import dev.restate.sdk.kotlin.* -import dev.restate.sdk.common.TerminalException import kotlin.time.Duration.Companion.milliseconds import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json @@ -48,24 +48,24 @@ class DriverMobileAppSimulator { /** Mimics the driver setting himself to available in the app */ @Handler - suspend fun startDriver(ctx: ObjectContext) { + suspend fun startDriver() { + val state = state() // If this driver was already created, do nothing - if (ctx.get(CURRENT_LOCATION) != null) { + if (state.get(CURRENT_LOCATION) != null) { return } - logger.info("Starting driver " + ctx.key()) - val location = ctx.runBlock { GeoUtils.randomLocation() } - ctx.set(CURRENT_LOCATION, location) - KafkaPublisher.sendDriverUpdate(ctx.key(), Json.encodeToString(location).encodeToByteArray()) + val driverId = objectKey() + logger.info("Starting driver " + driverId) + val location = runBlock { GeoUtils.randomLocation() } + state.set(CURRENT_LOCATION, location) + KafkaPublisher.sendDriverUpdate(driverId, Json.encodeToString(location).encodeToByteArray()) // Tell the digital twin of the driver in the food ordering app, that he is available - DriverDigitalTwinClient.fromContext(ctx, ctx.key()) - .setDriverAvailable(GeoUtils.DEMO_REGION) - .await() + virtualObject(driverId).setDriverAvailable(GeoUtils.DEMO_REGION) // Start polling for work - DriverMobileAppSimulatorClient.fromContext(ctx, ctx.key()).send().pollForWork() + toVirtualObject(driverId).request { pollForWork() }.send() } /** @@ -73,16 +73,17 @@ class DriverMobileAppSimulator { * again after a short delay. */ @Handler - suspend fun pollForWork(ctx: ObjectContext) { - val thisDriverSim = DriverMobileAppSimulatorClient.fromContext(ctx, ctx.key()) + suspend fun pollForWork() { + val driverId = objectKey() // Ask the digital twin of the driver in the food ordering app, if he already got a job assigned - val getAssignedDeliveryResult = - DriverDigitalTwinClient.fromContext(ctx, ctx.key()).getAssignedDelivery().await() + val getAssignedDeliveryResult = virtualObject(driverId).getAssignedDelivery() // If there is no job, ask again after a short delay if (getAssignedDeliveryResult.assignedDelivery == null) { - thisDriverSim.send().pollForWork(POLL_INTERVAL.milliseconds) + toVirtualObject(driverId) + .request { pollForWork() } + .send(POLL_INTERVAL.milliseconds) return } @@ -94,20 +95,23 @@ class DriverMobileAppSimulator { getAssignedDeliveryResult.assignedDelivery.restaurantId, getAssignedDeliveryResult.assignedDelivery.restaurantLocation, getAssignedDeliveryResult.assignedDelivery.customerLocation) - ctx.set(ASSIGNED_DELIVERY, newAssignedDelivery) + state().set(ASSIGNED_DELIVERY, newAssignedDelivery) // Start moving to the delivery pickup location - thisDriverSim.send().move(MOVE_INTERVAL.milliseconds) + toVirtualObject(driverId) + .request { move() } + .send(MOVE_INTERVAL.milliseconds) } /** Periodically lets the food ordering app know the new location */ @Handler - suspend fun move(ctx: ObjectContext) { - val thisDriverSim = DriverMobileAppSimulatorClient.fromContext(ctx, ctx.key()) + suspend fun move() { + val driverId = objectKey() + val state = state() val assignedDelivery = - ctx.get(ASSIGNED_DELIVERY) ?: throw TerminalException("Driver has no delivery assigned") + state.get(ASSIGNED_DELIVERY) ?: throw TerminalException("Driver has no delivery assigned") val currentLocation = - ctx.get(CURRENT_LOCATION) ?: throw TerminalException("Driver has no location assigned") + state.get(CURRENT_LOCATION) ?: throw TerminalException("Driver has no location assigned") // Get next destination to go to val nextDestination = @@ -116,29 +120,29 @@ class DriverMobileAppSimulator { // Move to the next location val newLocation: Location = GeoUtils.moveToDestination(currentLocation, nextDestination) - ctx.set(CURRENT_LOCATION, newLocation) - KafkaPublisher.sendDriverUpdate(ctx.key(), Json.encodeToString(newLocation).encodeToByteArray()) + state.set(CURRENT_LOCATION, newLocation) + KafkaPublisher.sendDriverUpdate(driverId, Json.encodeToString(newLocation).encodeToByteArray()) // If we reached the destination, notify the food ordering app if (newLocation.equals(nextDestination)) { // If the delivery was already picked up, then that means it now arrived at the customer if (assignedDelivery.isOrderPickedUp) { // Delivery is delivered to customer - ctx.clear(ASSIGNED_DELIVERY) + state.clear(ASSIGNED_DELIVERY) // Notify the driver's digital twin in the food ordering app of the delivery success - DriverDigitalTwinClient.fromContext(ctx, ctx.key()).notifyDeliveryDelivered().await() + virtualObject(driverId).notifyDeliveryDelivered() // Take a small break before starting the next delivery - ctx.sleep(PAUSE_BETWEEN_DELIVERIES.milliseconds) + sleep(PAUSE_BETWEEN_DELIVERIES.milliseconds) // Tell the driver's digital twin in the food ordering app, that he is available - DriverDigitalTwinClient.fromContext(ctx, ctx.key()) + toVirtualObject(driverId) + .request { setDriverAvailable(GeoUtils.DEMO_REGION) } .send() - .setDriverAvailable(GeoUtils.DEMO_REGION) // Start polling for work - DriverMobileAppSimulatorClient.fromContext(ctx, ctx.key()).send().pollForWork() + toVirtualObject(driverId).request { pollForWork() }.send() return } @@ -146,11 +150,13 @@ class DriverMobileAppSimulator { // restaurant // and will start the delivery assignedDelivery.notifyPickup() - ctx.set(ASSIGNED_DELIVERY, assignedDelivery) - DriverDigitalTwinClient.fromContext(ctx, ctx.key()).notifyDeliveryPickup().await() + state.set(ASSIGNED_DELIVERY, assignedDelivery) + virtualObject(driverId).notifyDeliveryPickup() } // Call this method again after a short delay - thisDriverSim.send().move(MOVE_INTERVAL.milliseconds) + toVirtualObject(driverId) + .request { move() } + .send(MOVE_INTERVAL.milliseconds) } } diff --git a/kotlin/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts b/kotlin/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts index 8ac0d9a2..4d83ba1f 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts +++ b/kotlin/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts @@ -7,7 +7,7 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { // Kafka @@ -20,7 +20,13 @@ dependencies { } // Set main class -application { mainClass.set("dev.restate.sdk.examples.RestaurantMainKt") } +application { + mainClass.set("dev.restate.sdk.examples.RestaurantMainKt") + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, + // --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = + listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") +} jib { to.image = "restaurant-app:0.0.1" diff --git a/kotlin/end-to-end-applications/food-ordering/app/restaurant/src/main/kotlin/dev/restate/sdk/examples/RestaurantMain.kt b/kotlin/end-to-end-applications/food-ordering/app/restaurant/src/main/kotlin/dev/restate/sdk/examples/RestaurantMain.kt index 1598741f..b74fbc8e 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restaurant/src/main/kotlin/dev/restate/sdk/examples/RestaurantMain.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restaurant/src/main/kotlin/dev/restate/sdk/examples/RestaurantMain.kt @@ -3,15 +3,15 @@ package dev.restate.sdk.examples import com.sun.net.httpserver.HttpExchange import com.sun.net.httpserver.HttpHandler import com.sun.net.httpserver.HttpServer -import org.apache.logging.log4j.LogManager -import org.apache.logging.log4j.Logger import dev.restate.client.Client import dev.restate.serde.kotlinx.* +import java.net.InetSocketAddress import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream -import java.net.InetSocketAddress +import org.apache.logging.log4j.LogManager +import org.apache.logging.log4j.Logger /** * Restaurant POS system (HTTP server) that receives preparation requests for orders from the @@ -35,7 +35,10 @@ fun main() { /** Preparation request handler. */ internal class PrepareHandler : HttpHandler { - private val ingressClient: Client = Client.connect(RESTATE_RUNTIME_ENDPOINT) + // Kotlin ingress calls (de)serialize with kotlinx.serialization, so build the client + // with the KotlinSerializationSerdeFactory. + private val ingressClient: Client = + Client.connect(RESTATE_RUNTIME_ENDPOINT, KotlinSerializationSerdeFactory()) @OptIn(ExperimentalSerializationApi::class) override fun handle(t: HttpExchange) { diff --git a/kotlin/end-to-end-applications/kmp-android-todo-app/gradle/libs.versions.toml b/kotlin/end-to-end-applications/kmp-android-todo-app/gradle/libs.versions.toml index f3445a73..43945cd3 100644 --- a/kotlin/end-to-end-applications/kmp-android-todo-app/gradle/libs.versions.toml +++ b/kotlin/end-to-end-applications/kmp-android-todo-app/gradle/libs.versions.toml @@ -11,9 +11,12 @@ androidx-espresso-core = "3.6.1" androidx-lifecycle = "2.8.0" androidx-material = "1.12.0" androidx-test-junit = "1.2.1" +# NOTE: bumped `kotlin` to 2.4.0 for the Restate server module (Java 25 needs Kotlin >= 2.2.20). +# The Compose Multiplatform plugin below likely needs a matching bump for the Android/composeApp +# modules to build on an Android-SDK machine — verify the Android app separately. compose-plugin = "1.6.11" junit = "4.13.2" -kotlin = "2.2.10" +kotlin = "2.4.0" logback = "1.5.7" kotlinx-serialization = "1.7.2" ktor = "2.3.12" diff --git a/kotlin/end-to-end-applications/kmp-android-todo-app/server/build.gradle.kts b/kotlin/end-to-end-applications/kmp-android-todo-app/server/build.gradle.kts index d3b9bb7d..7f5a0172 100644 --- a/kotlin/end-to-end-applications/kmp-android-todo-app/server/build.gradle.kts +++ b/kotlin/end-to-end-applications/kmp-android-todo-app/server/build.gradle.kts @@ -2,24 +2,29 @@ plugins { alias(libs.plugins.kotlinJvm) application - id("com.google.devtools.ksp") version "2.2.10-2.0.2" + // Restate proxy clients need non-final classes; the all-open plugin opens + // classes annotated with the Restate annotations (see allOpen block below). + id("org.jetbrains.kotlin.plugin.allopen") version "2.4.0" } group = "dev.restate.examples.noteapp" version = "1.0.0" -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" kotlin { - jvmToolchain(17) + jvmToolchain(25) +} + +allOpen { + annotation("dev.restate.sdk.annotation.Service") + annotation("dev.restate.sdk.annotation.VirtualObject") + annotation("dev.restate.sdk.annotation.Workflow") } dependencies { implementation(projects.shared) - // Annotation processor - ksp("dev.restate:sdk-api-kotlin-gen:$restateVersion") - // Restate SDK implementation("dev.restate:sdk-kotlin-http:$restateVersion") @@ -28,4 +33,6 @@ dependencies { application { mainClass.set("dev.restate.examples.noteapp.ApplicationKt") + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } \ No newline at end of file diff --git a/kotlin/end-to-end-applications/kmp-android-todo-app/server/src/main/kotlin/dev/restate/examples/noteapp/Application.kt b/kotlin/end-to-end-applications/kmp-android-todo-app/server/src/main/kotlin/dev/restate/examples/noteapp/Application.kt index dbb42bef..761e4d8d 100644 --- a/kotlin/end-to-end-applications/kmp-android-todo-app/server/src/main/kotlin/dev/restate/examples/noteapp/Application.kt +++ b/kotlin/end-to-end-applications/kmp-android-todo-app/server/src/main/kotlin/dev/restate/examples/noteapp/Application.kt @@ -17,12 +17,12 @@ class Todos { } @Handler - suspend fun add(ctx: ObjectContext, item: TodoItem) = ctx.update(TODOS) { + suspend fun add(item: TodoItem) = update(TODOS) { (it ?: emptyMap()) + (item.id to item) } @Handler - suspend fun markCompleted(ctx: ObjectContext, id: String) = ctx.update(TODOS) { + suspend fun markCompleted(id: String) = update(TODOS) { val newNote = (it ?: emptyMap()) .getOrElse(id) { throw TerminalException(404, "Note not found for given index $id") } .copy(isCompleted = true) @@ -31,7 +31,7 @@ class Todos { } @Handler - suspend fun remove(ctx: ObjectContext, id: String) = ctx.update(TODOS) { + suspend fun remove(id: String) = update(TODOS) { val map = it?.toMutableMap() ?: mutableMapOf() if (map.remove(id) == null) { throw TerminalException(404, "Note not found for given index $id") @@ -40,16 +40,18 @@ class Todos { } @Shared - suspend fun readAll(ctx: SharedObjectContext): Collection = - ctx.get(TODOS)?.values ?: emptyList() + suspend fun readAll(): Collection = + state().get(TODOS)?.values ?: emptyList() } // Helper function to update state values -private suspend fun ObjectContext.update(stateKey: StateKey, fn: (T?) -> T) = - this.set(stateKey, fn(this.get(stateKey))) +private suspend fun update(stateKey: StateKey, fn: (T?) -> T) { + val state = state() + state.set(stateKey, fn(state.get(stateKey))) +} fun main() { RestateHttpServer.listen(endpoint { bind(Todos()) }) -} \ No newline at end of file +} diff --git a/kotlin/end-to-end-applications/kmp-android-todo-app/settings.gradle.kts b/kotlin/end-to-end-applications/kmp-android-todo-app/settings.gradle.kts index 85c5c1e7..9b6a0201 100644 --- a/kotlin/end-to-end-applications/kmp-android-todo-app/settings.gradle.kts +++ b/kotlin/end-to-end-applications/kmp-android-todo-app/settings.gradle.kts @@ -15,6 +15,10 @@ pluginManagement { } } +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} + dependencyResolutionManagement { repositories { google { diff --git a/kotlin/integrations/kotlin-gradle-lambda-cdk/README.md b/kotlin/integrations/kotlin-gradle-lambda-cdk/README.md index d2da6ca5..ed0223b9 100644 --- a/kotlin/integrations/kotlin-gradle-lambda-cdk/README.md +++ b/kotlin/integrations/kotlin-gradle-lambda-cdk/README.md @@ -34,7 +34,7 @@ For more information on CDK, please see [Getting started with the AWS CDK](https * npm * gradle -* JDK >= 21 +* JDK >= 25 * AWS account, bootstrapped for CDK use * valid AWS credentials with sufficient privileges to create the necessary resources * an existing [Restate Cloud](https://restate.dev) environment (environment id + API key) diff --git a/kotlin/integrations/kotlin-gradle-lambda-cdk/cdk/lambda-jvm-cdk-stack.ts b/kotlin/integrations/kotlin-gradle-lambda-cdk/cdk/lambda-jvm-cdk-stack.ts index b621f9ae..203093d5 100644 --- a/kotlin/integrations/kotlin-gradle-lambda-cdk/cdk/lambda-jvm-cdk-stack.ts +++ b/kotlin/integrations/kotlin-gradle-lambda-cdk/cdk/lambda-jvm-cdk-stack.ts @@ -20,7 +20,7 @@ export class LambdaJvmCdkStack extends cdk.Stack { super(scope, id, props); const handler: lambda.Function = new lambda.Function(this, "GreeterService", { - runtime: lambda.Runtime.JAVA_21, + runtime: lambda.Runtime.JAVA_25, architecture: lambda.Architecture.ARM_64, code: lambda.Code.fromAsset("lambda/build/distributions/lambda.zip"), handler: "dev.restate.sdk.examples.LambdaHandler", @@ -28,6 +28,10 @@ export class LambdaJvmCdkStack extends cdk.Stack { loggingFormat: lambda.LoggingFormat.JSON, applicationLogLevelV2: lambda.ApplicationLogLevel.DEBUG, systemLogLevelV2: lambda.SystemLogLevel.INFO, + environment: { + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + JAVA_TOOL_OPTIONS: "--enable-native-access=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow", + }, }); // If you would prefer to manually register the Lambda service with your Restate environment, diff --git a/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/build.gradle.kts b/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/build.gradle.kts index f39198bf..c5f3bf9c 100644 --- a/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/build.gradle.kts +++ b/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/build.gradle.kts @@ -1,7 +1,7 @@ plugins { - kotlin("jvm") version "2.2.10" - kotlin("plugin.serialization") version "2.2.10" - id("com.google.devtools.ksp") version "2.2.10-2.0.2" + kotlin("jvm") version "2.4.0" + kotlin("plugin.serialization") version "2.4.0" + kotlin("plugin.allopen") version "2.4.0" id("distribution") } @@ -10,12 +10,16 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" -dependencies { - // Annotation processor - ksp("dev.restate:sdk-api-kotlin-gen:$restateVersion") +// Restate proxy clients require non-final annotated classes +allOpen { + annotation("dev.restate.sdk.annotation.Service") + annotation("dev.restate.sdk.annotation.VirtualObject") + annotation("dev.restate.sdk.annotation.Workflow") +} +dependencies { // Restate SDK implementation("dev.restate:sdk-kotlin-lambda:$restateVersion") @@ -27,10 +31,8 @@ dependencies { } // Setup Java/Kotlin compiler target -java { - toolchain { - languageVersion.set(JavaLanguageVersion.of(21)) - } +kotlin { + jvmToolchain(25) } tasks.register("lambdaZip") { @@ -44,4 +46,4 @@ tasks.register("lambdaZip") { tasks.build { dependsOn("lambdaZip") -} \ No newline at end of file +} diff --git a/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/settings.gradle.kts b/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/settings.gradle.kts index 824de76d..e4dbcee6 100644 --- a/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/settings.gradle.kts +++ b/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/settings.gradle.kts @@ -1,2 +1,2 @@ // automatically download missing toolchains -plugins { id("org.gradle.toolchains.foojay-resolver-convention") version "0.7.0" } \ No newline at end of file +plugins { id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } \ No newline at end of file diff --git a/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/src/main/kotlin/dev/restate/sdk/examples/Greeter.kt b/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/src/main/kotlin/dev/restate/sdk/examples/Greeter.kt index d6414461..9e0939ca 100644 --- a/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/src/main/kotlin/dev/restate/sdk/examples/Greeter.kt +++ b/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/src/main/kotlin/dev/restate/sdk/examples/Greeter.kt @@ -13,7 +13,7 @@ package dev.restate.sdk.examples import dev.restate.sdk.annotation.Handler import dev.restate.sdk.annotation.Service -import dev.restate.sdk.kotlin.Context +import dev.restate.sdk.kotlin.* /** * Template of a Restate service and handler @@ -23,7 +23,7 @@ import dev.restate.sdk.kotlin.Context class Greeter { @Handler - suspend fun greet(ctx: Context, name: String): String { + suspend fun greet(name: String): String { return "Hello, $name!" } } diff --git a/kotlin/patterns-use-cases/build.gradle.kts b/kotlin/patterns-use-cases/build.gradle.kts index d951fe8b..1473dd16 100644 --- a/kotlin/patterns-use-cases/build.gradle.kts +++ b/kotlin/patterns-use-cases/build.gradle.kts @@ -1,19 +1,20 @@ plugins { application - kotlin("jvm") version "2.2.10" - kotlin("plugin.serialization") version "2.2.10" - id("com.google.devtools.ksp") version "2.2.10-2.0.2" + kotlin("jvm") version "2.4.0" + kotlin("plugin.serialization") version "2.4.0" + // Restate proxy clients need non-final classes; the all-open plugin opens + // classes annotated with the Restate annotations (see allOpen block below). + kotlin("plugin.allopen") version "2.4.0" id("com.diffplug.spotless") version "6.25.0" } -repositories { mavenCentral() } +repositories { + mavenCentral() +} -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - // Annotation processor - ksp("dev.restate:sdk-api-kotlin-gen:$restateVersion") - // Restate SDK implementation("dev.restate:sdk-kotlin-http:$restateVersion") @@ -24,7 +25,13 @@ dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") } -kotlin { jvmToolchain(21) } +kotlin { jvmToolchain(25) } + +allOpen { + annotation("dev.restate.sdk.annotation.Service") + annotation("dev.restate.sdk.annotation.VirtualObject") + annotation("dev.restate.sdk.annotation.Workflow") +} // Configure main class application { @@ -33,6 +40,10 @@ application { } else { mainClass.set("my.example.sagas.BookingWorkflowKt") } + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, + // --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = + listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } spotless { diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventenrichment/PackageTracker.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventenrichment/PackageTracker.kt index 6a7aded1..5215d66f 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventenrichment/PackageTracker.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventenrichment/PackageTracker.kt @@ -25,21 +25,21 @@ class PackageTracker { } @Handler - suspend fun registerPackage(ctx: ObjectContext, packageInfo: PackageInfo) { - ctx.set(PACKAGE_INFO, packageInfo) + suspend fun registerPackage(packageInfo: PackageInfo) { + state().set(PACKAGE_INFO, packageInfo) } @Handler - suspend fun updateLocation(ctx: ObjectContext, locationUpdate: LocationUpdate) { - val packageInfo = ctx.get(PACKAGE_INFO) ?: throw TerminalException("Package not found") + suspend fun updateLocation(locationUpdate: LocationUpdate) { + val packageInfo = state().get(PACKAGE_INFO) ?: throw TerminalException("Package not found") packageInfo.locations.add(locationUpdate) - ctx.set(PACKAGE_INFO, packageInfo) + state().set(PACKAGE_INFO, packageInfo) } @Shared - suspend fun getPackageInfo(ctx: SharedObjectContext): PackageInfo { - return ctx.get(PACKAGE_INFO) ?: throw TerminalException("Package not found") + suspend fun getPackageInfo(): PackageInfo { + return state().get(PACKAGE_INFO) ?: throw TerminalException("Package not found") } } diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventtransactions/UserFeed.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventtransactions/UserFeed.kt index 31c5ed9e..8b9c92d9 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventtransactions/UserFeed.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventtransactions/UserFeed.kt @@ -17,16 +17,16 @@ class UserFeed { @Serializable data class SocialMediaPost(val content: String, val metadata: String) @Handler - suspend fun processPost(ctx: ObjectContext, post: SocialMediaPost) { - val userId = ctx.key() + suspend fun processPost(post: SocialMediaPost) { + val userId = objectKey() - val postId = ctx.runBlock { createPost(userId, post) } + val postId = runBlock { createPost(userId, post) } - while (ctx.runBlock { getPostStatus(postId) } == "PENDING") { - ctx.sleep(5000.milliseconds) + while (runBlock { getPostStatus(postId) } == "PENDING") { + sleep(5000.milliseconds) } - ctx.runBlock { updateUserFeed(userId, postId) } + runBlock { updateUserFeed(userId, postId) } } } diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/parallelizework/FanOutWorker.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/parallelizework/FanOutWorker.kt index b0591edd..10c25acd 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/parallelizework/FanOutWorker.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/parallelizework/FanOutWorker.kt @@ -29,22 +29,25 @@ import dev.restate.sdk.kotlin.endpoint.endpoint @Service class FanOutWorker { @Handler - suspend fun run(ctx: Context, task: Task): TaskResult { + suspend fun run(task: Task): TaskResult { // Split the task in subtasks - val subTasks = ctx.runBlock { task.split() } + val subTasks = runBlock { task.split() } // Fan out the subtasks - run them in parallel // Fan in - Await all results and aggregate - val results = subTasks.map { FanOutWorkerClient.fromContext(ctx).runSubtask(it) }.awaitAll() + val results = + subTasks + .map { subTask -> toService().request { runSubtask(subTask) }.call() } + .awaitAll() return results.aggregate() } @Handler - suspend fun runSubtask(ctx: Context, subTask: SubTask): SubTaskResult { + suspend fun runSubtask(subTask: SubTask): SubTaskResult { // Processing logic goes here ... // Can be moved to a separate service to scale independently - return subTask.execute(ctx) + return subTask.execute() } } diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/parallelizework/stubs.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/parallelizework/stubs.kt index 57fa012f..7eb491df 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/parallelizework/stubs.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/parallelizework/stubs.kt @@ -1,6 +1,6 @@ package my.example.parallelizework -import dev.restate.sdk.kotlin.Context +import dev.restate.sdk.kotlin.* import kotlin.time.Duration.Companion.seconds import kotlinx.serialization.Serializable import org.apache.logging.log4j.LogManager @@ -18,11 +18,11 @@ private val logger = LogManager.getLogger("FanOutWorker") // Split the task into subTasks fun Task.split() = this.description.split(",").map { SubTask(it) } -suspend fun SubTask.execute(ctx: Context): SubTaskResult { +suspend fun SubTask.execute(): SubTaskResult { // Execute subtask logger.info("Started executing subtask: {}", this.description) // Sleep for a random amount between 0 and 10 seconds - ctx.sleep(ctx.random().nextInt(0, 10).toLong().seconds) + sleep(random().nextInt(0, 10).toLong().seconds) logger.info("Execution subtask finished: {}", this.description) return SubTaskResult("${this.description}: DONE") } diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/queue/AsyncTaskService.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/queue/AsyncTaskService.kt index 60429a06..2047305d 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/queue/AsyncTaskService.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/queue/AsyncTaskService.kt @@ -3,14 +3,13 @@ package my.example.queue import dev.restate.sdk.annotation.Handler import dev.restate.sdk.annotation.Service import dev.restate.sdk.http.vertx.RestateHttpServer -import dev.restate.sdk.kotlin.* import dev.restate.sdk.kotlin.endpoint.endpoint import kotlinx.serialization.Serializable @Service class AsyncTaskService { @Handler - suspend fun runTask(ctx: Context, params: TaskOpts): String { + suspend fun runTask(params: TaskOpts): String { return params.someHeavyWork() } } diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/queue/TaskSubmitter.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/queue/TaskSubmitter.kt index 239cbda8..de091403 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/queue/TaskSubmitter.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/queue/TaskSubmitter.kt @@ -2,6 +2,7 @@ package my.example.queue import dev.restate.client.Client import dev.restate.client.kotlin.* +import dev.restate.serde.kotlinx.KotlinSerializationSerdeFactory /* * Restate is as a sophisticated task queue, with extra features like: @@ -15,21 +16,25 @@ import dev.restate.client.kotlin.* */ class TaskSubmitter { companion object { - private val restateClient: Client = Client.connect("http://localhost:8080") + // A Kotlin service()/virtualObject()/workflow() proxy serializes with + // kotlinx.serialization, so the client must be built with the kotlinx serde factory. + private val restateClient: Client = + Client.connect("http://localhost:8080", KotlinSerializationSerdeFactory()) } suspend fun TaskOpts.scheduleTask() { // submit the task; similar to publishing a message to a queue // Restate ensures the task is executed exactly once val handle = - AsyncTaskServiceClient.fromClient(restateClient).send().runTask( - this, - // optionally add a delay to execute the task later - // delay = 5.days, - ) { - // use a stable uuid as an idempotency key; Restate deduplicates for us - idempotencyKey = "dQw4w9WgXcQ" - } + restateClient + .toService() + .request { runTask(this@scheduleTask) } + // optionally add a delay to execute the task later, e.g. .send(5.days) + .options { + // use a stable uuid as an idempotency key; Restate deduplicates for us + idempotencyKey = "dQw4w9WgXcQ" + } + .send() // ... do other things while the task is being processed ... diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/BookingWorkflow.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/BookingWorkflow.kt index 8e1cb20d..577904fd 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/BookingWorkflow.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/BookingWorkflow.kt @@ -54,21 +54,21 @@ Note: that the compensation logic is purely implemented in user code (no special class BookingWorkflow { @Handler - suspend fun run(ctx: Context, req: BookingRequest) { + suspend fun run(req: BookingRequest) { // Create a list of undo actions val compensations = mutableListOf Unit>() try { // For each action, we register a compensation that will be executed on failures - compensations.add { ctx.runBlock("Cancel flight") { cancelFlight(req.customerId) } } - ctx.runBlock("Book flight") { bookFlight(req.customerId, req.flight) } + compensations.add { runBlock("Cancel flight") { cancelFlight(req.customerId) } } + runBlock("Book flight") { bookFlight(req.customerId, req.flight) } - compensations.add { ctx.runBlock("Cancel car") { cancelCar(req.customerId) } } - ctx.runBlock("Book car") { bookCar(req.customerId, req.car) } + compensations.add { runBlock("Cancel car") { cancelCar(req.customerId) } } + runBlock("Book car") { bookCar(req.customerId, req.car) } - compensations.add { ctx.runBlock("Cancel hotel") { cancelHotel(req.customerId) } } - ctx.runBlock("Book hotel") { bookHotel(req.customerId, req.hotel) } + compensations.add { runBlock("Cancel hotel") { cancelHotel(req.customerId) } } + runBlock("Book hotel") { bookHotel(req.customerId, req.hotel) } } // Terminal exceptions are not retried by Restate. We undo previous actions and fail the // workflow. diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/schedulingtasks/PaymentTracker.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/schedulingtasks/PaymentTracker.kt index c1604c8e..a4d8c20f 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/schedulingtasks/PaymentTracker.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/schedulingtasks/PaymentTracker.kt @@ -17,27 +17,29 @@ class PaymentTracker { // Stripe sends us webhook events for invoice payment attempts @Handler - suspend fun onPaymentSuccess(ctx: ObjectContext, event: StripeEvent) { - ctx.set(PAID, true) + suspend fun onPaymentSuccess(event: StripeEvent) { + state().set(PAID, true) } @Handler - suspend fun onPaymentFailure(ctx: ObjectContext, event: StripeEvent) { + suspend fun onPaymentFailure(event: StripeEvent) { + val state = state() + // Already paid, no need to send reminders - if (ctx.get(PAID) == true) { + if (state.get(PAID) == true) { return } - val remindersCount = ctx.get(REMINDER_COUNT) ?: 0 + val remindersCount = state.get(REMINDER_COUNT) ?: 0 if (remindersCount < 3) { - ctx.set(REMINDER_COUNT, remindersCount + 1) - ctx.runBlock { sendReminderEmail(event) } + state.set(REMINDER_COUNT, remindersCount + 1) + runBlock { sendReminderEmail(event) } // Schedule next reminder via a delayed self call - PaymentTrackerClient.fromContext(ctx, ctx.key()).send().onPaymentFailure(event, 1.days) + toVirtualObject(objectKey()).request { onPaymentFailure(event) }.send(1.days) } else { // After three reminders, escalate to support team - ctx.runBlock { escalateToHuman(event) } + runBlock { escalateToHuman(event) } } } } diff --git a/kotlin/templates/kotlin-gradle-spring-boot/build.gradle.kts b/kotlin/templates/kotlin-gradle-spring-boot/build.gradle.kts index 054b6626..8ead032a 100644 --- a/kotlin/templates/kotlin-gradle-spring-boot/build.gradle.kts +++ b/kotlin/templates/kotlin-gradle-spring-boot/build.gradle.kts @@ -1,8 +1,7 @@ plugins { - kotlin("jvm") version "2.2.10" - kotlin("plugin.spring") version "2.2.10" - kotlin("plugin.serialization") version "2.2.10" - id("com.google.devtools.ksp") version "2.2.10-2.0.2" + kotlin("jvm") version "2.4.0" + kotlin("plugin.spring") version "2.4.0" + kotlin("plugin.serialization") version "2.4.0" id("org.springframework.boot") version "3.5.6" id("io.spring.dependency-management") version "1.1.7" @@ -13,7 +12,7 @@ version = "0.0.1-SNAPSHOT" java { toolchain { - languageVersion = JavaLanguageVersion.of(17) + languageVersion = JavaLanguageVersion.of(25) } } @@ -21,13 +20,10 @@ repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - // Annotation processor - ksp("dev.restate:sdk-api-kotlin-gen:$restateVersion") - - // Restate SDK + // Restate SDK (the Spring Boot Kotlin starter also applies the all-open plugin for Restate annotations) implementation("dev.restate:sdk-spring-boot-kotlin-starter:$restateVersion") // Testing @@ -46,4 +42,11 @@ kotlin { tasks.withType { useJUnitPlatform() + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") +} + +tasks.named("bootRun") { + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + jvmArgs("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } diff --git a/kotlin/templates/kotlin-gradle-spring-boot/src/main/kotlin/com/example/restatestarter/Greeter.kt b/kotlin/templates/kotlin-gradle-spring-boot/src/main/kotlin/com/example/restatestarter/Greeter.kt index a79c40d0..4e6a4330 100644 --- a/kotlin/templates/kotlin-gradle-spring-boot/src/main/kotlin/com/example/restatestarter/Greeter.kt +++ b/kotlin/templates/kotlin-gradle-spring-boot/src/main/kotlin/com/example/restatestarter/Greeter.kt @@ -2,14 +2,16 @@ package com.example.restatestarter import dev.restate.sdk.kotlin.* import dev.restate.sdk.annotation.Handler -import dev.restate.sdk.springboot.RestateService +import dev.restate.sdk.annotation.Service +import dev.restate.sdk.springboot.RestateComponent import org.springframework.beans.factory.annotation.Value import sendNotification import sendReminder import kotlin.time.Duration.Companion.seconds import kotlinx.serialization.Serializable -@RestateService +@RestateComponent +@Service class Greeter { @Value("\${greetingPrefix}") @@ -21,12 +23,12 @@ class Greeter { data class GreetingResponse(val message: String) @Handler - suspend fun greet(ctx: Context, req: Greeting): GreetingResponse { + suspend fun greet(req: Greeting): GreetingResponse { // Durably execute a set of steps; resilient against failures - val greetingId = ctx.random().nextUUID().toString() - ctx.runBlock("Notification") { sendNotification(greetingId, req.name) } - ctx.sleep(1.seconds) - ctx.runBlock("Reminder") { sendReminder(greetingId, req.name) } + val greetingId = random().nextUUID().toString() + runBlock("Notification") { sendNotification(greetingId, req.name) } + sleep(1.seconds) + runBlock("Reminder") { sendReminder(greetingId, req.name) } // Respond to caller return GreetingResponse("You said $greetingPrefix to ${req.name}!") diff --git a/kotlin/templates/kotlin-gradle-spring-boot/src/test/kotlin/com/example/restatestarter/GreeterTest.kt b/kotlin/templates/kotlin-gradle-spring-boot/src/test/kotlin/com/example/restatestarter/GreeterTest.kt index ba493c71..cd72f362 100644 --- a/kotlin/templates/kotlin-gradle-spring-boot/src/test/kotlin/com/example/restatestarter/GreeterTest.kt +++ b/kotlin/templates/kotlin-gradle-spring-boot/src/test/kotlin/com/example/restatestarter/GreeterTest.kt @@ -10,9 +10,11 @@ package com.example.restatestarter import com.example.restatestarter.Greeter.Greeting import dev.restate.client.Client +import dev.restate.client.kotlin.service import dev.restate.sdk.testing.BindService -import dev.restate.sdk.testing.RestateClient import dev.restate.sdk.testing.RestateTest +import dev.restate.sdk.testing.RestateURL +import dev.restate.serde.kotlinx.KotlinSerializationSerdeFactory import kotlinx.coroutines.test.runTest import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test @@ -29,8 +31,10 @@ class GreeterTest { @Test @Timeout(value = 10) - fun greet(@RestateClient ingressClient: Client) = runTest { - val client = GreeterClient.fromClient(ingressClient) + fun greet(@RestateURL url: String) = runTest { + // Kotlin services (de)serialize with kotlinx.serialization, so build the client + // with the KotlinSerializationSerdeFactory. + val client = Client.connect(url, KotlinSerializationSerdeFactory()).service() assertThat(client.greet(Greeting("Francesco")).message).isEqualTo("You said ciao to Francesco!") } diff --git a/kotlin/templates/kotlin-gradle/build.gradle.kts b/kotlin/templates/kotlin-gradle/build.gradle.kts index c90f6503..a81c269e 100644 --- a/kotlin/templates/kotlin-gradle/build.gradle.kts +++ b/kotlin/templates/kotlin-gradle/build.gradle.kts @@ -1,20 +1,19 @@ plugins { application - kotlin("jvm") version "2.2.10" - kotlin("plugin.serialization") version "2.2.10" - id("com.google.devtools.ksp") version "2.2.10-2.0.2" + kotlin("jvm") version "2.4.0" + kotlin("plugin.serialization") version "2.4.0" + // Restate proxy clients need non-final classes; the all-open plugin opens + // classes annotated with the Restate annotations (see allOpen block below). + kotlin("plugin.allopen") version "2.4.0" } repositories { mavenCentral() } -val restateVersion = "2.7.0" +val restateVersion = "2.9.0" dependencies { - // Annotation processor - ksp("dev.restate:sdk-api-kotlin-gen:$restateVersion") - // Restate SDK implementation("dev.restate:sdk-kotlin-http:$restateVersion") @@ -23,10 +22,18 @@ dependencies { } kotlin { - jvmToolchain(21) + jvmToolchain(25) +} + +allOpen { + annotation("dev.restate.sdk.annotation.Service") + annotation("dev.restate.sdk.annotation.VirtualObject") + annotation("dev.restate.sdk.annotation.Workflow") } // Configure main class application { mainClass.set("my.example.GreeterKt") + // Java 25 warnings: --enable-native-access for the Restate SDK state machine, --sun-misc-unsafe-memory-access for netty. + applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED", "--sun-misc-unsafe-memory-access=allow") } diff --git a/kotlin/templates/kotlin-gradle/src/main/kotlin/my/example/Greeter.kt b/kotlin/templates/kotlin-gradle/src/main/kotlin/my/example/Greeter.kt index 654f05b3..f3fd5357 100644 --- a/kotlin/templates/kotlin-gradle/src/main/kotlin/my/example/Greeter.kt +++ b/kotlin/templates/kotlin-gradle/src/main/kotlin/my/example/Greeter.kt @@ -17,12 +17,12 @@ class Greeter { data class GreetingResponse(val message: String) @Handler - suspend fun greet(ctx: Context, req: Greeting): GreetingResponse { + suspend fun greet(req: Greeting): GreetingResponse { // Durably execute a set of steps; resilient against failures - val greetingId = ctx.random().nextUUID().toString() - ctx.runBlock("Notification") { sendNotification(greetingId, req.name) } - ctx.sleep(1.seconds) - ctx.runBlock("Reminder") { sendReminder(greetingId, req.name) } + val greetingId = random().nextUUID().toString() + runBlock("Notification") { sendNotification(greetingId, req.name) } + sleep(1.seconds) + runBlock("Reminder") { sendReminder(greetingId, req.name) } // Respond to caller return GreetingResponse("You said hi to ${req.name}!") From e5f441631506fd60127715437947d4ea8ea7b0be Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Wed, 8 Jul 2026 10:25:44 +0200 Subject: [PATCH 2/3] Bump gradle and maven wrappers --- java/basics/gradle/wrapper/gradle-wrapper.jar | Bin 43705 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- java/basics/gradlew | 13 +- java/basics/gradlew.bat | 36 +- .../app/gradle/wrapper/gradle-wrapper.jar | Bin 43764 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../food-ordering/app/gradlew | 11 +- .../food-ordering/app/gradlew.bat | 36 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 43764 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../subway-fare-calculator/gradlew | 11 +- .../subway-fare-calculator/gradlew.bat | 36 +- .../.mvn/wrapper/maven-wrapper.properties | 20 +- .../workflow-interpreter/mvnw | 50 ++- .../workflow-interpreter/mvnw.cmd | 56 ++- .../lambda/gradle/wrapper/gradle-wrapper.jar | Bin 63375 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../java-gradle-lambda-cdk/lambda/gradlew | 32 +- .../java-gradle-lambda-cdk/lambda/gradlew.bat | 174 ++++---- .../gradle/wrapper/gradle-wrapper.jar | Bin 43453 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- java/integrations/java-spring/gradlew | 19 +- java/integrations/java-spring/gradlew.bat | 38 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 43705 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- java/patterns-use-cases/gradlew | 13 +- java/patterns-use-cases/gradlew.bat | 36 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 43764 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- java/templates/java-gradle/gradlew | 11 +- java/templates/java-gradle/gradlew.bat | 36 +- .../.mvn/wrapper/MavenWrapperDownloader.java | 9 +- .../.mvn/wrapper/maven-wrapper.properties | 22 +- java/templates/java-maven-quarkus/mvnw | 30 +- java/templates/java-maven-quarkus/mvnw.cmd | 412 +++++++++--------- .../.mvn/wrapper/maven-wrapper.properties | 20 +- java/templates/java-maven-spring-boot/mvnw | 50 ++- .../templates/java-maven-spring-boot/mvnw.cmd | 56 ++- .../.mvn/wrapper/maven-wrapper.properties | 20 +- java/templates/java-maven/mvnw | 50 ++- java/templates/java-maven/mvnw.cmd | 56 ++- .../gradle/wrapper/gradle-wrapper.jar | Bin 43705 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../tour-of-orchestration-java/gradlew | 13 +- .../tour-of-orchestration-java/gradlew.bat | 36 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 43705 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- java/tutorials/tour-of-workflows-java/gradlew | 13 +- .../tour-of-workflows-java/gradlew.bat | 36 +- .../basics/gradle/wrapper/gradle-wrapper.jar | Bin 43705 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- kotlin/basics/gradlew | 13 +- kotlin/basics/gradlew.bat | 36 +- .../app/gradle/wrapper/gradle-wrapper.jar | Bin 43705 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../food-ordering/app/gradlew | 13 +- .../food-ordering/app/gradlew.bat | 36 +- .../lambda/gradle/wrapper/gradle-wrapper.jar | Bin 63375 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../kotlin-gradle-lambda-cdk/lambda/gradlew | 32 +- .../lambda/gradlew.bat | 58 +-- .../gradle/wrapper/gradle-wrapper.jar | Bin 43705 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- kotlin/patterns-use-cases/gradlew | 13 +- kotlin/patterns-use-cases/gradlew.bat | 36 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 43705 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../kotlin-gradle-spring-boot/gradlew | 13 +- .../kotlin-gradle-spring-boot/gradlew.bat | 36 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 43705 -> 48462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- kotlin/templates/kotlin-gradle/gradlew | 13 +- kotlin/templates/kotlin-gradle/gradlew.bat | 36 +- 73 files changed, 919 insertions(+), 927 deletions(-) diff --git a/java/basics/gradle/wrapper/gradle-wrapper.jar b/java/basics/gradle/wrapper/gradle-wrapper.jar index 9bbc975c742b298b441bfb90dbc124400a3751b9..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40165 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/java/end-to-end-applications/food-ordering/app/gradle/wrapper/gradle-wrapper.jar b/java/end-to-end-applications/food-ordering/app/gradle/wrapper/gradle-wrapper.jar index 1b33c55baabb587c669f562ae36f953de2481846..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40183 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 delta 35506 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH= -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/java/end-to-end-applications/subway-fare-calculator/gradle/wrapper/gradle-wrapper.jar b/java/end-to-end-applications/subway-fare-calculator/gradle/wrapper/gradle-wrapper.jar index 1b33c55baabb587c669f562ae36f953de2481846..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40183 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 delta 35506 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH= -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/java/end-to-end-applications/workflow-interpreter/.mvn/wrapper/maven-wrapper.properties b/java/end-to-end-applications/workflow-interpreter/.mvn/wrapper/maven-wrapper.properties index d58dfb70..216df058 100644 --- a/java/end-to-end-applications/workflow-interpreter/.mvn/wrapper/maven-wrapper.properties +++ b/java/end-to-end-applications/workflow-interpreter/.mvn/wrapper/maven-wrapper.properties @@ -1,19 +1,3 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 +wrapperVersion=3.3.4 distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip diff --git a/java/end-to-end-applications/workflow-interpreter/mvnw b/java/end-to-end-applications/workflow-interpreter/mvnw index 19529ddf..bd8896bf 100755 --- a/java/end-to-end-applications/workflow-interpreter/mvnw +++ b/java/end-to-end-applications/workflow-interpreter/mvnw @@ -19,7 +19,7 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.2 +# Apache Maven Wrapper startup batch script, version 3.3.4 # # Optional ENV vars # ----------------- @@ -105,14 +105,17 @@ trim() { printf "%s" "${1}" | tr -d '[:space:]' } +scriptDir="$(dirname "$0")" +scriptName="$(basename "$0")" + # parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties while IFS="=" read -r key value; do case "${key-}" in distributionUrl) distributionUrl=$(trim "${value-}") ;; distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" +done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" case "${distributionUrl##*/}" in maven-mvnd-*bin.*) @@ -130,7 +133,7 @@ maven-mvnd-*bin.*) distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" ;; maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; esac # apply MVNW_REPOURL and calculate MAVEN_HOME @@ -227,7 +230,7 @@ if [ -n "${distributionSha256Sum-}" ]; then echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 exit 1 elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then distributionSha256Result=true fi elif command -v shasum >/dev/null; then @@ -252,8 +255,41 @@ if command -v unzip >/dev/null; then else tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +actualDistributionDir="" + +# First try the expected directory name (for regular distributions) +if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then + if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then + actualDistributionDir="$distributionUrlNameMain" + fi +fi + +# If not found, search for any directory with the Maven executable (for snapshots) +if [ -z "$actualDistributionDir" ]; then + # enable globbing to iterate over items + set +f + for dir in "$TMP_DOWNLOAD_DIR"/*; do + if [ -d "$dir" ]; then + if [ -f "$dir/bin/$MVN_CMD" ]; then + actualDistributionDir="$(basename "$dir")" + break + fi + fi + done + set -f +fi + +if [ -z "$actualDistributionDir" ]; then + verbose "Contents of $TMP_DOWNLOAD_DIR:" + verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" + die "Could not find Maven distribution directory in extracted archive" +fi + +verbose "Found extracted Maven distribution directory: $actualDistributionDir" +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" clean || : exec_maven "$@" diff --git a/java/end-to-end-applications/workflow-interpreter/mvnw.cmd b/java/end-to-end-applications/workflow-interpreter/mvnw.cmd index 249bdf38..92450f93 100644 --- a/java/end-to-end-applications/workflow-interpreter/mvnw.cmd +++ b/java/end-to-end-applications/workflow-interpreter/mvnw.cmd @@ -19,7 +19,7 @@ @REM ---------------------------------------------------------------------------- @REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.2 +@REM Apache Maven Wrapper startup batch script, version 3.3.4 @REM @REM Optional ENV vars @REM MVNW_REPOURL - repo url base for downloading maven distribution @@ -40,7 +40,7 @@ @SET __MVNW_ARG0_NAME__= @SET MVNW_USERNAME= @SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) @echo Cannot start maven from wrapper >&2 && exit /b 1 @GOTO :EOF : end batch / begin powershell #> @@ -73,16 +73,30 @@ switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { # apply MVNW_REPOURL and calculate MAVEN_HOME # maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" + $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" } $distributionUrlName = $distributionUrl -replace '^.*/','' $distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" + +$MAVEN_M2_PATH = "$HOME/.m2" if ($env:MAVEN_USER_HOME) { - $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" + $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" +} + +if (-not (Test-Path -Path $MAVEN_M2_PATH)) { + New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null +} + +$MAVEN_WRAPPER_DISTS = $null +if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { + $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" +} else { + $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" } -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' + +$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' $MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { @@ -134,7 +148,33 @@ if ($distributionSha256Sum) { # unzip and move Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +$actualDistributionDir = "" + +# First try the expected directory name (for regular distributions) +$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" +$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" +if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { + $actualDistributionDir = $distributionUrlNameMain +} + +# If not found, search for any directory with the Maven executable (for snapshots) +if (!$actualDistributionDir) { + Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { + $testPath = Join-Path $_.FullName "bin/$MVN_CMD" + if (Test-Path -Path $testPath -PathType Leaf) { + $actualDistributionDir = $_.Name + } + } +} + +if (!$actualDistributionDir) { + Write-Error "Could not find Maven distribution directory in extracted archive" +} + +Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null try { Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null } catch { diff --git a/java/integrations/java-gradle-lambda-cdk/lambda/gradle/wrapper/gradle-wrapper.jar b/java/integrations/java-gradle-lambda-cdk/lambda/gradle/wrapper/gradle-wrapper.jar index 033e24c4cdf41af1ab109bc7f253b2b887023340..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch literal 48462 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 R2np~f1o-$>Q}y+){|A@R9n$~+ literal 63375 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≫L+crb^Bz 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 /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -111,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -144,7 +146,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +154,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -169,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -201,16 +202,15 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/java/integrations/java-gradle-lambda-cdk/lambda/gradlew.bat b/java/integrations/java-gradle-lambda-cdk/lambda/gradlew.bat index 93e3f59f..8508ef68 100644 --- a/java/integrations/java-gradle-lambda-cdk/lambda/gradlew.bat +++ b/java/integrations/java-gradle-lambda-cdk/lambda/gradlew.bat @@ -1,92 +1,82 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem gradlew startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:execute +@rem Setup the command line + + + +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel + +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/java/integrations/java-spring/gradle/wrapper/gradle-wrapper.jar b/java/integrations/java-spring/gradle/wrapper/gradle-wrapper.jar index e6441136f3d4ba8a0da8d277868979cfbc8ad796..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40219 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�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 e(*aw}>J`&Ep$5$o2mVP)i30-M3~u@DBh0 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 r1`0QNfccvgf>;njKhA^zKy!_#L6FRI>Tmx6$J /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -112,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -170,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -203,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/java/integrations/java-spring/gradlew.bat b/java/integrations/java-spring/gradlew.bat index 7101f8e4..8508ef68 100644 --- a/java/integrations/java-spring/gradlew.bat +++ b/java/integrations/java-spring/gradlew.bat @@ -13,16 +13,18 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -49,7 +51,7 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -63,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% -:mainEnd -if "%OS%"=="Windows_NT" endlocal +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/java/patterns-use-cases/gradle/wrapper/gradle-wrapper.jar b/java/patterns-use-cases/gradle/wrapper/gradle-wrapper.jar index 9bbc975c742b298b441bfb90dbc124400a3751b9..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40165 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/java/templates/java-gradle/gradle/wrapper/gradle-wrapper.jar b/java/templates/java-gradle/gradle/wrapper/gradle-wrapper.jar index 1b33c55baabb587c669f562ae36f953de2481846..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40183 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 delta 35506 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH= -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/java/templates/java-maven-quarkus/.mvn/wrapper/MavenWrapperDownloader.java b/java/templates/java-maven-quarkus/.mvn/wrapper/MavenWrapperDownloader.java index fe7d037d..7e9c1e3c 100644 --- a/java/templates/java-maven-quarkus/.mvn/wrapper/MavenWrapperDownloader.java +++ b/java/templates/java-maven-quarkus/.mvn/wrapper/MavenWrapperDownloader.java @@ -30,7 +30,7 @@ import java.util.concurrent.ThreadLocalRandom; public final class MavenWrapperDownloader { - private static final String WRAPPER_VERSION = "3.3.2"; + private static final String WRAPPER_VERSION = "3.3.4"; private static final boolean VERBOSE = Boolean.parseBoolean(System.getenv("MVNW_VERBOSE")); @@ -45,8 +45,11 @@ public static void main(String[] args) { try { log(" - Downloader started"); final URL wrapperUrl = URI.create(args[0]).toURL(); - final String jarPath = args[1].replace("..", ""); // Sanitize path - final Path wrapperJarPath = Paths.get(jarPath).toAbsolutePath().normalize(); + final Path baseDir = Paths.get(".").toAbsolutePath().normalize(); + final Path wrapperJarPath = baseDir.resolve(args[1]).normalize(); + if (!wrapperJarPath.startsWith(baseDir)) { + throw new IOException("Invalid path: outside of allowed directory"); + } downloadFileFromURL(wrapperUrl, wrapperJarPath); log("Done"); } catch (IOException e) { diff --git a/java/templates/java-maven-quarkus/.mvn/wrapper/maven-wrapper.properties b/java/templates/java-maven-quarkus/.mvn/wrapper/maven-wrapper.properties index 72df6c61..599ac34a 100644 --- a/java/templates/java-maven-quarkus/.mvn/wrapper/maven-wrapper.properties +++ b/java/templates/java-maven-quarkus/.mvn/wrapper/maven-wrapper.properties @@ -1,20 +1,4 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 +wrapperVersion=3.3.4 distributionType=source -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.8/apache-maven-3.9.8-bin.zip -wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar \ No newline at end of file +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.4/maven-wrapper-3.3.4.jar diff --git a/java/templates/java-maven-quarkus/mvnw b/java/templates/java-maven-quarkus/mvnw index 5e9618ca..1ddd97b9 100755 --- a/java/templates/java-maven-quarkus/mvnw +++ b/java/templates/java-maven-quarkus/mvnw @@ -19,7 +19,7 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.2 +# Apache Maven Wrapper startup batch script, version 3.3.4 # # Required ENV vars: # ------------------ @@ -201,6 +201,14 @@ MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} export MAVEN_PROJECTBASEDIR log "$MAVEN_PROJECTBASEDIR" +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + ########################################################################################## # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central # This allows using the maven wrapper in projects that prohibit checking in binary data. @@ -212,15 +220,13 @@ else log "Couldn't find $wrapperJarPath, downloading it ..." if [ -n "$MVNW_REPOURL" ]; then - wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.3.4/maven-wrapper-3.3.4.jar" else - wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.4/maven-wrapper-3.3.4.jar" fi while IFS="=" read -r key value; do - # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) - safeValue=$(echo "$value" | tr -d '\r') case "$key" in wrapperUrl) - wrapperUrl="$safeValue" + wrapperUrl=$(trim "${value-}") break ;; esac @@ -235,17 +241,17 @@ else log "Found wget ... using wget" [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + wget ${QUIET:+"$QUIET"} "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" else - wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + wget ${QUIET:+"$QUIET"} --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" fi elif command -v curl >/dev/null; then log "Found curl ... using curl" [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + curl ${QUIET:+"$QUIET"} -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" else - curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + curl ${QUIET:+"$QUIET"} --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" fi else log "Falling back to using Java to download" @@ -276,7 +282,7 @@ fi wrapperSha256Sum="" while IFS="=" read -r key value; do case "$key" in wrapperSha256Sum) - wrapperSha256Sum=$value + wrapperSha256Sum=$(trim "${value-}") break ;; esac @@ -284,7 +290,7 @@ done <"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" if [ -n "$wrapperSha256Sum" ]; then wrapperSha256Result=false if command -v sha256sum >/dev/null; then - if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c >/dev/null 2>&1; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c - >/dev/null 2>&1; then wrapperSha256Result=true fi elif command -v shasum >/dev/null; then diff --git a/java/templates/java-maven-quarkus/mvnw.cmd b/java/templates/java-maven-quarkus/mvnw.cmd index 4136715f..c453424c 100644 --- a/java/templates/java-maven-quarkus/mvnw.cmd +++ b/java/templates/java-maven-quarkus/mvnw.cmd @@ -1,206 +1,206 @@ -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.2 -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir -@REM -@REM Optional ENV vars -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files -@REM ---------------------------------------------------------------------------- - -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM set title of command window -title %0 -@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* -if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. >&2 -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. >&2 -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. >&2 -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. >&2 -goto error - -@REM ==== END VALIDATION ==== - -:init - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" -set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" - -FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( - IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B -) - -@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -@REM This allows using the maven wrapper in projects that prohibit checking in binary data. -if exist %WRAPPER_JAR% ( - if "%MVNW_VERBOSE%" == "true" ( - echo Found %WRAPPER_JAR% - ) -) else ( - if not "%MVNW_REPOURL%" == "" ( - SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" - ) - if "%MVNW_VERBOSE%" == "true" ( - echo Couldn't find %WRAPPER_JAR%, downloading it ... - echo Downloading from: %WRAPPER_URL% - ) - - powershell -Command "&{"^ - "$webclient = new-object System.Net.WebClient;"^ - "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ - "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ - "}"^ - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ - "}" - if "%MVNW_VERBOSE%" == "true" ( - echo Finished downloading %WRAPPER_JAR% - ) -) -@REM End of extension - -@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file -SET WRAPPER_SHA_256_SUM="" -FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( - IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B -) -IF NOT %WRAPPER_SHA_256_SUM%=="" ( - powershell -Command "&{"^ - "Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash;"^ - "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ - "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ - " Write-Error 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ - " Write-Error 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ - " Write-Error 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ - " exit 1;"^ - "}"^ - "}" - if ERRORLEVEL 1 goto error -) - -@REM Provide a "standardized" way to retrieve the CLI args that will -@REM work with both Windows and non-Windows executions. -set MAVEN_CMD_LINE_ARGS=%* - -%MAVEN_JAVA_EXE% ^ - %JVM_CONFIG_MAVEN_PROPS% ^ - %MAVEN_OPTS% ^ - %MAVEN_DEBUG_OPTS% ^ - -classpath %WRAPPER_JAR% ^ - "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ - %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" -if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%"=="on" pause - -if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% - -cmd /C exit /B %ERROR_CODE% +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.4 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. >&2 +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. >&2 +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. >&2 +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. >&2 +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.4/maven-wrapper-3.3.4.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.3.4/maven-wrapper-3.3.4.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash;"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Error 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Error 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Error 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/java/templates/java-maven-spring-boot/.mvn/wrapper/maven-wrapper.properties b/java/templates/java-maven-spring-boot/.mvn/wrapper/maven-wrapper.properties index d58dfb70..216df058 100644 --- a/java/templates/java-maven-spring-boot/.mvn/wrapper/maven-wrapper.properties +++ b/java/templates/java-maven-spring-boot/.mvn/wrapper/maven-wrapper.properties @@ -1,19 +1,3 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 +wrapperVersion=3.3.4 distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip diff --git a/java/templates/java-maven-spring-boot/mvnw b/java/templates/java-maven-spring-boot/mvnw index 19529ddf..bd8896bf 100755 --- a/java/templates/java-maven-spring-boot/mvnw +++ b/java/templates/java-maven-spring-boot/mvnw @@ -19,7 +19,7 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.2 +# Apache Maven Wrapper startup batch script, version 3.3.4 # # Optional ENV vars # ----------------- @@ -105,14 +105,17 @@ trim() { printf "%s" "${1}" | tr -d '[:space:]' } +scriptDir="$(dirname "$0")" +scriptName="$(basename "$0")" + # parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties while IFS="=" read -r key value; do case "${key-}" in distributionUrl) distributionUrl=$(trim "${value-}") ;; distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" +done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" case "${distributionUrl##*/}" in maven-mvnd-*bin.*) @@ -130,7 +133,7 @@ maven-mvnd-*bin.*) distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" ;; maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; esac # apply MVNW_REPOURL and calculate MAVEN_HOME @@ -227,7 +230,7 @@ if [ -n "${distributionSha256Sum-}" ]; then echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 exit 1 elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then distributionSha256Result=true fi elif command -v shasum >/dev/null; then @@ -252,8 +255,41 @@ if command -v unzip >/dev/null; then else tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +actualDistributionDir="" + +# First try the expected directory name (for regular distributions) +if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then + if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then + actualDistributionDir="$distributionUrlNameMain" + fi +fi + +# If not found, search for any directory with the Maven executable (for snapshots) +if [ -z "$actualDistributionDir" ]; then + # enable globbing to iterate over items + set +f + for dir in "$TMP_DOWNLOAD_DIR"/*; do + if [ -d "$dir" ]; then + if [ -f "$dir/bin/$MVN_CMD" ]; then + actualDistributionDir="$(basename "$dir")" + break + fi + fi + done + set -f +fi + +if [ -z "$actualDistributionDir" ]; then + verbose "Contents of $TMP_DOWNLOAD_DIR:" + verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" + die "Could not find Maven distribution directory in extracted archive" +fi + +verbose "Found extracted Maven distribution directory: $actualDistributionDir" +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" clean || : exec_maven "$@" diff --git a/java/templates/java-maven-spring-boot/mvnw.cmd b/java/templates/java-maven-spring-boot/mvnw.cmd index 249bdf38..92450f93 100644 --- a/java/templates/java-maven-spring-boot/mvnw.cmd +++ b/java/templates/java-maven-spring-boot/mvnw.cmd @@ -19,7 +19,7 @@ @REM ---------------------------------------------------------------------------- @REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.2 +@REM Apache Maven Wrapper startup batch script, version 3.3.4 @REM @REM Optional ENV vars @REM MVNW_REPOURL - repo url base for downloading maven distribution @@ -40,7 +40,7 @@ @SET __MVNW_ARG0_NAME__= @SET MVNW_USERNAME= @SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) @echo Cannot start maven from wrapper >&2 && exit /b 1 @GOTO :EOF : end batch / begin powershell #> @@ -73,16 +73,30 @@ switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { # apply MVNW_REPOURL and calculate MAVEN_HOME # maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" + $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" } $distributionUrlName = $distributionUrl -replace '^.*/','' $distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" + +$MAVEN_M2_PATH = "$HOME/.m2" if ($env:MAVEN_USER_HOME) { - $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" + $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" +} + +if (-not (Test-Path -Path $MAVEN_M2_PATH)) { + New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null +} + +$MAVEN_WRAPPER_DISTS = $null +if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { + $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" +} else { + $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" } -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' + +$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' $MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { @@ -134,7 +148,33 @@ if ($distributionSha256Sum) { # unzip and move Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +$actualDistributionDir = "" + +# First try the expected directory name (for regular distributions) +$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" +$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" +if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { + $actualDistributionDir = $distributionUrlNameMain +} + +# If not found, search for any directory with the Maven executable (for snapshots) +if (!$actualDistributionDir) { + Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { + $testPath = Join-Path $_.FullName "bin/$MVN_CMD" + if (Test-Path -Path $testPath -PathType Leaf) { + $actualDistributionDir = $_.Name + } + } +} + +if (!$actualDistributionDir) { + Write-Error "Could not find Maven distribution directory in extracted archive" +} + +Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null try { Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null } catch { diff --git a/java/templates/java-maven/.mvn/wrapper/maven-wrapper.properties b/java/templates/java-maven/.mvn/wrapper/maven-wrapper.properties index d58dfb70..216df058 100644 --- a/java/templates/java-maven/.mvn/wrapper/maven-wrapper.properties +++ b/java/templates/java-maven/.mvn/wrapper/maven-wrapper.properties @@ -1,19 +1,3 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 +wrapperVersion=3.3.4 distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip diff --git a/java/templates/java-maven/mvnw b/java/templates/java-maven/mvnw index 19529ddf..bd8896bf 100755 --- a/java/templates/java-maven/mvnw +++ b/java/templates/java-maven/mvnw @@ -19,7 +19,7 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.2 +# Apache Maven Wrapper startup batch script, version 3.3.4 # # Optional ENV vars # ----------------- @@ -105,14 +105,17 @@ trim() { printf "%s" "${1}" | tr -d '[:space:]' } +scriptDir="$(dirname "$0")" +scriptName="$(basename "$0")" + # parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties while IFS="=" read -r key value; do case "${key-}" in distributionUrl) distributionUrl=$(trim "${value-}") ;; distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" +done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" case "${distributionUrl##*/}" in maven-mvnd-*bin.*) @@ -130,7 +133,7 @@ maven-mvnd-*bin.*) distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" ;; maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; esac # apply MVNW_REPOURL and calculate MAVEN_HOME @@ -227,7 +230,7 @@ if [ -n "${distributionSha256Sum-}" ]; then echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 exit 1 elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then distributionSha256Result=true fi elif command -v shasum >/dev/null; then @@ -252,8 +255,41 @@ if command -v unzip >/dev/null; then else tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +actualDistributionDir="" + +# First try the expected directory name (for regular distributions) +if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then + if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then + actualDistributionDir="$distributionUrlNameMain" + fi +fi + +# If not found, search for any directory with the Maven executable (for snapshots) +if [ -z "$actualDistributionDir" ]; then + # enable globbing to iterate over items + set +f + for dir in "$TMP_DOWNLOAD_DIR"/*; do + if [ -d "$dir" ]; then + if [ -f "$dir/bin/$MVN_CMD" ]; then + actualDistributionDir="$(basename "$dir")" + break + fi + fi + done + set -f +fi + +if [ -z "$actualDistributionDir" ]; then + verbose "Contents of $TMP_DOWNLOAD_DIR:" + verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" + die "Could not find Maven distribution directory in extracted archive" +fi + +verbose "Found extracted Maven distribution directory: $actualDistributionDir" +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" clean || : exec_maven "$@" diff --git a/java/templates/java-maven/mvnw.cmd b/java/templates/java-maven/mvnw.cmd index b150b91e..5761d948 100644 --- a/java/templates/java-maven/mvnw.cmd +++ b/java/templates/java-maven/mvnw.cmd @@ -19,7 +19,7 @@ @REM ---------------------------------------------------------------------------- @REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.2 +@REM Apache Maven Wrapper startup batch script, version 3.3.4 @REM @REM Optional ENV vars @REM MVNW_REPOURL - repo url base for downloading maven distribution @@ -40,7 +40,7 @@ @SET __MVNW_ARG0_NAME__= @SET MVNW_USERNAME= @SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) @echo Cannot start maven from wrapper >&2 && exit /b 1 @GOTO :EOF : end batch / begin powershell #> @@ -73,16 +73,30 @@ switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { # apply MVNW_REPOURL and calculate MAVEN_HOME # maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" + $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" } $distributionUrlName = $distributionUrl -replace '^.*/','' $distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" + +$MAVEN_M2_PATH = "$HOME/.m2" if ($env:MAVEN_USER_HOME) { - $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" + $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" +} + +if (-not (Test-Path -Path $MAVEN_M2_PATH)) { + New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null +} + +$MAVEN_WRAPPER_DISTS = $null +if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { + $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" +} else { + $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" } -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' + +$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' $MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { @@ -134,7 +148,33 @@ if ($distributionSha256Sum) { # unzip and move Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +$actualDistributionDir = "" + +# First try the expected directory name (for regular distributions) +$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" +$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" +if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { + $actualDistributionDir = $distributionUrlNameMain +} + +# If not found, search for any directory with the Maven executable (for snapshots) +if (!$actualDistributionDir) { + Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { + $testPath = Join-Path $_.FullName "bin/$MVN_CMD" + if (Test-Path -Path $testPath -PathType Leaf) { + $actualDistributionDir = $_.Name + } + } +} + +if (!$actualDistributionDir) { + Write-Error "Could not find Maven distribution directory in extracted archive" +} + +Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null try { Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null } catch { diff --git a/java/tutorials/tour-of-orchestration-java/gradle/wrapper/gradle-wrapper.jar b/java/tutorials/tour-of-orchestration-java/gradle/wrapper/gradle-wrapper.jar index 9bbc975c742b298b441bfb90dbc124400a3751b9..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40165 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/java/tutorials/tour-of-workflows-java/gradle/wrapper/gradle-wrapper.jar b/java/tutorials/tour-of-workflows-java/gradle/wrapper/gradle-wrapper.jar index 9bbc975c742b298b441bfb90dbc124400a3751b9..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40165 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/kotlin/basics/gradle/wrapper/gradle-wrapper.jar b/kotlin/basics/gradle/wrapper/gradle-wrapper.jar index 9bbc975c742b298b441bfb90dbc124400a3751b9..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40165 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/kotlin/end-to-end-applications/food-ordering/app/gradle/wrapper/gradle-wrapper.jar b/kotlin/end-to-end-applications/food-ordering/app/gradle/wrapper/gradle-wrapper.jar index 9bbc975c742b298b441bfb90dbc124400a3751b9..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40165 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/gradle/wrapper/gradle-wrapper.jar b/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/gradle/wrapper/gradle-wrapper.jar index 033e24c4cdf41af1ab109bc7f253b2b887023340..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch literal 48462 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 R2np~f1o-$>Q}y+){|A@R9n$~+ literal 63375 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≫L+crb^Bz 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 /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -111,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -144,7 +146,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +154,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -169,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -201,16 +202,15 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/gradlew.bat b/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/gradlew.bat index 6689b85b..8508ef68 100644 --- a/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/gradlew.bat +++ b/kotlin/integrations/kotlin-gradle-lambda-cdk/lambda/gradlew.bat @@ -13,16 +13,18 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -43,13 +45,13 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -57,36 +59,24 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% -:mainEnd -if "%OS%"=="Windows_NT" endlocal +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/kotlin/patterns-use-cases/gradle/wrapper/gradle-wrapper.jar b/kotlin/patterns-use-cases/gradle/wrapper/gradle-wrapper.jar index 9bbc975c742b298b441bfb90dbc124400a3751b9..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40165 zcmX6^Q(&BJ(@tY+W81cE+h}Z?+i1haYHZuKZ98eu*iQex-+!`4&(Yp9b78J&Uk0Cf z1Fy3~1~N`h!-ue-LhkvIT*qUt%{`^-m#IOfhyiOi+iXcj;zOSvE1OqMjx(XVFKI2> z)D=9R7hu6)6%kziXsb31ae6@9_Jc#W~C4rQ^e*O_UuA#;OMn>)agWROM{PQ4R# z=?(abWmk<-unb-9X;^Eo97RL=_d|4|*I-KzbkE=&ZgY3c=em}Zu(c79V@rT5KC0Os zF8-@wT=rghP=wGw;Xc3l)lo>+!Ar@~Ei>f@l&OMqDEm6q-M<}{saK1B;{W%L9m1T; zkR}PCY68{ul>w@#U&s!+8%$|fQG1xH2o5&oTTN;Q2)ANtLptF7FRp8X_9*sVncIx> zIIqNSF#ek4=p3v<@BANto`^<-6m+ARsb8O#J-oY9UvKZ1Fh6t|Sh{vM{fq(&9b5yX z*FapgXZm`gi`i1@dRu9+hW0$5yf%7o;fy5*ILS$B&|o<4I^>>1OY z9Y~`Taf1V0Nt*XtzVac|?=j(4orYH>xWCKltB52P&Kz@j1UiiwOD ziEZEwYVeTastxCAv9Z;uQGCk-F{(*RNIjikZ=$|ggt?m?-CKg3h-e1RtVi*8njpjl zI$zW{au5PyKxvU(EC)smn}jxZj-ZAM9B`b6>7XG>VsF@4Q*zhk0H@h6qwNSG%}Gxz zXk?B&B=forad6#0x=^0_HYzH!EoBI4%Tb&6-cU4kskqpi&ggZ&(Wq?9j4YA>ekqF( z6u!~Se=L?ltqSk#HKTB;qX@OA@e?0foXSs#`}?n91ClvIJ%IWP{pB~SnXW_kA>h2E zo+M}|LwU1jDzh>ORwh9R{u5dCPR8m^hvd7p=0l<)6kFnDfs8QpX;$ebat9jeyEj?y z?HyRiZo)cG-;I!z(BXto&1bK%@DPu<#{sG&$O~sWiF^14z&>frqV^KycTOA|2!w~D zcQ2Xu2z7C%ji4<;`r4ywRvGyO5FcRZN^zx@KE#Qn|yo;_Jv6+zFP%LG6`-3QdU6*i=_bP#q?^Uv!<%s(2+kG z=auveTG%=`(fR=8MjBVS6%93&p=DgK^jTn*S9wXxw(}u!2=#E>i6dQbDMp=0LB6~~z*J-0U}k1wOjXpsz$Xsx$9bsE zD`vRedV~zYr71n4ar7%N_i?mgya`~sgtzeR*Q8mxuw_KIZNx=D;iSODdQ;=Gq(4ZQ zV;KU*w35`~YUxUUBjAR)2WBr+k3Gs&%H4)U;Y-ouZVg;wIGTb?3SdM+`s4Rn0vy4(D*Xnc ztijmQhqGck+oU0yrCMW5II!yH?<&Q*4>Xm(XMyAjJ7>lUamkrwdty1NdEYXmz#%Nm z7sIlLSR00&aNeU{a7&-nu#+kAL!i-fJL};Lu11c_MS?F*l@%^AVp+8O^?62?nJ+VZ z^uotVHXm#EebY2fwWhH=BV0oHhp*FtZWHsgd@_Mi40ff&A_vU>l^jI6>5yL145mHM zK^>s|uhNPbs-n9z<@GB~5Fis7XeCHdo1y&k$;-^D*z?&hx9pk5Cwk01x#yImzrq8r zQ0myV2yB*}W?l-H8arK%6jPb08Z$54a^0?cW_X`3GFxYj!Fb|wafuupwrM|#wc2`^ zE-Ls+|Jd1TEfZFnq;GK(=r?9nkZb`lOZIZ|hWVa3x|tq4YHfV}Y~gVWCTQYwP9Gpm z!}`OrdXUZ{40#|BU#w=7$o|ki*)SKWw*xVT+O2VlafhDI8--$1-Tj-SbX-d?+20Xe z$89<~+APz9O*UNY+A}6AOUBMh67<~}qBoZxPF#;gxK`$jthxd{MJ(3s02_tX~p^B?*yRgD|Y zp0fdx9*a}{I);6I&{M_@u9O#yZ>6j8sZjA5SkWFqBHN7V=@?I;fXquy!9mHH{g-L& z=1d9UJ`sezCQI-U{$i8inPpj;kZmY7VjmY}`x9kuJ0!2@ zZt5F%8{We(cUy#J;!^Q`L3#%i?7-AxfO4amNFSC2sfT+3cWOZ$abvgZh-|cPzEM43=4gwXA*XAe1uJ%UFcI+Iejmdixsfk5_8h`3I(gE z=a&d0_@8zV|9-b?=NCyf&JbwMT#t?2tr|8@Ut#)7QM%nFtNzXfL4JOv?(~biTK4gM zLT)QNQ@vySp+`*9HX_eO&aV$Y-4*RnPzLRN_J|pEB^ZRz;3WH zqRi}7huVK?=7f7fPp2!{Ew%_<0=5pjR}@<1EH~?Q)S7H zpk+BSr;$<(S+FsKO2DOlGQ>lJZ>LubUVWpQy0W*lB(+xb?JetGr(anyDk$f4C^RHV zFxD4-6z^^QEAn0s{86p>mbGrU)>jf5_{;5B@cOq;?a9aQ!{;y9JsvE~F5lO?Uo9sg zg}(l3MdC>ACdvcc^6(y=nBOKl1016*o{MM`j+`HTyjda=z- zlIW&%FJhP&P+y|-W~0MqAX*Fo^Yz2(!T!v=E;`FUuFAkiTR5%xL0sc z+W6e3Pj5BAn(OtEEgL+oJv)JAj;eg*%@37&!~PZY!1A^7ye`(!wLNJ;Pn$NF=H;?J zA|%bS)XsN~7gchvZ%BAtZg@meorpH!*d)I3 zTwzty@A%v}$Vj<;aKhrBvQX1rsSHJXN5ySpqh;q@ajtV34>YG2a!?X%mot#?q=*XV zN+b?IeRU}@3UISj!Z9!7p`t618W)Ig6uxl%3g<*tQh7D29%811>ry#LbH+5#=xu1s zQMo27gT_zo)b2oc@`^p3S;8Ag^i*eX+DW9gw<6fna*N!ErrgN1?6OVA-nJt)DR_-R zUfO`?yK#X4cq{W9XiR}NN252yQPLIzG&Ox-AWzP3iJtRzXTM50V(AZ@ky1DhgEr;U z898>z_v*jo;z2fp*{~F$fL5fqjjM#po8;i^%E7H{)~V1sP5+U&()wt#Rv8sh!}2ac z1Vhhdnn@AmQXhS~h-CYBew@N6$j~P4k$#N=J&n4}3WG}LWqUgYU14k%+LUyT-uz#{ zDl$qdyzIJoBYuaKDPzo*V8(V>{%v+B4gKgV_!5T#Wo1Bev;rrAf(uDCua--s<|qR_ zkA|&n6{U?g^6Wcn$gG;VU{=_=_bb;XuVQS}Z2f?}3#-{$!LHonJ#N81g4+AZtt3&g z!+zb2t6Wy|6%st$$>d9v`*r0-p}z=_!{2Zr7=XDU(mmpEg?(!RyOq_ zUWkr3OW!=;(JHZU;EAT}cUTed?$V&2kQjbzdBQ5V^)6wr+MmpuJ{NP=+oE)JEz)f6mJeJMieCAir|VrK$$7; zTA6YN8s2Kj2&Dg^RdBHjdo|*>wc0NY83UNrNM4jCcF7)z6sR#-z^H+VcDdY}?Y_s! z2y2Ph*RlRqk53Bcunrjpp7TZcAg`z5Q}^pg@MH5t@|9rb$ie+iVPj3tUi{H8r1s;j zK}s{YCP3o0=}nfwx;h1T9hp_qfTc$FjZ&-1#v1oBiFAZo&#R|aOsdovy5i%Ps4>hh z>|6J$?baVw4H2Uo^j|R<(8l7!0wdBHX8SVs+96Ivh( zmTQ{ZKK1;u{!3V}E=Op)pL+j0&yI2mnlAoo>Q}03JwvOLwJ+ro+Y=A+Wj}W<7DXqV*pymGO7Ofv zbbU6hUw2lk{Y2#z`0YOc7V#bFHG%;H<3j-hQ;~;H`&!A#mCkpm|EPhXAxP3!MS zA!CsoqHYTIM6rM`L%{iouBd<-!;a(QwYuYx^5kj5k8XAp@`CH1A2~CG9SA0zeB0y> zjRYr_`LLDqHG7?v<99V{ybA==0gd07I9*E~X73!V#KyPu6zDs2m*@xWdI%DA2624$ zVI84_QF~LInuSXPOP0}Al$P$v1B$1+WtJXl%-*`}I^e`3hBxKAL^tYKBb=TE;s{j3 zGh5Lk-3@3ZPUXV8I>};auwU^JPauK4gU_z@Fr^t4fSbJF2}6&e@CzV8MfMZKX$mSD6fCv+*cu@Pl`63H9%A zD5zSrUpe&KFG7QchZH~VumZ(?Q@-k}==2Oa@Mz^n;5`x_&M5T2%G! zcXnO5oGoR#ENm{{afO%)L`)ouHUC(|c&?S`$B^|WTFjBcD^XQ*!8*Yi0e{5~d`JBt zg;QRs8a|W;(zeOmqsb(C3ZgCgZ*hE)zxQ|HF_~!%QyR=W6JaM(og)?oZNVPxwGtDq zEFTujP8Qi*yo!zB)tCv5`-E_jR|lfL>TDqLl5f9o@^K;_M*0<=v`V}rwh9EvZup1I zFco4>gI7ygSDPm1X!>SKA&Z+!)7QG~I#;}50&)|y4U*i`*yb5z(G%1dv(L6c-9&McVHv z^%%mTTTcJgnk{LyynGUn+#aZYt^^Rp_yU2;%cD&wif9;!>TeVq6dQzU1cM;uAtZu< zWA6O+*q*KCp3$h}C;z(%{0OG!Iwj2l1Ny;l{eDvt#L-}ScGqhl?x?}MFb8Tt)HN5H)}yMZJR0j=hpe=e9> z4H8sP5T}n}GS2K^S%oHlsgTA=M=wQ(J*6AZeC#+R6(`qC81*TX9RREQ~R z>f+H5<_uyD<%*&#k6taI#3_khkiknlVN6(JWN+7Ka=1FumZhC6ra#)-2+DPPgGfso z1C0vi=jD*9F1}_+lLN&Yzj6oiYIaa*7VkCL+z@{n^}EAJUw_|)KWRKs9DTsT*^#hY zv0^bYB9X>hEp*+N^*UD7HpB1S427(ysmBFj;!Zh}QC*DoHJ zB&!M1D@le~-0i5YbJ|!e#nZoKt9+sxdVsWclWEs^Nx6My(A}T$tigl$BtA$XH^{!S z(9yxj|6;xM6!iu!0mP2?FE3wk^&qgVm9z5i@js}8nXKH6*@%<02&?6~x=#pDdgoG2 zf_i>7y*WX~MQD&($u3c&AUow2++&E}x(&4|&A$7S(UyhZ-HG+{IR{&g-~EVN*o z7ZC5SFO#2?cus1bM?kK^M16z(Uzr0$u~L@*SyggS|I;)VRMJ32CjcudA-6H5!{VJP z&tt4#oT@(B5=86xmHFYyx#9XwnVKXJ_HVFyG11GnkFqEiSX(Dp z;*XK*X@S|P+Re;dup7J_xR*eWN8TPps`RWRrI2otU(lVRYDdKyr{?*CT{4kA;!$(x z(d{z6;96`EniZ`m`pY+ zKegE_^YP(V9dS7Abcj*J=A0dpoekeM*YWxPU89Nt5tj_PTe%b`zsNZ)_*M`Rg*WVuCtps`p zOirH5`-IcGSkO9o>-H@c!;D^R1S#q;WM&Hp1&<>5ANb5v+;)RE@Ba62or}JJ{G=@! zbD$HtD2AYVd~ushkXDms<)&>=18Ox@5vS1FP^sNoZIg4DFj(O}6pel8W);q?zvYX>S~h#Y0>YDA>=T`GOXL_H?8h+uVEFxG-$K2rmi54A;2USVh8m! zh}LHn3u&+guQTV+xwTVTZnhmU)L{3yFh}2{sFGy7&Uq}n%fxNf{=y4642@0($V$=1 zfeY`~%REZUk4Vd$N^&#jT782yDCNWFm{Cp;Z{O~kcR<#FOVd_F_Vd-ppf5OT3I`Ks zA)kBZyAFf4r3XvtxsAbB<>Nh!A*pz9{3MIFMOXl+7`Ix}s8VM{4qDsgXa2+W=V6eA zSD1$Lq43!)f}>?!l)gFmb3g_HupvSI>fB2h)7^l0Iff&b%9-#YN|NdGmu<$sCQda=;m5&26*SZKDL(zPo zCHg@JrDQrFI$-LvP5IVC2sq{H)EiD$+QKdKi3rou3nL~{Z3p5isZ~q((Nb>{ucv?kRiD_OFwV9l z8!l^Q?bbk?E7sZm_8R_(#Wlt$&)jzq*#^PS*_JX1Ev` zatc4d^xxHwyviE@|FtRurMHcdXT33qIfxJF1z( z=z>8onHxCx!CcCn#n;7>z|AwGaMY0mRi%iN#r`PBF!0i!essWA6=O*Jb*Vx;`%1jX z%XrHJQ7rvm&#!#ROI3aY1Di?OqajR+W;6wd#Y?(oqygel*t|5dds)u>Vt0G~`ntcz z{?VCk@zT)yx8Xy!*40iMvZW_aU*A`?Rjl{eSHN?y??zl-#QyL z-Ogc5hYxI7TNHl&!D_xT(9tvmSOp-Wh@GX!9<@*_Ou9|~o_qHBt{rg(m6i~{SR1lU z;!j+)lKfD(rZ;7lAeCrRL;itiz%5Rv#w1?8kdTMeF&4kKV1iS1aU;80eKd93hnq2A$s&>b)n!abPIg-0GVIu1{#VBGg-zxL!%AXRoA#l*s345{X-5ain7PR?Sw~(~6FW=^ZhcZPQ1l zjeuKyjG%mW_=T}@;806sp5ceBhqTVEX`s6JH+I}3)uKtA60aeaJc+8M&x-h3?`6Q) z0^Pzx2HjQb6Pe|U(E5OB z-?g$Mmw|jU)@l8~h!jNOEPhd0 z(B?I=NtexcgKs!fC83Z%#ghP=Du85_;P@AW|4Pd8tlPo$-&h!h{NGqGMkPu@$%9V% z#exph21w%sjzDq`=}?w&U|D3!!3D+B>5;!+l54?J$f)4YFPM1AXmNGAcnwNd8$CR9 zoOqX~b>FsBW7!KfcV8(2C4kcMyW77jQ3a-X*Ry?2ep&7K?8JQ@<{IyS@%)qoS;Y}6 zn-h&#wXsnnatfhpTOM}13|FmiWbwxTb|fZCBR58|W7G=|m^7_ZbE*)fR+MJoQr(zc0y>O7zIcI$>%1_(4NiMK*&bMk}ZZjtPJhlzmY^HFJgH>;y zSuO-?aWmW!NaIg?F#Ep|Ac~72h))8Mk>RRM2*l(e(Jq{%0I@8gGmFas!4R3;(`QFj zp*VwRnrj)9OBWsYlHvRwoBUTwkk|QwF@-!>qB!pc6Ud;ap>28N?P|fPKT_Rq*0yHJ z89iwi$om1H7DMyIn{OdUr3g?oDLC8iWSv0n60>tvg~8@pc+`2=XvYZqI3+c&uQ_%9oV%K9Fe}U`aUyneee`Yp!GK zU;Sz7GhClaP|gNM2=&1$7r!% zuugJ>t6>_iNH6YEgVV^fb&QWickF6r#9Yx}uCYqPo~g39rL0)Vq`+*I=FBYmqj13# z(>flOz|eZDi_@w?21MV~4p1!_NFOqkLv!msw7*u8+-D1jJ+l-GtS`KsYY4^t!+{5t z&QJCGE@4PZ8?<^MQ6L5k&HtWC+Tmsho)ROm8{MVjPSzIp6fnm!ipnw8=S(x-eLsVy zVbaEvq^DJ_RHqOE9{6vyp(6O>_X>{<>eRefgo&_+xJ9hqdC}%iez;$eq@2TSkKOc-m4>C7CD48rGQ5e{9Tp6CN7a*C9eGtVnv zBk;#N!u~drJMZgW&pfgS-B zJ)eI>k68Qtq16HS^uhFWtN3nS&arY2@1^B@P5Ht$Q79-ZZsi?SD2um@6F7P%z?=HV z5ajm$`p39?H|gAuMR|5I{!0pAR(bl&B*B&oy|JM+4-!Prpils-w3h74v__|-p5~X) z@it?a6IQU_P2^A(K!PCh+cW-e8e;K4c%MOnfi1xP+wvUJ;3XNO0+N{d(2`0y(SU~P z04t0@BlNX8NDftu=42d665^sC3uEC}G+311?5a5Agj0_cb=EFQI`O4S)k_zFs(*j9 z@`#IO+MH`L^L;{eU(B9LX6AS$eP1x&I5ypFw3;1t+qut5GX8q|k_OXO{qFtraMt~j z*3U@UIQeMrOqD(kMcyByN>hE*vHiu!ybeyq?xG4$}O@_NZHpIU}adZz|vQ(x-3%5vN)yB*gELwHsW;R zly}ij|JC*V;`X9mml$ZDIT8Ge8FMTX;}ay zz8=OX>xVK3QaGd*sx)+w?G3p9JP>l_=zd@yjR}?HtTf_dLRl!S)BQWFm9AUSqdAD0 zl;p7B=2SAbu5)Nl)xnXj#RPuH3@P4e^`X%S@i1zPV_?telgT7Tlx(GH9+P)j@PRBw z21P7_t<6I^po6G0-vxsg0JK*KB(g|zV#;fX`8PEOYbkEBIqj8LpZX#0Fw23au^%o7#g}oZ@MRn7 zEYL>To)YtIj-=Bw3pBr>4bOb3x9X@hGn6WIF`MaXTmsGZn{4C@*I)Bs=nKLL6Mn#W zMU>0c%g6_j@@-@ka{^r$;WU#()Q)t`zLOJeQ6jHP1^mf)H$XTZ7Ay*#3}D8prvThr zBbV5c^8;{N$bybvEB<7JtDFkFr2jZUY|K-Uu4(=Db-JtX8goiYG@d?66;^rhJ>AX^ zh zK|mU;;gIMEvVAkp3v0Rs@!zCyiS*ytu z1d8I|aQGtkYxWcH!KO*bLjlQ1OfrVx83k|8u`Vk6|AHo5=6@lk)Mpt94lq7%(QjGG zNZF=SF-iQP1Z2STGU! zoY0T6pM_aOc5Rq!y)Dn!w%tc)`oBRNo0>g>rJczTe2<7VUqy*u$h50bnIKg1kW%|{ zf1ngv_kzFQSNGRKXc7zJJ0(Dv=R_Nuvg?>%&Yj2IU=AtWCY!3D&$>GiKLUnk=f;XY z2W#$8J7I&L(F{X*^gVL_H>qlVnT`hkn^bDB|Kn{0eEdK~`9TrX0K4TSJ>fs2%i_od z#jMtt!BHf^*a(iEronv-4tO`N~mB`k{^Vdy(*Ca~Z(8R1>>J~WVX)_U<^ zoGM|P)>~#!I8O@Hi)ZLi z4x$gRR-wy|h8?OgBtBDnQN9D9Sc%$ef>|NmJg4V};RZ1f;r_8~Ib`N^G7Fs?X9mZT zs3N)S1EbfNK}uxq#l$S2Ge#4;yYca%fQ4&iG9Rz6?rBbNacIW4A;AnHAwO@H+4mD% zF(zhsIJO~r3~POk_aWvJ*;E+cTueczfA%LVD-Fo6OYM;g7kqx_o|Iwmj-+FbFgPj} znL#wY0J%(OIPXu(ZYAm{;%EqTGo%%{7>^_1FST2O?*7NN!}dXt zwx!N?6pPQ}p3hlxLYI_=^@GapRGm6oAv_tPVNIE9xL*soS)vJFD0W>lgnr%6oP&sp zagT}d3~Rn^G8j^cd3v)UoKzwXhC%)hVfUFZRB1AqHd(eu`(KW5{0O#a<*$0^7tw2^ z4qj|k509L)Eb7ugf^cO^q_l~)Owy04!r<@5+{^h4BK&2k^yqHB#Pw){W$2_-Keop=ooc@@xCHxW(o1Mu*iT%P33@A{E4JX_ znb@if74EI4SrA-rcm_KfSJEw%but)!a_yQyWWWnXsP@8mH_P?o`W7(q+5IDIMiR2V z$-h}KhA4q&_&%ULv{H>q*h&4qd2<=Z-9L`2h}w2N*0^D1wWaaWc(_9HC-f+7vKuWUMpZc+&p>82xnDW*BsSA8mzYu zc)#2QRaHeM3zIfplFhWk4i!PpNZF!YAzmj{pU}Xm4Zbut{}8%>R8L)=P915Doxyj) zwn!A%`NqblQ0IlF@m%}%uocGLJ2atGr`J#&WgM;k9A`~`x#{eZWhI1AJ#k|Eqh)q~ z4ac+Jx*Heb%@bwL{%{Walq#nv;U?V%KOUB)tWdKlUbBW;>oLA1ei2rh4P$(@#ie+m zMuh>jSL*}edxr<`|EzI@<(lqKe~lL6+K=yyK7Hh0C3Nawohv;q&2xLB(EE0%d%4iB z2p%B3-QC(0{aH(yo%yaDSa(foZJ~U4BTis3w(y7v;@2TAtzE?p9O?<@8CQ{Zd@(w7 z>565)=i)zB=(r2nck?(ZtutP*|G-5tj$Z|iTz`#js;~Li-r8N9;~GrNe&^VAV>L(z zl?|31-f@gX_)+eD2`2kzgiSnY*oEA9o1wnJY zc|nb0WL&-STRL4@+t~*7*0qYRBaIa$SrVql{a`+8O}MamvvF#jM@HP^;0=_dd<)~A zxJh@Xv&C^rg~nS)1=k9z73zC@f2oVr-=8gG+BN;n{lj?a$E@HD@qhT#j?)WH0tE)9 z1)D@FYzI{BcU=4jPMZ`SNh3}9Dpx|ys)h*gDa&LO8vT**qN==3TmY-g$Bm8VLam5E zSmC~QYDkz^f)|?a_Lwf;Q5yNLyM5R*K3~r_y};sbMfMgSA2%PwITCC|J@E)7ZLuyT zE5_s<%!?85Pll6myv${MOJruz^vOycMots6PK;to-(lWu1d1&lT#&@RJ8LZ|&C5H;?6o=TCi3!f zCR^(#G%irEm!PYcLFrR6Go_Sw8?`{qrjT7L7pLI1gBb=*BeW++CRF(gwv%W=>0s&v zQ~;}Ma^T!OJ!ivp#DPD+Ac9nxYN^~!;gy|i6;s;L*LHlCGfv5D;CNZxyZmMj{_cT! zLHbt6hObEg3Gs2@>_72?M~fTQU4JkJUBT7LkqA`2a4T87*0A=&3g(pX(xXm06I{D- z9q8X|;{*HO6zNaRB5qQJx{A3+gi&LA59n+9tlW2ZS=KC6Bm6!#EJY(yb_u}HSVq2= zIxN5bFS8uJ&S;$V&s(JWpSQS-jFKcTiU|~VwJ^7Ebhk0FcVjZMH*s^*)PMr}_Z1k} zPt9#NfF{P@Z7P!_jyZo7I%7REhegGOv9u+%il!EvBrX{}7D>j;X~mAZb)-zBHIu#N zUQvHf@BMtf_~001WsecyC^g}z?-kW2GV*KJ^OoDpb=K~`tSRx|uRHu7jdeIgfp>WmgU~&1qZ3MNED6pXSR9E{XaECvw?~`weQ!6_W~s{}lhu4C3I6U! zQ)AW*L)TKo-u*ZqK8+^j{!)v);=rvYy7H*vWcM7~wTzqv#7uoqL1~S?T=hsbZFE|j zi5*5FB)9lYs;jo_S(K{m@2J)`TX~+oy?RBtRMM<%p_xsxWCTQ*XgNc5>_1y__!dd~ zeQlQ3PmqHu_PuX`<2Rhp+V(GcVB0*W;i2N+y!Y?>L%xH3tywkDCpF`?w9o3OD#{J#NP^hwU4q7B}P+8PHBGWNC=Atqo>`(?xdJS}Gf z-=;Gv3f$nRakjMG+Fu#by|NN7H@!#0lTNKpTc)dg;^@S?2U&17Yq!w^qMjjNz{GcV z7RNy)X>F7y@e9_RgAv%QAm9!%VhcR!J8LM5D$FW+*Nd>{NzL!FSE~Wno8G$Hluj~K4|b0yAhF~Ta-kUDQyp1e z{`@rUHvB_g@7_UP4m3W*&+nmV^Uns6aYP~BacQQ7T1hrrrEG{8Rj#<_)M(+is4cxV ziIPi*o&Dr>uMt~EL5AmO_(|&Dnr)-uMrQ-6y|~<{p6Nj9#&1=jB-5khNpC&d7gaiz z)Ib!}#k+9(X`7%Q3rU*cjV|caVJ%r0uSLoVd$tRKhYCAa3zY3Vbe_jQO+X0ad>G0l zP4)(jDWftIBNw(-TPNnLWTmXK=ER4P_ZL&e{*Cd<^cKEH7l-np73c!}3m`yBXYc?@ zB>^YKd#2b%`L*%7;nGHmq2XtH3nlI;1Z+#E+^{V{(V-;y$_4Ti2iZd!`2In6rv-oO zU-)K{LMBaSfeUdwH#iLhKq%!WS}~V5A?YW-hY4l0e8Zu2*{f0K&VN}Id(ziEPYr^nrf*% zZ7+j>FXF%GxLn>k=7P2$96Xwj6iTQR zehOi)(&Y%3vyzjJRX|~Y{?a1noc0Y+8j$(kTb_0m|Cfa~YC$*lCaTD3K8N>m9%>c% zABw>XdVc1u{gYXL{$FMZh$;XR<((EqFv4c%nwZM<;T&e(rQ-#`ix z5nO~`cgMy&(O&xE8!g@A86{J;FDz6rJSJ7iSK%*EARNR6=)S1t7JLFt<1u!ml>Y?d z845NVW01Byy=~K*_;NX zhoP3WGz3MShAmK_T2djKl6PhV2Wj%Dlv5_j5q7b&&5jFbhjCW0)4=R<`m)Qnv*{CP zKw>=~sX*(MxZG4UN+$q4Sjg-CWvWV5g5DpiS@Rn5E_Sxwezw~4dbxR!6`O}_XQwHC zd!B6$spy*mq|m)<Kdh?ELmGz&!j~)B^kv37lni9)D@G{04==*cXThHG8f+F&jDUdS_wXQisDx{ z_&wt!wYC1Slesj&>4}3N8T({_VHdpB`w;~&J0{tpP<#ASdYS@DoH z2r&G2zL?+(bfUbFk?N@EsXQc1*)D#9GglY3miEXI{;<38@=PQy|1R=qBx)hRDVWqV z{#5+Q$+;Hp352+TM8Oa;H0YWU8nP;yU5`B+)KNYVt*UI`f`U?CFRB`0=sFA@Z^S4) z0ti|JT%8ohp-^jh6AgLfBx?YvOUAzkemwkOoA0=21+p>2lYS&8eoC3Tnf=PHZ?8k} zH1dVZMM44TvK>o))I$}|5ox-WzJ}52~iO?7=K&%C09#bVcna7XB5+lIZs&TT^cu}g&yzqWHo&m?|7=Vxz+pPRZ^iFOVsYV3*!2Kwd=vwPr6rZx|V6(o#Ad-((BvXBd~4IIG#ig=^aL zM67^##G=)ScS@b;s~p?5o`QXr67#KFcmFrvzz1SRM=3QU%u$>rAuqG~tr80ON7KXI^o&^WD7@IhA?H0| zJ1ti6?F6*A1tHxv4`fUL$FO$&je_c?qBE`NJ*PJ6IFNx3Z-PgbB5XJ=Pf31>U{EL6 z`9m(?bs|9h;V4AKC3S!Ay_&uro7b@3?vr3}=xWQ+102ZC``)aVYg1+#)RaRw^h{e3eg5z(&aJ=Z z)zf9PQxu#Mei&tKzcu`Gg&aeuV8!|DSjt%|AeG__;QcMFA;%l`ahuf;0@&n9$^PeN zO7oW5A5J-teZYyY21+(-`bKRyy_QSIu~O{&88f3kwNTg@zC-*{3$(>I7RcwLc0pvE zl2=9dL)Hd#hNcX0*(7_SFsUv8WO{?UMiquXH!IgOe2p{yVe%Uj|Y?6$+lrTN-=GA-_5*4ZchSjah_b z%k(e=w?(|OVY|9fKOX0kROscD9gk5JaF|5(MRUu5y{HASSy*3p>v5a$n(=QG1_pe= z@6nau8uj{e=KAK>I=dR4-fI{ir#2sw5RC4wL1I}9;#)8L%e(8(hvhPepQ2IU5{(OR#%#v{ z|E?^>*Swzl@R*&!k78z3Rs5ZI8tH+W+W|=+yS5#L=UeFMs??O= zOvGwG4&-EX=<<*v&*=OUVKz1AaH{jpGl4WSwL3+SFZml!wF%-O9Vos;_RCBlZqcu! zr_vN732$Q_jbJMPUU@OBqy*dl%~GW|+J6}9$ccoz&sy3G_`}nqNqb)5T-^7(;F-_2 zqJD}??_HSe4!OTpaI7oNC&V}Ol-A6`y?eC0Rp+P01dl$IV4%nmLX5)SBnOGf2rmj7 z+QSLzqCYoC;=g`fx8YVo{apG{5|~$i__Tx_V_7yd1h#+WFx+zc-7f7FqncW!HG~?L zmLp>?j5%@2nrt}g!vDa!Z(hufRDIn}& zJ#>?7$qXekhG8W$L%<#}EE{J5-`={ewLO$Dj?_QkC1&zP&72i~H?}8J2Gdg08fqJ| z^hC;NJ8J3KtYNj?ZXV5~Og*8IhpGCIenf9e>6xLn-2;b=xT8@8Q$@-g8Zs=`ll7`K+FrsA4 zImuMpEX~YPXRm9tl1YQ-^%%z-CH38Y zx{+2_(JE?S@?;cxQIU6v2Y_=EHOsyhroc4auiPd#(x?^s7&4r0W5iEuWN#bY1eqN( z>WF{N~H#3*92N zg6-BeT*aS%=kSKE#(g615t#EAw1c|* z)YE^)K?K?@|VII^)gk$Qc+~DG)%Qm?AJ$s`@s^}ou=*hDdyttc5!=5%k?(M ze30HDEB6#ubZ6L4_qw}v*8}d%85Ue9?jjRRRX}dH^r18^;-^6u4}Z!w%yy@@g6aC@ z$Xwkg3XY zAozHHDa+J!^=tJGTjo)HAY~K;vV3F`5}G$r@G7PoW*F3kl4hIae~=X|TEJ*@6zN7; z!-9(4B2iro)*_joM(BPY9iw+5&eMkzNz3-r1GHLD$C*|}4GWnzXcMIMa+WJ_1ZRDKPKcsE2!}38(UBV*G%O>r zJLe$yp%_C?YxH5JYfI&vzWNc#vNNwQT6@?>57DnM)lIFIQWkc7%tsH>$EOECM59ll z+90WCI?YT5*#s7axo6yAY7MtJNvC}D2t5jE^h9EMOfogjX|CCPM5a&EW1_s%Nbhlf zJr&QPyD<7}!`eEeg5z-sj&gbe6<@F+h4#{CQ84Cas?pP6WgE_3JB4aB!nFD= zMVH9*EIsF=X9#Uj4Hy-8PnKa%LziqiL!XmPpNHzyX?mit!%x5NE`6~WGa}?p$H~qR z^fyuUhlJF1sZMy5pI(r3@;sd_7A4q!u`5&J0KZkbu)8Dz&!ah*d7F-0GL?`tJj%3q zj_bQlaluDp^b&$VGIIvuwhT9%wYk6x#{Uw1Stz~&n*;|<3vnKiNO+kkG}jqd<@7b- z^xHEi=O}ZtDZeh1m*i)IkMbgaV2+%k(KnGkCan-P(a#o5S)#me!HO_NiKd}{&60#s zvVg;XkA7e5`v(a0A>|(^c1{GXtK|Ma5(7R%f6P>NphKfSg~NahS}kul&>;omJM?Eh zI!Av#trLL2hBT|+MdFI*EJ<4~YG#+=Vj;v|(qH-Ld-T^JNZMTx!Lo8$$4L0;ZzP9( zkN&otD)^ zyV1*K;wLC93x*Mkty$?NB&T?}d|GoVy)bJa8j_y&#$Vu=#r}&c*;mD0u0l`?f4lU6 z`An@>Yolg%HfU^lA+A%}(o3hN;+1QBT+Owm8E^*aB19%~QlU9RX)npg)3ypjUc%S- zcrjl)?NQ)f%hvch=*vQXDot8OkD2MgYt7Hg*yrP=e0??h7FM!HP>(~Z5slx5CMi9IVER_+2?aV(44a9adImbRS4K?pa4viG z#%CH~??~487V?vTPITW8t31Rl&~ zRNZLXUYLMQ6F1i)yzzorm_W;IB?oe{(r2Z--1-Y&6LT19(wmp@8Zq%r?()t&Vt}o`PF#gj?Z}wZkYW(0%`h z_V)@Znd?2qn>g%$<96OGweC5Y-BRp!=jNjEZE(NB1>FGN3Jn(!dvx2zvpnJDPN|fg zSFKXK4GD|!2%0~j+sU{v>>8Uf$`x0*VMf-=SUs+zoF~>BGx-`&1zCpspFkyO@RU z_VaGul~4$tI{pp=&9W6N z7&HdL4iVYQ2bj{q=`CK+l+IYsAk*6h%9XUk#lA-R|6;WXf+)B{`9!ePL0f}+)K?=R zv&E-^xk;&`tzLcy6ecH{R`PyzpqKkmcnTtVS@%PMO7b|Aq~rwFC{|QuR$z^r*K3S- zl@FTUmXVHs-4c_PMwPp3WnmQ>N%A2d5A$KB6>iQ%DU1)xdj{QugTU9VM5hbGjnO8Q z_w{b?$Fu&r$gKT^ec)HF))-Hn z1%?88CqGOqkyc|adynw_K0d~H@ia|w+&TcuAkoTyr;lhdolO~C>2%JK_R0Mc!Vk>o zp0E66LKUcY`}jD&2S0R^{InP4S39@bwtPJ@Gutdniq!|u{B;#lMbHpjIM|mlj%C3Q zudeu1)(F~YUJSU$2d@wi>hKTy_yj+Q@RIe`BWP$%1n@(JH&1KflcJaLR$Ay{(o@Kf z!OKj4yEUVy4KIHJo&#WV@ey}Xx8lQIJ|*vc<=IEQ{3$dUYrOmz^2#c^ZIvBtSY>Zk ze~l$mFMkH!ijFz0qbP5hBikK#D@`!W_yj*Gj)7N@M_vtx7Pw~oFbvo$R+F!Z$&AsH zOAjDJyO`<@({#knS+_{pRD*Ywh6d4tnU^YmF{_aeFlzMEd^Ikhg%~xgRs&*w8qgy& z4>Uy4rf~|yx<~1nJY9c*P_iS<7pRfxG1`Pli0Nf&i^X*k&dw2A3eLS{Qd z^IH@I^sc5*OP+4qe`ey9rWe4L`5FASl4pWysZ67QMyrV4q$Z8pG}=4?Sv)Ql5dMgN zUIz+|E4{rS;2Nq>0?xNVw4WQ z&^=COtoFX9QF1OSCRMbK($Hd!8f$5Pu^N|9of?HP=r3Kr=M=t~|Yaf9-pFIPBqY`53)FPalefE5_-;SXdjUhhiGqke@y5;lcy(ZpX$%kubmT3d_n#G##ib2$7n~(%k+GnUW{$2p>I5YMHOdg z!#L$*<1`jq+8-LF@jP9u{c4_GsjJA-t9kmyDE-dGNSzk;oT1kW&UxsI&Gz^YnV2{wGhD&qmJB`bhB(qx5F&L{a(xGp0@I_7?*@4*)LIJj$MnC2TGc zBnPiLkIZ2I%gq;Qg&2@S^qLwQVW}0=qF@;XZlN|h30TI50k5S#1OBI zME5CJMu9E-3M`|*kJHl%mQmnm>2nH}QQ*(h7Zog{z%SypB(RJEU!<=qSVn=rL*G@f zi~|3Neym^_1^x+_DOg6pc-$-&Sd9X=@;&OFW#X`W11+3@=w6NRppwYc=$uB6X!Ib_ z1au+`q|(Vb5+wZkcPB7^E5R4GW97BU6%DWH>8uv31&zMVo=H3c{xWUg>Iunavlx=3 zjhW{I8K4Rm30TmsNb^W5#ezpcB2o*OmM(!!n_>gnNk$~uOJsLZDoOFPU{HZnCF!b0 zzFZelP9ILhBbh?*w`~EgxWN80B+6PBT%f>9R5Q-iF+q)TV2ta3&KC6!mSxM|p!tfu zkILvqFl)qEBOlk?Bg!^Gm!kmmw?b7+jW z#KInRXnU-u&cma8>lr$V;5`6*fIHkB<#m|fF7uvCv?X+j+9km1%KH&xh@|Rpo_B=Y zkm?amVNWQ)T{!1|Wt6Xe@T~LnoS|TIo+GiI!fD83Avta02S{mWCcYnfl{{y0@Ld7! z>Cf}t(-am(b#}{9kpTB1A)Vv9E>Ts0@0Qf#4e-IRr>R-u^pybL(7iv{lvvJc!jXP6_Tsw(@)=&+jUKY;76myZ$#&4gXJ>o0)>l4@3xSi-{RKDagP~48P*CGY( zry7l6S*>0c#Afj*k9d=doIug=xKUO_tfqNxO;jQCIxSN!aVu(gEnH#^T;eu(+P&a% zKiuI_IK-2GpdLf@|2BN`hj5-Zsfy7laTnaFmlm)A+8X%?TkzDU$*1btDJhJ~J0Diw ziF4*&q+9+TlH9FrM(7n3ljBY%xjT~8B16g@+M-F~20QBYKLRVWGDjiO0|!~~_l zLk*_2CO$R8?(KHzer0yIh8X!F{tIJ*MiYO4KgxKwXpG{6FEew`oOAEFcjnvo&tCyN zz_P%*CG{>f^#UBFoW{~#f+`h2kcG9g+E+%j*^rD4HpH< zE~U>^#Qmg40?W0tPFBxC6@j44iA&< zr3jNSrv{UnrwaolL1U9KsuO=Tj=@gDFbswr3UutmGejIfEURE3Rl9M46G8$B&R*)K z+0wL1+Jc1GgYYOEcmN&>;eznNvOoX7?XT~TPXM@pset$G_C9}=E7TkEg?Rf|v(#gpqhyVN|*zy@`Dt<+4NfCb+>5!(Ul(mPGMKT;Ti|b9D0-8t=6Qw6!rzA^g_DtcwusU^2lHhQW!(9Wda9d z1qtUJNPYlNO9u!m)M5ux_W%F@ECG|@C>)bjST}#oS$TX^^|e1|wmZ2Q1t$a;78yg7 z$ufzeA|@gR5+E`O$N+KJ;?2xWGBPta&Ju_VRjao4S@pHHHP-qpwT)G}XkjLp3Q}9D zR=a37t9^E}tKB!PmGt|&cP5!hCIR1Hk55SM{r%24zq2pD``n2qju6oWrqh`2+qZAi z^6P&px|HBKD;diGZ5iBHn74LZhB-Rs-scJkN>%nTj z8c*OXtS_%SzizoVr1n?bU?*mh{aPv>RM&rmBPvs+7VoL=i7TOqTE8c*^!2In`nCFN zhw;{?gkus}m}XwB^egodCDv2Fq3dcjn3TxIWQk&*X|`v(Z+zdM6ihT$ZDpD7IfIr4WTTEJvYYFjq7PC{!1+L^RSriJ7#L~E6(f~f>&`r#u{h%qaNny+mKRnplq zEv9o|m2Mc zvKK}?m&pu<;6I*1A#yV1!-KV@biPdI(FIJ-$@>y514~KG@W?T}07R?+dpTWPN*7TB zxGCah5?zw>27S3*(><+O?Ovm$Vxg9JT#HL|X-=tGvJzd!Bnd|Z2M$_g=x%>C7`Y@I z3nwp~pqnw5c2Engk*SH+GM(NRSNoKBE>xH{77K$yX{vmu5^ma*n0}^9S1YlYmUM^I zq#BPRtGI(grF~G9yIYI9v&VnCFIVF3?zk3p2N57$$Yt&&XD61_*=Y;(2*9WU7rD5I z9=8{9yJ9ZgL01Yt49K)uD13gtulWaJNo8*y<2w+y`DbnJjca?9E}?YYY`X-NP9u~y z!fdgmgA`%+Ch9VLpX-PKCG(oQ`H`ntZj2BDK-HDQ0JFx&~ok0>IM z#uE^8c@Z&-I8ZSucT+@28D&~>YD9E#G{Iz_k>m_mS_KtGJ{X{DO8|2n-g@kG1ESO* z>rH`*w^xfI+q?(*()xdloOn^udf=OyALBIW;wHLTaP!`2x!;hr_^q&l67NYxA^hfn zK3MFGykqq=0Fv*c_m|LZbUT>8#!ml*6nsr8tS0UBL98^}=`I*IF_1{AQLiwuo&Fo4 zt&>S5!;yMlIDuOCVWvjEnoPJA_vKsL+y=Zm>kS43Z*z1&Y^{h6 z^ed5+T7{7K2u=y9iC{dO)seH9D}0RZ6}%4SGPlk_Q#`H=AnSe{8deg5AEvWCQ^(L4 z+aUM}dO)W8>3=5cQ+I(-o>nFLBosJKVV#obg~$?p3U%DDY+}`b!77}^R|wgr^x?Qq z(`SUE3{4`0ZHa$A3juV6Bt)p@bGurLMATf)dz22y^ay>9$>k{yV?@9gWO|6cD7p{d zB(Ad{kIS^5zQnZbWT8;GN`(oHVD_iFvilMpVp{8&#&Heo#)%M=>vr*h{OP?YE^ z$bM)++ts~Ey;dOLze-;#rKjmQdWo36T-bAD{mnto(6a*WIrwW-8R$}RQargK>)}N! zD2P8#FUWL^zR6_rdhPUWChtiFY3c^M*_g^KQBQEB#Gy z`*#!xom;`I&g(ysy(&=~L@|duHHQ--{z49V%P4dILaNSUcy|hff9ECwou8&0X129F zA=9WRpQS+!9Z5KrSg#H^FleELeuPa-b0&(iDiw}|P<;$u!a{7KZmrnV7zCbw5g(#nfg!xS;U&OT7 zQ#ejc(Hyd90T~06r^wK-ag3xOu?|{`2xq*+7|i{8XEP4Nv}nSa`DID3`g|#`lzD#z zW1@0;CTtq)tP)a*;R*_BibNcoU0O5NN!E!@vQF30o!m*(IN=(M?=HzIo%uqp8-W1LGMKE^uVi7k$3D;&I;x0JvWw<6eb0q@`| zMYKP}0g(k0Ezv%4*mgu2S2M;EOCo=KE#hkz!UzkUld4OeG>U-0II<|OK|tHnqeS$y zHa_k!^2B_DRX2*aJDQ3l!w6)z(O}itxm#vcq?JWksF0>6++wWjRr*!85*si;0f}j5 z$&}OO78qt7?Bdh3-6?2lH**1}^IlQ(wi(WTtIW6XZA@2mG;L~c zZC~qd?TMka47r1;L=wZYp;mvlaCoQnL^fL zV-J6tKO^%4jIn2_r`c}X08?S#Wda^+|`7+bIB1g5x z5=kgZ;v$cW0D6Va=s$-F@Bn9=d^)0twO)w<9ij@s@65c51!bHRV)KM8b9xo5(Tb=i(LqNHNMUUa=i z3<@jS`LDumz|=|Tw;a>9P1!q6{yYCeXy>1H3?ljkw~?@zE<4HXyFnnIWL)hQ*KFC8 z2ipJQw`G4S<-#Gj5K7_`DEvk?oN(ix?QKtTu0|VUp0SiBEbkKf)%s z8+CZIxB)sPysf6tK&!!T*y?}Ky{sx`aG|fm; zd79>@>8yY+O-r0rX{sNj>Y8D?@Gvzp`G&~ZF+xp&wwg3GXJ}omPi*=Q69$pTMrd=u z@+3)t_2wGCb8Gc5ZOhR1qwB?bb%w4wN+uk1It6Ga&8JH8&`L6yWbp->ETeceNwh+u z#l(LStsDiQ@!muB759C(w z!0Mf1wIjE3H *Rszm@0OCMt^C=pO4I@GN$>j+x|u9D6&mNE=fN1A6~lYS1V)9f6ivYey_ zA19u1VZFS;YF%b8x4Wb?yY`S%(CABeDVJO}bGal0v01JXX0~-2yN85l*OY(p@(ec) zb5ny=92xL-x~v&)PV?F_ZcVe#IN>-s@anP+^A#N~OTf7gYv8NnAa}U%ux*h1E_iEG zgUz`Q>+n9E<(-zBg##HcS6Mzqb6ht4&79^SC?gFFkvhU^pp1Jm+2fxLB4L^HzT!8Z7pkNuFxo_z^&JrT{`pHUQ3= zj?+;pCEM6G8Jl8xe%^nwM33kjp!p8f3+~>eg+e9lAEk{#AF`+!lMvWXbQS##f7O3mo#C&;nbZ7@^&V#s{wl=4w+E>LC@%)uGW-(We-LOp zPBUwdSRN#~*1WWB2$ObO?Q!yt@XLW6>jCkjH2=5_uD>t<&mU&w&(|~j>tX&wb(;TD z#(zumo7gQyU^rJGGTy@SJ7aAHSEo(pj)a+dPNvoS8MCx#=BMU)OGO$i;6dbC@6x0;APyCc6ug%VOHR=*E~+%SzZrDd+t#Ea7=v2I9{w8WcjX}z#b;jQh&*4=4IZK>gAkr&I% zQ-uf7#`dNRm^H!Ae5<213$`u2^#VyEl@J+~M67nnSU!vOU~O|P@S4+T zgmkDh2`r{2@*^Xgn*2L|BeRT*f1KD{YQ6BC4~mPGF(@#3BfHYqGKu`N>l+I5GKSgj zYy2pU*>B>cTd{C8PsNu@i6PRUvsF;PGHb-Bok+cGu0rxKO#3(PP5HTVxNUka3# zmMC0lyMz+?4re2DoC1t6IS@a26a6#(ACLZVn|5 zpt^E(^@7ROXVe?dn0^BKXsK^e`UFr*2ME6omw9Oc008F!li?^FljwUbf2~>xV4KyE zo_RWcNmddkjzSbL5jntzY?DBopgq-%ZQTR50fKCrme6e*XiM+X6Lx7!56ZTsExjnj`_21*$+9Dd-R?r7(R**+ym|BH z&3yBeuN?c#<3x0}`X{D4f3LrO%c_4`)EkTMHdB3zB8%evi^7ZI>A|5yGL}oEQ%!^E zJ`?>JGik=MCI$y$*{1k_8Q-1F4`vrd`eVtg8D2EBt7$Mc)RYhzrn!8@S+P~%&8#ZU z@6RWb=*SMlnwAMmYF8pSr}VA%Q<$23)JV->O`=Csz`C>R z>Mx(XML(TMf6GLR8^JG38ZRTXf4Z48INMzT`?)=n7ORH!twKH9Hp*DG_uk6f1 zXDrR05$a2u*-$E-3&qo^Tr80a#Ztpyvvf+B+2+vte|y z99mZ58*cW{dYn&xIx`r9NzbV}{^&2Su$SYx{B$90^ie%^FrD!~^c90PF)e;$-_uv7 z%SWBm&E(7`t~IqMb@=IGx!HiUBcN}61!J_~)Y-goCz>T|#`Bp(Zn&ijfele@U1FCh*CBx`e+F}FZ%M^*-peYiX`e%788FRmO8V$( zg2wJ#T7oh5RE!xZsHy|4^n*7|Lt@5jnC4F&-#lcdHV=ta49XV6LTOaT7lZP+(J6Cp zM`|dagK}mJYi_8kw9@6B(}^!`2P0*2pxR#A=c7F|TwHuIgF(O{>hd;&-i*tE9>gD4 zf8FJ6ay{NcH~8o}dMgZ&AL@(cU`GQ(9UXF|-bOcyb#5w()t22lkV)^2^-A1+JLJTZ z>8$CecSypzj&6aRK5bmAgoxVar+3nABIIA0PMUf=ZTUp9Ptw%wK6&ZRe+`>Z*~U9VDfc^|#sM|aQ%e*};K{p1Gxw4W}KfO99h#IIA>_$hVm$IrGE zfsniD9?|7POik0f(=;>hlbIg|(8;BXy3VbusOtUn5#jx)^tHX&bTXea#Yg<~ph#Fu|HjIFsocRtT!YC_y1&wG4fV(1e@T6( zEln*=MS=G!@(jj?Lj$orW~kRRQ=wdJ5OD}WZ*L+u(7ZI&o=){AGJ~PqKrDw3GjvAz z4SCZCm%f1K6mwOKY+4q8InGRa72X%@YZJiWope9W zDuETs&4(n@(QjF+R~#yo&%!*hP#l}YcFS4Ap{!}@LkT5vS+Vw>1RN0YfA}CE@Pw~z z$)|FOK@;H6v_sRwQ&7jG+FVoAqcrBDo9Qv& zD9d93cLYaGj`Q`GArd4t8Vi&l*5uppIeJ`t`3S;Hg>i#E@2A7`SsxJU7Z7mrscREM zObaW5g3_v&PQr+o(Q;X0f5<|cPgYP;+u+MSdWyb+0BELilKGi}lknsERDRIRXeWZ! zPt(_g|Lc<$Dq}I|o4B~B<+{=tbA8ergjC$~Zwqky7JUa%EoJV@*#lD}MF}%JL*Enj z?;|fAx1IG+bJ(CCLSw{-Za@G({aE6{kLX#%uW1Vhi6C1uF{ue-e-_M=IQt)f<=I%j zjxQpM>Gc0m1cZ{$(@%W#pY&5%83@-sxEr_#d;Pf;z%I18oEI<7U zmO^qY?_|30AJ2~Ef}r28=_N^z|0M@nna6T~-}>l9`W+Ir#ua6%wA6K0w*Isk`SQ1ma*@X(0 z-Nj&P*5U?ke-w?wHog-G$IU=r+*0&I)NlhWZHZk)c*V^}m%Uz-kc@9-|C1b7PbHp`p{i`qBvUXkP`kmW))^FLladX#t51%V{N}F$6*34{7 zOLUnzrA*;9e7=|GvXr?OZ`pj&`u43JZi6_aI0=Rmf5kMfvpCmJ(av(I3oS)9LJV%I zXzb^UtiDZFpT*Z@^>tU%_u#|H*kEs8Y{|r}TXH5-{De7X^1=S2H`LFU@D}7Y?wRFc zl#tbRQy8ilxopvd#S^JL>D^{ar&hSj%*Fa++AId6u&f%K=wN!f+)wOzm@$y<+X$$I zvSdkTe>%N8KUAR@n{MLP;UV)M8?=@@@!b03N84k`WDmk540Rb_?&B!$nC0dx04m}b zVY#3oUpLg)SizT04_O*4Bv{AM5Tlh+WRWEP8!>9q1< zf4q`>nEM8PE2i>4<8mV-i%^Ne)6J7{OuCV8^6|C&FTjGRdwR`wDPu3mC(K-Ocp|`J zvK}a6UcQ;%;iGwc%Oslu7Mqd>-iffAO`7JA)V>!9`@izLe0&?<4xa#y<3WB8l(g#w zKi`3xnXlvb;o8bEr1Lo`5Ip<=sZuMXf26WnllSBF8Fg(-2y3IjK%Ev#5%47{%6F8xRZ@WEQ@c}0XCA(9QmH>tJn#YNG~uH_wJ1LX@Pw?i zicIeJYd>)%-Ek96W*(*N|T7v!tKCL`NkWezN>2V{@4z55V*jis+fxf5^YV z~{|+D76HDezK|u2+JA$3I z;lN+yFZt*WKFYK*RF^T~`Lfp1f4-1Zec7;8A;wZ6`Po9sP5A*zicfJda1CbbJ^U0L zwi$sY=V6pR{&i&~w}+pe@&q#N!*01-eqG%18xz%8DY_n4Zu$6I0)xH{`)Bm?<<_*H zzbj?lVtxj=Zf!0n5Bbow1?pPw7tNvKQ7z4S`1@9zA_5$BG^Y_re+<`7e`Kvt`<$*l z_&@vO#C@%sPUrzk|dkc~LLB|NY0%f4xSNKoT z|7U2R54sIUxw*f;E9>XKe_BI-^Ydr2c2fuTaJRvZrET9;>xOcug>a>#hGOkcaz&Kl}u3zP3$h5d9M$8YmNp;~pSSDm63 zGA*A77Ud=4^pkaPRHymW0<}o0tI~8!ReOAiPt8|L_3erEbtY1#U!8$yh0Z#BNC_F7 z2$TI1i>#A|BKe_`Qtwps3-M>Sb5=@;7%cYf7^dY;qj%wm?aeuR?vY#M4g^7Xc! zQWa1(hHam%R(RD}s#U+)cBc0NJn53*^t$7@E7e?Tl{yC%j6xY<>`ee|?9F-oKp%o2j@wHTl&Vb-v6;5#j4ir0guHZ)@^D#(@AyHJ~^nU@LV?Ohsh24XSTNShGjv zVaxV(AKZHe0!4gxS8QmjD8V#KE@XFpu-DAkJ=GIG=;?ANOS8#E2C|nE-#p~Sx7qTO zyrzDdq3KMT1?nZtM~l^7w8G@Z9HLM|G`eGy<{qYb(M_XtQp2MZYv6 zGvKT}K(!44=kjR8RiM@T$rldd%lX@Hbn?jf&%&D;9wS_y{Z#Ax92wC~j>euj8yd#w zqD_aXGs+F4wD}-d5G|bdmh)_z%Hw#9qKclNf5qrr9F2B0%(;A&c0kSjR2SAOpB6q$ zSBh#o(e90Q9i>^}$DQ|)H|$tGLQa0NTz=ma`SPuS<(t3-wGW>$@{hy*3V-W~#$gy` z&|UypQEkr4^d51(B%lY3-m7|WZ+~!5OAw|E8pfy4XXrWnUp%z?$nQEve?fz; zHt0Hot{=xdjRMgmHt6PYIU;>Vi}k0?2f+O|@{Ch((%|(5z$%7b)9rEGIag^E65lPS zJd>PdGqiKG2;0r}qGDFul#&r-`*YAt7v>~gZApPK%R(p z9;JrH$Io-DsXgTYg&J#@N1SpEe;R@~ryXPT#XHI6c;H3{tp5}6KkxwNv$h9TIz|D5 z{+;>cze288$|u`{Ua{lLBZuiJxlyC^)dGD(ZtQnOwRhsn4;WYON8%HU;S-Hb1$u6b zex@(p3;V58`sMbK@o&JFdc#eJ>BVTb^x01Mn^AhXK(D|Rol{)#E}B(zf5pFzjQ_eR zYP;X7_%kwo!=@&orPIfK{`*7nQRWcUxDGR@O>c3orY9kg30*`>HLasoP0yh<8Ts=aTkE=>dA6S^)ZO8HOxzb4jRE!i&8K zWH~2Bb)=f&Z$9{0A12%iIvd{ny5#|``@xF5qF!ulXgtJ@u0ymC*Ora#XcX9wBd_6^ z1)dXab={3HK{JESfXjJRflrD!gBS}I$9zFF=Qf=)-kRp3)1f3C(TWQ_5m0xylY zYxoRAC&Y~)zSbAGslaC*=H=0#;cSHqyer_|Im#=lmlSxVM4zB*C&CW`imXltaN-9L zP$DjPVZ?oiS3^(@pQpo%zv&RKjTj>|H;BG=>EoBtw;^IQ2HinJ#5IbvL)=jkC|)QM z;m0DSL;q%7S<_lhLz%Q1R;r&mKHU9^(gN~U@guo z9N{kR9^>p>&JEV^o||GTog8ro-A_`F-8;{D$KAByFz<^-f8|)N$6oj?1%8_x``e>k z$dN&J(-_~1KeOqno5uLvBjno@ba#zVDhv`qvUnJ`Jr;Byr8C1#L3hJr{9cyby&rRA z^;;W|r4PzbSs!;DDJqT~*YF4Rj`tM!t{T2a>}E{bM?=_FqBJY$!G7=6`^Cf$Pq3C4 zjARNr$B)n)+?$BGsko7PUjuD^*O>xXNp~Pu(umiX(g< z1;!Dw5E2k8#trrwJQwMNB_Q}-qq#hen>uw==bP7Qf5<~0)A^~IJjZkBK^<`}An)uC-zN2#>}2fLL5JV5jKX*!92NAp!T1yRi{PN%`8TV6

@uqt$Z{Rn_q4Bi<20rBFM@Pe#1*;d5y`7^!juy*{JqWiE z`Yb)K>5KF`O|64@%qmS>`VVf8)PK6*nCM|0IgHm(_{bgcmJJyEh}>%af=0Hd>&UTC zaBq8REvf|TY{FA6af)@Y@juIT^V9@n2|0;;CmkRu{9AnUV zi2oRIJ6a8QtEW-V^#qLlv;g24809amNdK?4dK;SpMgXVzT3DC9IJp*q6&u4+`$i01 z{Qg$(U7ZC~RNLFehi>T}KvKH9L%O>|y1Q!xL{e&K=^PkI0V(MakWT3kC8Q)pgm2`3 zKfT;p>#VcZoZo);-e=C)Gkec@pQmrwzK>CY~>@JdSBD^NtPXOygnq_|g zu8RCTYCxSV;HuzKfyq;9kc@DktO~=B+Gux1oX-SqLE-T+1X@&;hkdg7+~aFqKRh|2 zXRNt*j4^D)ns?GU%{02GH8RwII?V(iHR{n;*u5z#s{qM0T0xgX45|`0Y3AiMJ%R0v9e3O;K*BhW_^*z|>b^rbkuii`*k?rBEf7DS7Y-fm#)G%UVQ>7p}IL?ipm zS4l=V;gfBq?lybo;@wtuRC?(YNW22w9o&^t#h#*8%`f0^xF!hEovxYY$re}doH>&X zG@O>0+L!hb#NFFSDpU4PD_go!WsPPXp105576WBJI>pNFNIRN3qwG+hMhMoJmbu|m z?HpM9oc~xp#I4c;Qh3Con8K*bU;S}t2Swc=2N3MLsdwOVsH3EOq3i$Rut zKmRON1lyTvB)nkxDQZwo~Bkr3bl^Olk>V}>!2 zt1JT6D(8-j%N6J@RcVJpzk8~%3|U~ztMXK*QYPj|&O!<+2Y2&gfx-yrO5o2rS=}0^ zp9Ws8#xCKI_Sb*nd-Po36;Lo01X=Wj*DV)d+Ml%HPsu38vv=&(ew!*aS@mV91DR zKkBDMaL9dIxV`re8=SjtL#F@$Ooi_MuojGC2RZ%DOM1Ds(WHT1x{L_duUp5Kx?Sb~ z;o_oWpgYHN;{5K?D&|alp>+|?B^Qd?DgDZF69x3VQ{k6|s7xG=v(1yXtdOswM?zqp z(_feKZh*O3I(KjXtM+5P8U?S!_R5ax*CN;9uGg+BzSh=1%~sE$eSwmXhLZg27<$_c zL9|{R@hckUYsqQ~7=bIpZS{HY(oiOcS9A^67Yf{mkNOgNr47J8YzQ|Eo8$==^7{AS zkf^^}zOQX=HTa;vD+!v%piW}^>0vQNyF?wPC{c^alB63IKOgpHo{3Yb!$z~9P}#y> zpHiVWInPG4>RSq_!wxQqm^KynhOSLNH3;iH{L0Td)#T?3L^~~RLB3~_1uSoKSMYW| zTE9zCu;hfps-VN$Ig$~WYTvv{?=mR!{$iXkBOV(oqA&A9l_VMZES^;2i>MV=-^D9C zAQhMF6dQvF5`GBDU`dxk8~{rj-pCX!A)^md4nK2%kKHiOS>9qdn2nr|G}S?ZVH{Lq z*)-#LDhs#8{W+h;t`OQTfTXur|N6BHKD+s&Mg^gAt<{YIJN`vs^&3;CXGz+~r^~Zg z;*szO+tJw9R)(NLi!hxS><#cjm4#}k8YMtr$PiUQ+cl6AMdyMf7W1clFL zA>9)*c9@{&fm0;i_B^)Lq~PI@o?{1GJSq>LTatO*f-cM6?@y4kvie^!yq&Y2!Yb?R zUJlF(8n+x|I>%rl5j}XOG&H>7JH0{K>JOmBih|qb6!VJzh?GdBk{jTi=Wo5F&*c*z zd8gM+9Bn$|`So5B*uoUTW(czyGWvh3A#9j}8!Fhm0tnJgQdL5b!ih8|=i?f%zcFml zu-#T4kSgYcpcX}ANNEz7_%fs^4(9C^io`_kNVP{|;F|aYu<7TXnkY#5%BYE5v`I$s@u8LsqzI=+^8;Hzg?*5ap zB^Tub2-P=*)G%z4wgbs=nc&AQtqE7ZE}PvIArK64&-?0% zi}c7M@ZjQtVtU^VGP}lkiHlk8umw(-fny?cP2YfQkw;Iss6Fj~TJR z%84?dM;Z)j(#lM!TKxkBB+~3n4P=GH#wFoc8fZk?9RA!wipUH+TP6jpjZpC`+C`L* zZ%+BrPIL9x9X}4;js>nPm+hMAOiZ#H8F=i>J3@rkRy*&0jnn|xts*vtdZUy-xmn3p zS7E#*cpdMsZNOb-$Y(6jTyAVzX`6;PMDYw2bcn8{*YbL*Qrg(>S2p=;RLQtG-xkSkt|AYob`?rf>EEE2vF4|6UFsQH_F)YSXmu|gWff4|W!$mcG2J2;wQ_$8 zN-<=uMjO?h7@J^{Bi$0EVawaGx&cSw=VP6GAXoTHC;S zcER655pmBTs9SWsk|TbL+?cT{jVMnuPP^^W3hhS8vD$|Vuzd6%u;Zk z+wm0Jc}-H~CFwK4Leg{=8h>SE$^ph_?>uw2UDK2_arC(uz={pW4h2*2 zc>5>3BugL5R85I(xQ~01j8PuvE~Vjj$(o>VQK)d9QOvS5_Y~k56Zau-gkMg8@CVvH zXf-mRLHdIrE(Fvc6;%}5ps8VYnkdnQQ7(QZ)N#1(m3l zk16N%xnb2Erf?gQa>nos}2b=NPc=1zme)T#V|1<%t1y&^4$Ig z=Pq%qHzb(->jnndQivt{nCQd{HhHCP{h-*#d!Dm({PgYNHKb$j2$VZ^cljp27%Y=# zG?}e__bI0HLs9Md5Wi)h=KYrWBP0h)Oa9=OP<*<>i|R;?+YAv*TWF;;NV42GIcS*f z;|%ERPLfFHMi>)K6AbFB?c+-J933(WFnwNu&$P8>Gz|h4Z`e+N=Heq_vW$v59OM(|Skcm!jWzYJ8ihX!zd3OcK zr8)33=*KDQ7Kz0bEt-+%B+H@N7+hb0ODqwXq;Q==-_zkNv(PBa5+5{go_tE2DIJ${ ztM_^*^_tVi)&RYE#y9D?H{!;$SBlDqOlj|RlYPMAclEy_Pn zz7d0QGEl&bl|WF4&Vd@aJb@TKP-S`B3X7MC&Baj31z`Z|#SA@@;+29lLSa3IE{+!O z!q)jqnE1OXexvT`B@qWXgB9$wxtzkC%z7*TV`da#4OLnd+!T z_|n$SIWA-M70uS4VyzB~a7W>cKv~)qOgbTFjZOP_I5PpaO(p(KTWA|1d8#{E#|VpY z$D32bT3qIYc5~x07MK;DZx8hQtYE5~S!Hg-&iVSLn*Il;ddgRkN3?C9&Kwg~F538> zBwLUK^^b%6yJ0e%3lahJ%+K&5Fy&^^q}PNTlqq{ZxMpm})Vgadw#ZkmULjLtQoj#M zt^f|l{tQ_AUOUG52_tPkIN;p1WyM0_cBi38Wh$2E=(x<@KgkKuya>*cs?0PjOa+0{pS!{3(T@J zae<_P=CgWa1{&wpF6+;1-0{dX%dImGJV7n9^%K;~NjDrM0|z5F5Oe%bIn|e2VF{vH z?}tZ06lSUvrjnopR8?FfEf+OwzY=kqON$wcRz{w(^VKj1^M2QJmk@CR9LQk+U1RN$|_I_xg>JQ-B#9QT0N(Ml< zdQ&Wi6@9{M>ut07uXkN%ZZN@AJ)iFm^qtVOamF7Rfj{C?h)-tI1Sy=P`sdx%!J!-T zrh>ud91;>Y^F{$?L-URO5<2}7Q^a=~Hfs~Zc4@)d9QnH6*{XuohTffj7orEf5i^#{ zJ&5VxBc%t$QoIr^|Gc)IrIr`>`K)K+lnnXyKD~VBlJ-^+COv5Mzq{>6x&Y`0h`gWh zE`dHMvR<&x65K{ugkzk}>S>vxku3~!m4E5AF87wAZS7{RToj9xC6w<9ng0F1s);|91*!pR^`cXh4*#A*iVDO;(%|c!G zp@?*^k!R{xtwPm8YheO3`cY?)nEgNd>R z+XYd)VY?zjHmcc3tg(4lgK{5m^{nYYImSyV{EKKJQ(7HQQnA67(y!dSA_Hu%gC~Ri z=3A=|?PC)o56{B5uC{EumA;dENASE*VZk3UFdAO3^H3i7+CsR*F-Rc~@~>adOo!*_ zE$Us&B;si>VQ6x?;#3z#&;FpZ%B?s(*)r;Gm=D!<_oi(MvJK^t@sd>*c1h1}CB^4< z;H4imF&gLeJ{zS{PlRgMnmj_XkIS3RHRpNbTGOa6k&qCAnRk&8!kk_A0UL?!#ZA^K z0qaFEAse%fNgx`TM;1C2h#eQCtb0`_dBbL>0o~H5O$q-j@4ZxKIxoW<8fJc7hc30* z#o4GsFG@(wdInBoAz^Q9PG3~x99ecE#jHA@2qC=QN`M^O66$XHMHvf?GTI#m&P8F+czjoXI$=fwB1F<;_SA}fn@Un$ zZTw;{TA6FR8GlJ+L7A)Hy^+e)ptpA73m*}w(V|nM?8@A;_mCcBB~IPa_E%#`*z=sM zV>3p$7|hj#yp5Llz3@_C>l?gE)kJEF;&f`8q6MBOU3hM$3%+jCu zS;AJbc{Y15TF|1AK!gGx5M6WjRjV(RpaS4EN9YNz%fZW6C(?6K;x9|zs*Jy>BuTpP z<1+dAmXS0&3T%w{B;xaM-ux^j>7JP|)4Tm2f_%j6(0BQPXtIJOUu`DwxXY-so1kUb zN;g%y{)(%Gr0t)dg0D76+jGIPJuyc6@bZM#pxvO($?h9r z*VGFTMQmW?Fp;(Ft>ylr*QozeP(SjAt;?Q-{@R@2gK12$Qla2EL#>Ty_Q}}rF07cQ zI;5?hE8Lz>r<*1G0WB1Ms8>`Z1aV;GcOildXk@ANv28YTmkQywWk+DRRdqzPokU$2k<)HAuYS;HMIiBy;F=Ct0ed8L|Or6@MijXene8eNMpTbGd)w4j~dn4HPAzk7| zaMT#`>kedly{d)LF86>&&3tB zG%KK|pzN5h<7A5^So!>@5QSO{Ve?ULdnj9{ybdUKct-xHJ51U))A$h62olA3rgA<( zC1$=;BP(jQoJ`5j%Ul3Xj6D0r(M2?wlVRI=gz5K^cB79D-fl9RB=f298D@G;cRi1R zX5aSsR)jl^$ML$c{nDGfXm>Qk=j zxE>(tLyVjBK7`W#H6&MBCc~7eFx-@Q8WrkKXA*jSnkOK;b@r4)wklB^|L78lw35Nq zf#KV?{>&S{NR%wQrb)4HgoGo%(t`axt_jF?RvL+>{lm?Orw>0IODMHqVG%1jYfL~U z+G3deH{sLq>cBoxNd11n*_%XL*3jQFx8o5~iwrFsT6IrQ{X@vCZ!~PKY}x6{y=@#Q`|dYY(8M7g_)(D^k+#77GM6@r+6WGT~C+E z6HvyywfMoAISkej`vVAbFYl%k^BF#rE4-8oY)l0rDJTDgm{hw6NQc=MX&z#?jw^u{ zH&T4Pn!UCO#?ZS6#D#<+aLxKUPBPl#Gu%yI;O`>#u)yaZis^XF&}M9u=3L5tS9!< zPf3$MBjJsZ))XmZy|zLSm4N@9BH)7-x!He&3;>K^fs=C$(HzG|jM89}+7|F>t~789 zWnY0BHr;iHZCn5}*!%zg!odb>=BWUy0>blN!4@T!VBe_>4}dHj7ytx^;1Gh>D{zny zGA;Xzz;}6s@Dcd;2e1oJ!0PzqzYhYP<=3aQU=hG50D$O&DDp&qU;-k#dss4XpwkQn z3d6L4#2&zyWdFdTNRHH1%F1Ak0z&vz>OT=;3wVL}QbcL9um&r^%#|LN&Y}AQt`{PM zM`)?;t81GM#4m((KLl1t@IiIkPaYKTD`W=#b%_T6cpkv#O#gyeknXL>!8k>P@XuNQ z98fA^2L3ga1^^@;L`Y@-1J<%Vxo_LQ{Z=2I{a~(t;NM=<*!S>X%ftVER6YFQu3{RP zN$dZ>-;RCSupYmGZLANPP$&We`eFdEqy)@VU4-^`ofLmukzglJ>OrUt z>EERCJ@wZmW^hzkUY*0LKIB zg$j7Rln|U)$_M-_*8bln`m4bp6X0L9Y5;)uK@<@!7(fYTQl!4G?yq1KY)$9^2-Ssw z6yWtTD&QY|BUsDX9zdry_if@V=K;bbe*RJT`R@tgu>S}8w;mEL@NfDQ0KohpYJ$VR z3NQozW(57W`lw*=dN~DHFz|o3=51_`^_tmP$ z-QWGde=nUqyil$4?m_bkR^Z>6FaW^*AR2YSJ=9*o3;g>7{=Xe)DgnD!0$~$pR-n(H eF%1Az(Ew-wQCI*#UCrC%G*YzR;Lkv&sRxDHRIONK z#RrAdAy{NTFbaR%INvyb15=cNfwimS=Mw}20}}vC3Pi_CLKZ_#`c8?Q6jl2ZD5o$f z4Z(zxv$D3N%@BkY$5nRWZZ%l1iduM5R`R2>WYr2M(=^Sr1=g5wpyis>^ZJ`FrPB|L z?7+Y)i%cluGq9u(Y_iI$f948PL z#QdkZPf3)6NI?52Yu@vb|eMKr6uKQ|MvzRS$Xm@9q z?F^<$ZDb+JSzD|*#V`wg1ohElqOkXXsu@<$`N}lj7d-ZWMm}blsb7u${ z1N4H_7^RiV++p$izLN>=SH3~N)d|*WE$!EG1 zxJQ027bmqe_I>nt=2=(`T|?8K%1XbRe40#8Hvo2jfH6jqfu4MPrfD1+xjEcJY^WVPg`du>Sj`Hp|68F=C_PT4KkRkclJr#k>IDIQ{+Va2Y?45W}#Hy@P@V012!wb4= z71_;?;m$SIUUcZziv?$PikRE_nhI$`81$m@JNl3%qxMqL+tQ^+F*?@PzcGSTCv9Fp zo|JaIjE66&_AeWaq4q1v29J1Q9p)*&)H9Xp;L#BK*L~B@**)m|n!4$t6@>(X_XdIC z0Y;5D5ZZZ-55v5c3!;)Sifs-}c)K8*noQD^GIz~XI|4{ZsZ3%BgJ?t%tUfncfHRxSs|Li=DGy@H$5LtM5amgE1HTWUr5o6Ioutcf* zUD|#_3D?b};vgx|z}is*4D}RA_5hGeS1}>d-mkUL_?prwa_oY%I;8K|O^0#@0Bw2@ znlsIqGwy-e?u=)k?1Z#D-x`T)mx_J`@4TR=9a*xc1^}LiMuHd5j}%A_wmErLPHwVc z8RrBN?AmAlT2tb{oIu0nkOSFXy4n{yO_-n+iuCZv;kCst90c ze?c-U8JrH~g9gN8;g+rtAEx*NlX zU!N%=8>Xf5g!u#4-;)} z!z1R##_Fr{1K8{@5Ug-zKx!P)Ak1f^<^2R)$$4a3p*LyIps=8<4qnzOpq|l1n4AD> z>e&W@*r+9E@icBR?rfmQI{!{xtU#;;tQP3~TQq0=TBx z@X#=vS8QoMD!T^k8%aw5&{R^(0tLFjn@AABJ{O^3g7JAE#r{6ohy6UiH zZYE(V&xkXIh%^Zxm})d|9L6T(th&Gt)9+c`K8)ZP=InAixBLxY%o>d8hC=r^n=(oj7P$s6831utX_r1i8c**+*q8uZX=c7YtKNl&Nv>991-iki~;B1 zGlq<$t#$^M0WoViwZzr|ti?C&FB;(7(GS@GWb&>>s*aB@7<_$6Y^#$RZD6ww*u`#i2Y0zi5esTQKA^zRL{FJQ)lW&TtldNnDd`PlVw0+ZM(Pnt)k*D4W)sBPcLTpyd66q0^NeoD*zsDh2 zG$m@P=Qag0jd+zDo$X~9!GogrQ|Han(qt2sH-TdtE^G34&Xg-6FaBv`%YV!|9Ez81bm!M`3yPlOmmXvbngAb^NI+3gGtXHu3Sc@(U=cStOL z!9FQk`jb?gA^jJe;UtK9nayN)CYJOFxkiS3vpRzk!cSCknWFIWKgstwUz-oHkA(W9 zj0ffBwc0EgR;MEI$M~R|fA3&GgPS{nZbk;|XSQe3MG!k41fJ>ETwFM)B#9U0@e7&4 ztEe%oh=A>ZOD*!6+l|qXC-0)B}lDm{5$J=J{j-b4ngd|N8?@3aK zx>_3J8x?)uR-|;Kv7R?(nc*bykioLceVq^>@J-$FH-_v_3KP6zZ10v@G-yAiApre_ z>HWsLL?8vWzQlAql7vIYZAj~v>Yf$0N^9Q?Gf)m9cghkhr$S3?ck570#W3V3O*9vO zX%#b?#oGoPVF-J(X7=o7#wmERDA5Z6{^$brW4GA#xiH0t$O1xRerOIdn#~E-1XStA z)y&Oz2^GTM{vtr5N1h=xx7i&T*BTkB=nVg zw}Q)TvWrSA+SF356%ODzt@2ObjHL;QjaNhX25K@ppOi?Q_L!t^Of5YE87rr{;3j+i zQ(#b%-v{U+z`*oi{!?J&II_S~4|FrEFFsbYHCIvXrTR`pq2F>z;y>z|J1uok6ABN> zn*4%WWmy#F14m`E(i>Hwp8U24H#HzVW?Q1hoL&xKdc5xmXZ8tqxN`O>ZunWGa3yOO z7}C?3tFH*PE%jUYO^a)*~N9 zy!w9zvQ&z5%u;Z$w2!t`Wnw4BI8p{A27LLF05h z=;JHp=GU5QGbWqr>=nQa?JV94HM_9&w7*PMN(~$o0dI+g745ph0Y-O~LzsV$SVmGQ zj3{e6SKgI>BJKr`FFUfB!v(sEGM8E>j*q!C98*H8_ywJpNb(Xs^D^KrZ` z8EGR3RV5ZQw-#eGOYAC4oHm_8``kAdHt`XMGmij|fAgjYRyTlsR+kpAtQYo|X|n-? zLXw(&wWY$kXsJx9Y%h^9LbSv1*a%7nQP!1-O2OJUj||vC3lSV*py;Rp9myeZUD_@B zys^d!d7h+c=XtXe>sxGARTgv_#TnjZSIPz_^1O&MCAy6@j?{v} zZNAi0n&c9ncVymP;?5siH#9X_1#=C*BsIQ_6jO#d5x(hSC1JJ6c2KV zS75`&MaFsl?X7k3ZtFDI^JQ>LDy{G+rq>K z$sLWNFj0+aTSIl^2?-OHYB{kEVHuv>Be&nE&bqUH16>qr4^gLmI#^|#TFS#ca;3{xIp;Ijk61wpWY=&+mdEqm=q@V06BD%m zz?#6|Ne|50EGHfc{P}ug5R|cd*;LLlFMC69PG~BLy|`&4wlBZ7#Anq(QQeD#I6hU> zMpJ`}(?YfZ7?9HxGHDrz&&yNZvJa$gw~ikZoIJGDVHTxn{_vtF!NO^6bqLQJYKp`) zb5a>(#s<;5BG1ve;B=uOGPT3n{4jq}q{3}La|R+}y@_(`nTV-INvngKS#ahZ!6qY> z{AdYER5fs?H42H0N*t}tn{%YZ8s&_x`zh{(n?3<*-~_+=9XYzXk+*j(CeO7(iZvCt zC;#n{p88YRllc<0-h5-+aW)#ROs3V~Ky98IDLAjLY{00+3=pFJmv)vDc`uKfHz3R^ zo*VdTr#n<&%uGLQ(!?30Hkfd(^}2o}1;UT$+&yE3FF9XR5^tMi@OZZrhnykAbV)=-sD;O7~+;CGwZSrOF{$ror{EX7*S z+BzGgf68eb?V`AFx{~tQo+llu4fhv#_yow1eq#?&f%&c~XLM>st8kItH+BuF-U5_0 zlrsglDL~g;2K@TtZA8Rt_h%^RL#aMTV)|p(sS;n}p2gN5Mn{Ky)*bO-cY%{Dec&-r zO4sd-wOzTe$y{NFMmIZBBQyzVxzRWFyg2^3xKGRBCc2ZwSG)%ab_Ul;h(o$GzZE>h zjKLkFmQ-@+q^%ocT=`X#FQVHdUIADjfSDtFrmFcT-Mu4O7$ug>xg$WgGQXyYAn&cN zW`|qcqVFMJd0Baf6kLr^o(Dcrc~+@Q^R%1kEs*r?G@X|1GIPjH?^k{t2cD#A)QS%z zk{SmE1b(3}4oA@%gi5Oy-l?k3gGZ?iBCEOrG0RM1q^JrF4nz`XGVL{nJSuSWe9x5s zJB`p1AKm_l1i8~&3umHq$m#jz3FqY-c-%yPfXCbZ`tS`TpZXRWXY3MqC#Xc;@KdU? zEI!F1lIy0o2gTt9yoS-bW(c;ctM{6&`7wUHbmV1}rRSO8izC9Lm~DSI-<-urcNv{% z^9gp+uP{0MS=z!sT0HV{4FU+MGw`xo$0C6Kt}yUM<@|}xWgw6whE6jcDZ(njqtp{c z`msRJzwi^f=v3W0p0{bZYvCty{E^AR&uL|!PC+Z5%(1_aO~b>Q(FS#pJxYG>v1ZQ@ zVgSsTz`V8-9U{!K#&NDMGo*rX_Qw4`SuX`qUo z!n`7eKRpDzPC}sk07qkxJHzJ2LR-Krj}5 z`wsH81h#^V#SE>GWs=V&pI^>#R*uW%w81tIthCqgxwhvk|3==%$wgtLxw$+Yzp5}j zXT1rZU@eDLw}x)y3PIvpaAsJK00=m$W_$|D!L_Wwzl6*$bffD()a#FB)qe0^tlT83 z+y>n8@C_45)Q-ncZ9`GEOOS0~37=(S}I- z3$ZE~H|z;U`CvUIjbfgkY^}ncurJRjP)8hCqR$oX)~V+d=M@^VI&etzz^Ygm@WMK^ zhu0rX@s+rZO(a0PGa9MJ1LT+K70W1dx+n#^=4Tlu6)6@i6tSG zBkwGrHQxc}DVEu!;^6wEgBYvneORV2t=hCmju$HVZP6)^sWPl3B$`fOez2nj z*Dz>S6e!BxZt>Vrhr{u&NdHT?fq-5fxqsVnT9Q!?eo`~33{dso-l7Qb|Bjm+{LG|Mea*^R%3H0$YP6ql{G}C&MU(raa2egIxQDjZ$u;9;UT6m&Y$k!0?f6@mr;s}?Dp^Gp!|Ajzp49WY6Bg7}%T^5r! zcr@%K6e?Xa#|VmD86yxlpo-!Vx8A&)He>(H5sIK|b+Y4Bii0`u$jtwpNy+|XNw5J+ zkk1lL0K8W|kCbmd(T(V7SLn1JT%HcjSk$QUhw?*|+Z##ZC5cI-!<#PZqt27bu_|I# zzTL;1e=sLeykQOTM`Uc=6j8j6Ci;UAs*|lXc?GvwFeQp2!W(@IXwO{Dmc}5Zny|Jv z@nY-9p6t|Hn=)f(PhF}<++3bZ>O+xGO*@7=1u91NONRb7IuPHd!KMV5lyZc$SURPZ z+eQu6m}x;v?Ld+D0ftF~)tgq+@gudl7&U}4jIO6-w*;I}CqkHzxbt?1{mu|4yQy^Q z?}Y8IJIR7RSl!@19Ia6v!cZ(DUR|Um!J^-Bt^A}q^daGh?q-(M_Yfxo5gN&-XFicW z%`nAaxEazFBr8BU()ms2cyZk`H2u6)Zuj?BlmzHy!cz&Q3Iu>PZm~BiX!K)A+noFt z9&wIorluG4c^whc_CFiTKxw{0HJK}-TRYNFcj@Y=_-^ND!M3bF2LH?WB1mkKm82~S zOJJ`&E)xoVQv3{9VCoNfy!JC9AzB?}Off~GZ)o|-kfmjuj(6S^xWUUE^<7G2s{Dn( zUbwO_e=x#OK-f=jk>{ObFNY&9^UKSxPl$l;m5k3Wejf!sm;<`H`SL**f`~y6f(Kee zm>$f_MyV8%okF1-#1SI)B21!AR^t=U>p+NV+G-dv9P>`tqNnhdW_Gb-n!}7sm5<-5 zk+3`myX2vzDrKlK3siL^tf`;G-5ob(1-Rs#@cz?aCNn3;MW~*Xn9L^! zKXw?F>*8;2mW-v%-7V8Nj2GLJx=C?P!_VUv>B+sv>K#wUxL<6wA}j|P(&LCtCbipV zd>->2{@-|N+--|bVq5*(i%_SA36;$9W@hWlVH!Q55w;FmCyZGIyeey76QC=C1=tMz zt=k0@?^EMZCh0b@6f}Xwbrykl%KuVbdz`p2*4A_kl;J$;lIJ_s#*feRArl zT@{25zx^*@#GEX?`AL^lra*=N*qx2enYGooir@J((mL&|ga5D{zvLb|Dmb)?{)nqb zyWX#lk-yCh;-6uk-wfCS6D{}tH~+4h$^0A56IXdGF1cK;R^RrIm#@H{I>&dhac&Wf*~V-FJceL&|rL5^gFJ9)pyzat|xkW2vQYtKQi=9%M)sto*~au@>lS=+uQRunv`cdNzR6lhZ2} zL&Q~xo(kEUv4o)B>lD2P%$CB^^tm#-x9V{|o3P}^R`^iuEu_5+&~fasC<8!Udf#hb@+IC>=1>G_*@+~I z)!ur<&>Lr&v4Dst8Xhrygpe6REu%D?5Ii>&BN;^VRlC<))#1p$kNv)$4qVx*Se z+N2x2A~w#TZWj?I{J%kCcsnGwhLMU17C6WH=B*5OA!|N^ip&pN6+1)xV^{fe?v-9c z_F${u;qZXu^dc#b7=B?iOq3Ki{|P4D77x_#|K^v-Ke~&bltC*9RQkWNrXZ4mprV5E zKFg!|E|p>ig-HoM@J+Nx8ue$;|1ay<&P++z6y#k7PNIiDF!u%2Lqv-4#Dj?+=0`Ex zD=fgT4=>07r02e!%g4t?w|xm+-MrWjI|J8`Vg}i@w8-PRlb>u%${YE@IYbG3IZ*jw zd(^mv!1SKYL+bwGZH1uZCx}zl{HiLqx;m-0<_G5<9>qv-tvHzTgM9fy@kV6|4E+4b z(jS95HUdl9LeU~$Pqd8CDY4j^fdWOs&~he8jCH)~0C=)~h@@iOVLN5+U3QUp^HRhuhLfezWoz4u}h(JAukQ<^eZMx;1cff9U}rE^^Q=eP}ygNlYSt!#j>(L zK9SVwd+QZd$3GtrfwcPu{ z)4nS*8}S|~t_3Eyy?~)1!(OOZXseLNXbE_k?NTm+RyF7&Zi!=NuUuH{-H9idUmYI4 zoRhP6Ca*L`MzR|ClZIxMLhMLqB(#4l4GRw(QTgNQQ}t<7CHOBAxYNbB5fpvF|5xF! z>A&Esl49tC!2?i}&=@FzxTIFk4J;n!Q|T-&PoJ+J`xF6Q6U@H+oSsUbr5bHb6yQ1r z3srVqr8;>AE_?(XMuyLMbd>a=6rQA%ZT%$uYp6^5s!t?-PMJOllxJ+i*Itv3m=bPA zMpGF*GEMcqLEF_n1W@_-_7k&8kg>S1M4Nx|PP*e!AM!ohTuW4e?6!3^z_V{ABb8xp zRuRM16oAXHIVSv3JB44V#~CzvS9gD^QRZFfNr*}epnQa$=`|~;PKWCrehm}~!C|BSX#la?Fw!nZ)& z)*BJ%gty!}mfjcOz%d6Pv906<3F)Ktmk^E?688NAaVQZI4n3uVs0gxm3dhjQRroVp zTxyZZlNieUbKCom(Eb2Qvrg)*;c;uihPHPvtaLaC>M}3lA2{Sp33;&^nY+MEg6z5! z7mkdx#vxW$oCxuR_d>S;M(2%of{vUvTCy)irvgu@epY+n;~um<6JoYfytw=aNwXZ} z#olsxM_**xtquMNoJ-Ui3ZwjG`}nl z>#KCj9Ybuy40KMZbRA?ovgH*%#kNTX;rY~8Hf#;=wSqC&9N#WbqnDAQX~2S4ljDCo zSvnizS_h#?qo4u*1BeFB(qyjxI>PWjMN9k7y~RvwXF>z&pi5x*4?}VcG)k)4(w?y| zqJa}ZVW7TSMr%^V{}i$ll?mG<(pvdDw235LrT={2KD}S0|2VYXto{3;?842#dp39G zOUcK)U*qNaRR8Z(me=tF*A>^@CE?fmEsh|vHR3b@U&aX#C3knNv-bX3P&YHiV~DLo znN9W*yEz3|zS91)gG9DhPbkXlvbeE+=4exUFa~+Tc^)(S#+piPcQKjBZ{q&J&4#Z8 z?)<*yBDX4?9D9RV!EIhuldK=DkEs$(3oB%QPRsP_>g?i7;nbMulM!+Vg?@!i0$l@9 z<=+HXkxs*_&Lpl%7w5Lopx&617@gsMLl+oXa$NESn^cyknZLG}^{EXxu_JkEK=z zQO(Z25`tFQ0`b$Rm&_-m(W(2>mfE z?>8_#&npud3Z{=U{0NrVvji2%(g-%YVB!3G20Qa)21aENKqQJ@w;$EpobEYjxGUqF z(1RxEX%=S)6))yzwBOvJ6KHARBFbR9nt$Y%deyC?wO?{ZcakmgE(EB*W2SIN1iEO8 zUiG)Cu`5X-H%IVAhcaHTlrP2*T%#C@Z~+jpIQyh5Y21;VsVS*t)93dT<4w0h16>?$ zDi84w?C*Bp%ePR26C*I%N!zT-t*ApTzgXozSfRQW0;`Adr@O2?59zv>gozDGX0e8- zvWS?eHwxBw8Sm|f%*QvV!aLZEtc+o#ht4v?6B_{W$%vPKUZ^E|Umi?0VClz#^#1@U z5N~4kL2@d|t?5qEO_8;od2bolqe_kuM%3eUDFuo*A|#5w_+6;?^Jq zvLX!+qRk$z+|YzU*#19X6OzX7&gH%OJa7o*9%u;%|Ve#O3NjJzd0P9%9Yf=qO?%BPUSuD}Q|% zb3z$#uQL+yrVnY>cqsx0Eiyw4(cdfj_LxQTD~!qsQ@PkW#_)q@W4`5Stepl|%`4?< zE@{J=T|dskL^SDYgvN?4%lr?Ik4zy}jmfT>mLnzRAPyeIkd2d!vWA`L))=)^(iZ=2rVecZE8Sz}6uWm9CF9JxI&9d|ytOmSOAW3M_m0yhoF@n*>2U;j-ds30z#Q z^YnZ?>`#Lg8!_{Gy+7OERyfKpKDHKx9rtVV<006%*O~q*w^&gJc3Pfiy?^IuJ9B<* zEogVL3$yXDZ#w}U-<6-_%;ELjWz;#$jrUR+vX0^9DL&7}kYfbx#n|ZCFkLJx{1}LjEYz23pHs&a;B#-N=z{ zv3}-G8^n^K4%3|0;T_!E){-3n$W#)R8PV;YYPT@j2oe(rIkO$7pLHpy#0+O)nuSS; z4FUd83|?g4CFbI0r64RhB!+qe4Gnc^2MXAAl6bI{aOItyyR8BNg?cIJqohp`d#A3@ z$N{9vlhAfbcI|KQ`Qb?av}y2md7A>eOACrbI=ZLCPBHhWLtdABPzW|?{EIAs++BSr zYel#1j{(qyZ-d=12^~sGH^m9+&Tg;#T(XaNQk8lhcJyWnj+;+!xD#|9H1h;VW*BcC zPNVy1w$ntMuOil(YAa-#)M=7S+ABS7wtWCe8kc;X>QLbpPenvLnN>!V1=pamWjK>( zXCp&9syMEoBS1N3CYPs5yHYU@4D(dD{;3^z78*iTFjK`%^~&y#OofSWYL|5X#0|~DO+NtxGoN0DTb0eBkula4u1)C-7N(0V+-nscgQ?7MVU)LhY3kIrCeIe&R)vgf9(v%x9X4JpkYbc zso~J*A+telR&dHs^Lf9e=6hRxkmHP+x6p7Z4LY)`^_HC=1IqR)Yo`T7yq+5ctlW)k3&O?Me1Gh`_ z1p+-`&kqPhY~16@CH&g+3DisV=a?JU4Bda|K(3Wa_Gh}4>2wc}&ZMpW;gfV3B+q$_ z`Flzneo+c>{&9GF`xZ^iBEoGk%m}RAxl53P_&e_|wpD~XXmn)|y1&UbpU?~cJ}QD3 z5^p3}y6R*Zae=W4nGyW`$1$P}$)#aS5wJ+&O-*TyFy}q_9JiJ5IS)~+=iQd%n&FDR zP#rxB%C&3peAgfU@ju%mp;q31&1Luh?A8t*9^j;OzaYxzQh8a^XXDwT$oG6>M73mP zF_hk@(8!=2r;hYu8xE;eIe6knAzuV!V#;SQ{$x%%&pYOcr-to`zfaS{SOE}~2%XWx z9Fr71G>ZXqBMvX+$5$`ZGN82)T??ytQ&c90(RkMZV}o|V2Pq`o1kRqtq@mdyf#_h- z??4E?(Gvnfj)h)SAG^CNzZymm+;W;wFi}yRd_<+ZiMfO+{u z%uZcXENw0RkGlCjV>2@|26aKdjTOEamR8~jtF?>11*g_(f90REV7$?p5!UZKn=s04 zVP1hR39L|DfiaJ&49<3aE;ffIIvwvJNIE6li!bT_sQqzuB>WGWYeh`Wx8W96Z+R(mW?IL0SCdxG&qQGOwoeWbP|v2mG{G^12&#*8o@2IEZN zZGGx;y&#r{M|Ql?$X6*)@NI3kmyywK`>g;FJHWV`Xe~Z>=`r;(TaLOf|(9YQ?DAk&Xw}4Xe?eMC>HskdA3x z-fBj0l@KnWZPkczN%&Y<@oRF5b=QB=ck_gsfUCwWA6e1NF-nKVE8(EE(--FJhAel9 z)##sxyB(Lo4JlfgL12f|DA59}(-A)uZ{=y9d~R z76eaPL|R2U4{b#CJCk*3%>|G4*eJt)Z6ELM3@N4hqZmd`@30o$JpLX{_5fj$yKXjJNx5cBNy!Zd^e+{ zhK)uRt0ybfzwd%4t@Mo19xUmOlaA(L`k!m>o(JwresD3mPiFZ#F>{i+Z@IIrI)j++ zioIU%BZ~GjcE&5qh2t)M@r|LKlk0Vq3PxCn2gtyFNLg>}>e)-=zTuOe!`NDf@IOub zxVt+jPkQH3#!mB1-8j1=DEmO;wWipZ9mKjb?d=~s`8L^1;bTdh~bSyKc7`FWF@5$J;$`p_X#?&w4_ub5D4rye-EpRfi=F;93;L zH4V|p>SOcnq5rq{FS9Y0fBSdqk@cVX@FuJPRP2>s7ew*XL6a3$mdx`F@Ck%92`#4t z4+&B9p)OyOzVF`ks5|%r);+OMgT9F`RuTzdo478Gn%%LZtpOUZ zS#z5EwQ$Uwf1HkytghphZX#E@^#ecl=K#>}qT&$rqs41zTy`qr#|OOA#=fn0{uY23 zOM*|`AQVgBv`ooK5<975dP)YAU1WOV+SWgW*c!j)_7PMJyNQ%VPZ73_t zh=arGmnHAe0@2Wrxw_g7cp>_P&ygmMs3HHP+^2u=7Lo*2RmzgwY8EK*k6bN|9r>FfSSS~^(}t5bD$B(NJ~}{s}ND)jHd)VUA)N0=eVWQWV~&?0$nmG=F#1t z1^ZpV23ZZ1eyl9>7L=#{753SMOsG-*t6vQ?&a@iqvpfK$S6=fe_rw$zn&|tnacawo zEHkx})|r$L4?(r%Wa3Awz{&w2_z;*m6>KRl-DU4@l+#0evVTAjQu5mv>`HXa&8xrY zZmAEl@}x`~57cVGCTK5@fG^&_&N8fC_q%%rEDveEg9gzT+HGQ(>03fwQ5Z zBE635=Pi*h1Qz{IryYoAO40Ri-_X*m+}zaMCMTW<4SK$D4(Wv=r=>B#T+N}LBDnA0 zvo0nzW}cN-#uQmnr==|Zf_kz|2OoEoCYo1S!ZOka-Mb32J91P-RTgry0A=E4N2Lr1 z1u&`!-JHzlO4`kH1)guPc=9MNva-qSP*5$sZ zr=_~yQRG4*Mt2ELeHuLd z&v*HAVMEXZi`P$MEa<7 z(|S6|)#k>$B--)Iq|b(Cu{PczD}U>(ys~Yfzh*2Hc68ifhY@N(A~gk>UZel7AD*?| z^CvmVI|G#*=G8GiFXtAjoMfbNDOKYa3uxiwL=ZwM1Ci80$!JSuLShNzb+~UsPUkDT zYw`&wo!3MCIi5zy>-#wgOUib0L+DA(U#u6p5CxfFlc~P{YOdp$=h(L!`2KKL1D1Nt z)$f5!P^od1Zf9=?x6Pg=S79=hsXlYwK@hj`2gvXMuA`_6uW+q6W1bd9RzXu)#dsNd z0QU6tyBLfxXh7`d ztZy~cdh`dx-6t#{cni_kD#GR;O|=em9g96^rWjjKe0md3t$|+e#&Uc+P@CPY!|Kup z0?8mGA{lM}1=5#@4Ux%|{Usoc?~>=R>9M$$7^xqzUw?;Fn0bPAOL#_--3F0_J?76Y zDyH+P-JdTVxFYVkG~*p;r)Okw#U%fMKWD1bV#^){3fS@o+bW7i!9*zxwg7;Hco+x{ zf&_pshLZ&Cil?Z*6cEUCh;KBqRbZ-dXGDi1c&m$4I zvEfma6ZBO4e(=t-{~3ntmi4DHvZFgNPQO~=(`H~&aBba?hpLU5`RkT~*@*PWs zC0;^kc$ktI&(C5S=g5kidQWB5;`Z%Uk)@vMa-gq8)J~u`1#)sd=Vu~RvRkqv5F~j^ zb0tJawV(wuaX>k*BW&Zl8Pt=xU+kK3%rWu?!f|vkugEKRVjKp=!k3et_Q9qi;SDln zyS9!nre`??JNwxgaL@TzhF-$=_d@H%FzoB=jAT+1{y5DNA1h?cBPDkbhRd=PyG{HM zECU7Kcga@ZfhfUcf9Mzp^yke3d43u5aAvLb-p`Bf!KqEsT;~Fcu{?j_`n~gYQ+HaxBQR5eUX`+t1CA_)qZV{ctt&<$=|o^Pz6xl7~D zMk7^euw>azHMUxCyOW+5LJk(yLV7@vv24Tu0oX>iZ7-D-F}9B5m|fcR_@lSF1NT0a z$Vd;^AHg9hH}kJCon}gZCa)z4=|Z#F?T8AkN~qfD3T1RL;v``5ZzQE{Z5)CP5y$G2 z(m=nM=z3AyOu182dCekLVh`G~;_Iv|hMVzn&h(R~&NoLp(@>i&a5h{_!PF4#GJP|F z!?wGFW6o@da+lTT5wvQ`6w?^=BKsSt{8#DfwmHY**w#a`>-R(0+V}OkmMMA4$W`Tv zzo}t=>x-c@HI<5!h)8IAMs2ux;H6XN7uzwrp60dnw0|NIACaHclIkCZ$^_+J9a(~V zI~k3F+GXMksOf(%F1se=z42mxYh+OcGSJg?N-}ToGf2VEFYlpMCx;iY=xJpXDAs94 zqI}|1zvXjdFYL*JabTal2TBdQAPyT_^3gT7X2;U`bgPsKVYOpgwhqqd=VXs%s!Pv| zZYljP$dRA&2+uYSKe5oszVKI8AT_#wrt=>4pUrZpz|`Z2dQLM7oE=s) zFpdI)9{JITg=4~W)%RM=*on546dx&sxVTGjIX^L`2E{lr<4C)|KqVBS8~x*JCr8mMh~M%) zVHDyX-6)x8dR_;ri>9>TjYYc&INKhSBhBd*0Lq!Rdkly9LVwC#GX+$DH|sx`Fo{mURAv0remLu4A70tFX`*JxyRt zEQK-O72?xL$p2^lgM{vHco%re|Ct_dxTnWQ|4a{5sQ-UAmK1@Gku<2r0Mvl<#Z$xn z>M`Zu*|aBGZ4NAIj3vrzbDv*l4HQn&CxRi$ETpGf8oeAh&)7^iGiQfM@&2hF5Gg^Y zrqoFtxdyw*D*D^n3KLoMMpSI@jbHI5-`~NUW0Tb8ufpB9L(fb1Q}@2#^4pflw7@fC zfE(wy{zapZ}in4g%cLh(X~aasEh*)t}2*ICS>L|R06b`NR!``=@w@nAGiVhBN;OYk!fJnTs=R%Qg3*@;tdrg@mP zwk|rN#t-8WtICZbm=xE(vE5CVl~75StnQ>n;po&cIS>MmE$)13hUJN>a^op@j7~v2 z(?$h(TTU}T6SrSX38+U>qq*w^epY@*nx$h|JxX$=JV7MkxyqXlaPc>NgPz~00q=Lqe5Iz>ibrlYOykY3-h}kSz_YlzZDjm+~ZFv>w^)zun7Wt8`j7B{FSIaxV5Ra&G)rrw=UJXVbadaCc#()wuM~- zTQ#I}8(~;n;5efr$*|@o557r9D)4KYA?BzlG=L>FhWIw9y)E^523ndYp}u@E$9-!; zUrpj}Z9v8sFs|^?5VyZPbi(P@DhzAAZXSl=2SSw{zit4+paxHWQSy4QHLsmxB0qaK zn;nvpeVJ0n_VWx?;%p2(d}|rvEx$+;+geGXven7C)%Xid81wV36S6nphmvgHLP;V< zvOa1VvbBD>szjVo$r6d^_=xyDu;`8FDA>eWrOT7LWrfW9-h<*DRMbU>;oeA8V z@n%KBKq}OKq7D~rLTj_nUfwEFSeG?@905bVml=C-#W>n9%ex}p;fRLw4~jPB`Z4+M z6IKotnDU(YqU_-Aji_KxsE6A0;3*?NOg&BVmU=c(f>D`uEgieSnxQKFjiBXtL9!n< zO0sO+9X|lpM+biVOS9!RIBfy!iJZ)9T&9#hK*`~64!_)}xa;nB+?Ba}JX(x1T;T>u zI}_-0+wkbD*ig|2zswmfF_uLm4Cjmyd%???d$i17s5Bi0*F(ZvRIp0z^*r}^28R0g zEDBT%_eAa1eqZ+UWP|%)1+RZ^3+Wgo_czHfM+F^*GKXD8J?#-NT>g0j*l%_zYemSMGgUO(jxeh zQG7&g>p2;anPqdm2lvr^j*@*a0PwH6B=2jYa;OZwqb$mrC4p$4F3!j}MQpf!H<7N< zW}QC21LR{-G=6&LC;i60dr(sEEti^O5J9YTE=smt52CPiDNAgK5{8V;|jH_`TwA25$64 zsZKHzVTYmb?InX@6gO@OpWBATmJ-h67Rxai)S5%i z-(rgxCc1qdx0&0OKMs05%Al0)faiJ42gNDb1Z6Ze{53p^g?CRkjab|L$N>8hH%lct zDERSY2{jwbz&fhIulHMkjCSk>z_2<=qcT4um!GgH2_DViD04QC7Jc zLVBF3B~GcLPm_`X*azP1&bx-ce^AHxbxGfeb+qyl4!HJeEQ4kycpFho!-hLIJeTpgsu%Ug*K1rmkDw>Tgs+l)@7$iMW?bakK1-B=tR&rsh z{ro~OU6{ao<9OF29TKpNwJ#d@;eg?t=~k2kv2lX=#Je=ddz42}fM8~vUs%J;w7MF9 zB#k@gD^VMwE(2%sjAitu2$ba&Y<0(xA-PCur3_9{X^qY+u!mf;6>vb)I{vGik0R^CyjF02C*cx-|nuyxzsPF7W#hJSuqvJaZ>N2t3yC1n2eQRDib{_B?#Z6r zlC*&4upQkglB-6{m%BuS&Xl%3KhuEL{pRu86z#0;(F#%GeRNH#kf1JhQ~rwNn}%Tul9{e~Kecxx0%fOUzr)h+>;oS0+Umz|jjvTy8>*uJUe~3qu2?0@ z?Hh_JlHZJ>dtQWG027W+m!pVP=bo&C%slb+uVBq!MkUA~8EOYN%%iv>c!>4bKa26U z4!C2=!9GUjTUpRHI3ik19ZMUjf;+$uLPfCgPPyUB=z~2xpr-$@2^oBRKK&iv`HWi6fRJK z1z}B16$1B=#dSX%h2=D-kWL81L4nFMoP9qLF2T?ydne4(s$M>T!c))FV5h08M0jjw4Ro-!j&)EmBTNY6@0`rNL?d^KlrKE z{Y7MMyUGfFD_^?544a~3{=+Q0Mf*a~=5SzO)M!aJW(Gi-P5~0M)@sN^3xYt#9g9PhZuo(2rbCCTyJ5B)qd%Fspl~f_ocDM zkOIdIh?E;R%nnJ#T#NZy^-;BE*fiANY7hd2R+uV_c3qDImP6&3j*_-V=4&ORh?KcE zhV7Wte&|yp3$-prWy2oTCIZO)7?bLU-+l|A{UUPe=e^KwWTlHpV z|KLSkpxpSaXeA?OPXx3r%X0%ac`A^ptQ-l<{vGrzbv>I@4kdxft#ND#mr*QW3ReX3 zDO;=d*_(!|f4FL$#0mL1ToWidl)O|S_mi9mELAQ#S-D7+a2+=an87R;9t|U~1&sgF z{`AZ#ZsOL+=sb67R?kPPVBrpoln5q1;_yX>Yl#3;3$mekh_XV=g`LVN$408Oz z1ZU^F@kv7gMcyAWTE+yQfcY<&di4?0cm*n;*9%@1EpokzV0@q;wwpkNB5FZJQPis_zP(<> z*Y$-8O7H)h*-f&^rqti9z;ySGH-GM0_xhSXEp|vx z$7{khvHqI+nwXIqN+dNiVWdMTBd%jTqbGGOt7CIe%Z6fudhAd(m&(?J`?X|Nudf*z z2&J^4P(sk?Yie2@TXPv;GwX`@{kdck3)w*}v>LB^dLWV3^-Ll?fYrl#CX2JMzOLbt zhIOI1ez@k13Ne$~V}Il_F@19)sWUA%G6RhR87-dF8;@kPp&>ofxW#(iW50E2iL^{k zruo-thqcC}mL6!_(RZC5Gi7o!IaAnYS{U3HncVL&1rr-;uVR`vx!RW0vRRo_Cf|T= z?#vh_h=9d*!=_OathH%m^;j;GFozqb!))-9m*%KcL35dwo_`%yruj^Ba8MhRWlPL- z!Hgp&cR{?8d@3!VDyBuVLCLg`sRCppM$9rM6jLOc*3HJ=T@eskM1Gadqw|@(Q+H&# zfXQVVy}LSRpmhRmDP5@25(<=}b;?x3R@ELSvS<~^-?{BRH~x}*vjT4VKfSwjXO1S5JtS1$pMDo zKfzKViZV@w2WxBS5|vidrA(DG_ho7VOQvCadwpmlj7oiH~}6K}#Rz0^XjDm7D^t=64dMt@J6Ug{78nrX95v|CH*UfOD} z!CvnD4cBRzn3AY}j{t7l}2!l*%;-aeJ~ z(tcQ9OMfPfBfaTEY2!$G$B=M%cn!ltuAze-z+8*B0fqWtH=B4U2U?*)BL)A9Lu3U&_dR@SWD*g+6IMgzzK0Z8_OgL`l&4E3~!(} z3O;Wv#<6vJOD3ZYBL@Ek+SRgx7p4^@+ARihq?Bb4yoqjB>CJS@OkG+|5TBw^ncf2B zO@C6@s$~Zuu1vQftJ_x1whr5@!ciinkX_mkj(aP;O*qNF&LD(snf?s|SPFqlEecNM zw#`T;?PLxjchWmlx`Y0m$sa5aWBcs8RJxtsEoxC@2G<3U_o#F$y_c!!wSr-JtKM&9 z>~QYM^%eGIx|?ZB@GMSiV{e!aF+;fpet+&!>3#Gc#iVH2uG7>rTAxU6|H-5z#G7ek zgj7=%)LB@EdOk?^R?r9NLq#ej`!d~+Y=-utTR&=A;f>H8p^sG1hv}oJ6KQL?w4M~a z$4eil2L#+FnCf3sU-qNN)J$;xApA9@4fpAI&zL(39$q#XgPl*&!zw*QpJtLmA%BHV zGKF6AxR!nhSja~*jfwy`SDini(ilAot%O4Ru4z6{r_g8clG02R*Q}Qw7u?j*DU^n6 zt}k0~@9JP@*=+q;dQw1t4w=_Tmq@$!9817!ifR*_qF)^Q1v)KM_7u~ae;!|^FCv>2 z*cE=!l7WO52hV|*QZBwsez`hNge4=;oAI=%FD zdQRx-8^V`6XH)051jv7(Nj1_fg*498TF!I+S#G~W&kJt9ivnSBE10!-eF52PIqHHa z=WwU?L{`LK+)F>OOWY5UstXvQ0|Md4#s1LZr=^J5k;#aF`>9Gl6Q#2vW`CqjG@{w< z`mmRNE*h#k=zo~bn=VRgE|H9j`uj^19|XX!RC-agCT`Jxr%^*gWyPO`3?%(6{Z5eh zU*r$dus6N*2hqs9NPmQ}&?6u%7S-#eKhsBqW?r(i4mA!XbrZeAUv2aL4V)w~TbP4Z z{(vE0p}z|&{R1)@>29OY7k_x^jL`5y5Q64gbc*KaNXNY_iJsyic9gcHR_T=4Rp?wM znyTpqVRC1Kmt|H|cC$w)6pFt5T)bmOHkfQL*o&&bbC_OtZa6Z}Lqdp5E69ZcdnYgO z@O-W;HqNC0GFPcwEpjzCD}3H8IZ?z4V}Ph*3=pI+h6cw_ZhBi;NPp9_mi>}k&Py4i z#T|^%qN;`1#!TVNCT`HZyao=2g-d4S-HFn)hA$Hk zm>VvfQaaHP3}{I!;D0-g#`J=<)-f%%Sq-2N22#1CnShH2?AD_};jqf zHjp+vJwUgUwT=zAlEaVR$=GX{}G?H!w2dLz3JZrRn+9_cvP z+tab@;MN^o9bRrhYsZ_ob)s=@5RG$#)i`szJ!2N^GYr=}r+*XxrElgfA~v>y?DR7g z-Ub_kte!sX<%kW4*=0fD{3#<1?_gRMEFHsU89n$)3>dtNDOg4^lMW_GY(*F)k?450 zeFb1g|J0zraN3!*)BMoOSMeT|d--ZKgJsT(7y|?1fW4yV?6vvZukt=VAZFg9h(NgD zL6Pp78Iwy*8GjOmYmbhjnEgcq#eML4k!Dtw)yMSgWS^<49Ai{IHypn|f$Cb4kER{f zX2Ik#nw^k%kP{xDW0F~12B{r`SklnqGAGMBV>zlaqa&G%8U2WnIkY>G(hZSLxYNr+ ze7%PaMuT}Ccs&d$W?H2#IE$?1dVV%Jr*euhF|7%flYiQ_(S|a(owo9h3Uv7V`DKth z(^(TEsm!l0onR&$PBRBZK~D8qj`qfxE;Y@;tP|g)@{Npf>cCkUK8rERZkF&;IO!&p z-@rGc1&Jp_YuT5xo5i`)Zi4t2zeSkkRv4*K;oFf8Fu9tYc1Pvqx7p7@4>qC zY*ri4+Yh`+5Zu=)YSsPxVShn$q*(3H-48alCI&jwrfww&%s%e8 z#ev8a7P*h}0|E!rjyu?Ck%7G)RQY54km#PC6u%x8EfjLW{Hf+^)v~BrCq+ItI1gLw z+_hs{N84_N$EHDA_f-6-4LJ_T8xlh{_G9+i4MnPed z8ce00RxTt8)XMIa&4#uWzNqrk{3Y8ftScPUkCKtKaIeG9@K;ol`KvH$Lo#+q;jh7( zsY7v$@m_w;&ij}@DiY}OGw39Y4BC%x*?;R8I?kV@xGR@7kte6L5#Pa#)Mn(8ajP|m zWpsF4V92^_3&e}m0{uoNAk-cZ1_&sOabq61Zt2S!$(*U%mVLpxROIig{JiKpl(d#M zL{_#M>}_8D5&u}!=AXDo{F&Ff$wBaP#lCy%!jJZNKGs6)`Dbmesq{Tky z{(=9f^6&XiOdI|mekwDjlLgkDLR-?v>Q{>Ey5#U=cEIV@h8W$fcJ;6PHZZ`w7vG*6ljw~`hVXUxJ^2P-%ts8Ud)ADsO>DJaznbPOv?VX=lnOPthl z>DVCJa=XJ9_EMyJVIg1^GJnyE*J#ZPxk+k}8igJ(<@n0ngv-(z1*4wzJ)%oD2MtKN zsSM?PGbm3zE2H;|JJCj)0uH@QYEr2}T3d2sQ3@qX>yacA>BGh$B%t+WM$Fl-mP>{* zX@hjRDupEsNv@cPMXz*)2#6|a6H~`z>P(6+XS#JqZmTs=RC8ck%YUvwB3)dbS~>$O zS7cW>VRftuz+b;#UKpon6})a;EUfFu_^+IY#?WUTv4Pe zarC5?Fscqh7Z}L{_J1WLgzsTmb@ppTgoAOUm;(_+y(lr#RZR7T>Kd3F^6UyF)H*rv zS|bt;!g#f@4Y>|Wam^vc-a#f*eCO z7oToXgT?htcP`bZXLbu7=pu5FY?W8U94Yw6l1}7#3BM|cl!cY9Jk85fb)FXI>7r;P zPb({H^VE1;exYuRE_;MFFhxeFa?dz5N4x6sv}u&u>m#e`itk(SZ(C)gvO7<^MyWSX zSKEIh?N~B+d00)kUL@%2v6>aDdx|SLtQ-+5 z(aK=}R=)luy=jb&jnl2suydSlkA_ar+w=6!QMzlCj*rv(qG4Ca?;NG~KSK90h24Jl zBlIz*<9yoh62Cvm^aMzUM${o;Xf^pvh3q z=l$}*JUyMKuZCSCXCA=**R1^pu|K~#Pv2}3fYku~whdbCa$alw`h1?gCyH8K^ zKp;6MLH)9O5^U$g^rO3J5rBVU0lP=2Vw`>!9i{(16#^O{!wRJKD|!0GajFuu#P1?+ z^FsyNVSkT+@>oze`(5MoV$|#DIse!^Kuv^ zv_R1F@sd1Wv}feZbAC${zwD@1gfz1A+JdRA?N9ri(U3TDWo1n0iRbP)!F6Jx;W+j9 z;egFyS7i+A(XiX%VYTxn;S=`DrOpr0dBW}R=E(C}FoUQWA$^?JM}53ulrKMJ|J*2k zK7Y(@dwkq6#+^9pG*yexf=Djl_}!47LO$L;#@(~*&a+lrpdvyu6cw*^KHfRXJ!2e& z3}V6WDp}!u(Qe3Cc|D@3C>?$@jPf;k){Z-#8s}IvT0hRqqN5xi<$)7?sB4^401wrl z;4CaL#zzj0@(ttshG-WeZ=7!gNmtz{zkfM2%C`VM+I@m=6ZB~l820g7^ZfQ`lYEbG z?74n-wXJhuJ0IUs+*2WwJVJB)Zb!9jStb+(nK6E6p6?1PK7Q{QzdsuG`0?`tdA={t z9~tM5!H=9xN}fMit$?Rb&0n79Ph0LKKWMvISQhqEPVguQLA6#MP=Ecd zuxA8rf|WI-xU#3szqWe z>;0a(DTJOZB~6i2Ttd)hMT_R4dE`*OI-!_ZH*C(*C z9qrEZH}9s^Az@FNgU7e6loA-{=YOLDxBj4yzb8VEe^A8x;VJIsFv9GoRs6G*kAHql zTkGPm?3bUS-oola*Sqeat>gTQs1;u?)`Npz<@tA(BmFtr{S+-lq=UvQ_`86fJ~k%t z2&vosa`y-?M2hN$ea}3!eS|%J`80i}E-yLZKG1^X0fu$_D^FnDw?(b5UQJ3>E zS`u~C_l!wP^HN|`S~e!F#L1u@%1f)UTM>;oe9|R7KIu}dufvLrl~p~Aw~c%9Qp=}= z-mK;Ajyiy~ts0ZI2$juXo`1Vf6?F{b_@qwDI6u!z5uem8tn4XK`KnM+TN7x0^`KAM zX{SY>v}+P}0>Cp1z;*%QlXkBfmG+#P!f`z~juttdCdt0yx`hnPYfe!WI)=H5SGtxK z({c(*ea;7+C*^0QxO2>T+Il|Y{H}PqtK5s-M~U34+^enUT6frbZhv%dww{~ao$f(A zBkmp6bGQ2%>)GcXw4QHvACp`0Jm$XBf`6y`F7cFGFQ|_^zz4CzdyiUGJJkiJW zI(bk`_9a(0PskEpn_NzoVAUcQnyrM;l$>*hxzqgS6C< zrVAanP{45;UF7%%)i_?FWljezcgnQFIgeiFtfZCBAO)TERO`HyRyo&FowJ4NomW%H zd4L+6F=})kql=yQ(Q4-it#Lj`mpH#mmpWgf%bc%J6GrZ}u3hD{&K08du8S$`>ZA>> z9dx-XMa{0mw9z$8SGe9wn_Lf4i@S;Gfd{H}O(sc zKrycgS$_#R1wX0icQwc94tvyya8J7_iSkRWok$f46`*TsDBbDpwLtNrqnEG8-Ir6ou2E2f_VZH z!ltvz;Dbz`*5vHQtfxAT!Lb_VqefursK^e7bMCaH6$zPf1+^OLSiM5x+Ks3=-h%XU z66Qk#3u~lEa|~i30bk9b3lH6!QAHvaVKHkvj+}3>H>zk7P#rtHO2-MTpbkp}=H@-Y zF@IWQ==^LD=cSdPjHE!>@hvj2=j%8b%Xsz_GS^D56dlXcL#GK$B4?L(C+tYlF;^K* zuZ|UI?@kw}JbX$h_yk=@BN#Ljl#vT5C&M*I%%K10#Su2o%g`1E8j4*jKB?ghoGEbZ zQEpOj7FnBKc!nLN0G!PU*^X6XV4`D7!hbQN3RY9(%sAca@`GltA}bxT)ik1H!5XYB zLI=*JJKkehk!0LFi{fB}DP>CYCCqsUu(tCFDe?$Zu%42xj|U=z2<7=wi4OTw=+bZj zE~H}&5db^nMR)obgOogUj4cr(ksuXgl2#6q2_|~@c7^i?E#GBUV39GosMgVIEPrll z?np*;Y-Eo%fNrVQV>2k5POw*CcHVT&LJWHmgUyH6M_!nlNp?a|QWCQ#NFMQDW8lf;sm1?$FR!6o=K>$^02 z8dA#gc-)ZU6?{g+<%|PvBNQ5U9Df-Q;#>7Oe4f``K{+ti76n(*d037~VYDfUD#lpb zni(fMuELj!@kLxs4jnqL;2KH_s;}+lW=F?Yu&fx@;yMDym>l>j=JLP|6vv1i4x6NC zdcHfKB0%?BN$ zjrZYx-uUBm(MaRxjj@$Qz?#n3%XpD7%RuqWbW)B70MGJctpN@(_8O)p}a8 zr^k$&q1C1#>(#?_PT9HESYI*&C)w#ovb8Q_aLy71kL5WiSxA1O;c+}6P`Gx@O5YL{ zPYTqIF3gc}*i!VghDWi7ap>T-v`LxypK92JpV1W|DWNv%{B%6WA%EM2pOe~P#7@x2 zFSr@lgzs*2f8RS$zq72S#6DgqtK*%v73^JHo^F%-^JgH@Hf0Swl+$+3jRq3Id+@fPt}6n0HX%w%E)Wb2l$tU z_wjFXuiuJ=?EZv`|4^i;A$ANaMqoWX*SD5lBi>RH2Y#TrQ269ka+@d2L0JYY&`u$+}#9;ioa)kV3e(8Lrm zm8uDumUGSM5`X7(v$^+A7hX}xo2HK`WF$0dI1W2MQxmgfKRrJ&Kc))$^7P1Afu(uU zXx(9Reym{9TrK93Y%z}&EE$t0l;3o%6>%&9c;irPMAS;~Ykx7pfIyc`EM&DL*fHD9e%b4a z#j?E+)M{6bYG0jeRI(4lg*B3(nK?tzL{C{Fhf%=4x1!2QkUdrO zoU=kzR4?RQgDU)49Wr1v(MT`I934x?KtayLvYgJa_3WI9Qwg?4ceG~XV}^3pP#0g& zLN9A-=6@MZ+mq35Groo+M7UH)O&>)Tg_BG8Jq8ffGnC$9lF~~|QhK=oaMAiQOraO| z3gT*MzlZ3o+Q9nt-hv&dsM~>Q^*d1M+kqM0!X213ggN(t|4LAex#@j{+es%$cVAaK zg86~A+CfZ9VZjLM0<~R3sF&=*6pk-#rhh4%IDdqtgQ!g5)U9Z$OQB^e8fZ@i{VD?~ ztQw95I*~GbFsTwFW1Y9@4#%YTCOh+_$NrCi@lnczP`|Tg)RmTyz15bs#kpgUlvGz zTraQ{$MM(K1RkM~_%*Ws8ypa?)>XQ72;0fcbSzT1Z5VfU4jg!z?DGs_AccE;US$~f zvSEYd#sFULEHCohj_16}lh{))R|Wiv6o031fKwRa=su8@xYMtWNUdJgtNAiV;Y+Vv zn6r}3fdVpuU4iwy(b*l4^9ccQqZiH7r8DBG#A|>{N?Jlk2|v|K!3j( zQrJB?i6Atd4)_cBfJ^^8jKAEEf28nX=|?FJwr2n@NS6zJWx_>%iS`ju5b*58`+SOBLjXB7y+ZC(6D1%EU>Tv!!_~rl-SA;yiIOweELIdJi?eOb79Rq>oY4$8-;#m4EbQ?3460 z?3eUSY9E+>NVS(J)mTl^2~@tAR*E^2R*MrQJz1=lG%EVUtKt-Kk+@3ItHrgFUN5#w zdb1do^dYfV(!Jt&u^$jGikBq6U%bWCb&cyr_XM$A(jw8~+U~kl@=Te(&2^{bnKD1% z8k9U!=7(GlN}eh6J6(@Ro_{IxkGYOo?}wxGR{Klz0Nn(+NB`ppt-B;7kJGPPnlS1@z=Eq<5wVR}u){02Ox; zsD1=ZEJrbctS-WsAflM)T82rkHJI$W041&Giw?@^X;zIEZC0p>fBNss+h>AIApa) z#`0OLH#W958eWTf?n4PepnREhO+ZIVlfZIfLO(RJrOAK4Gcrxd_$RT=q}EH{`7pm& z5yJvgH?k*vE#uHXZ{ARl6*0XkrYW%bH|gUK?As5mHLYz!l)Iw)g2uVw^>5BZf)=cdR% zGlXhRaaAqN8P0;k!33{!+%2HM0aVtmuU{~={*39`GiINF0a_SX6g~k^O9u!*OX|1I7l54DMPj#91L)i(VEV- z##+->e!|FUu3?$+yp_>0ZtFQ+b979OYfd~puBT5qg}l?6$Z9!9kF`#W#q-)k+~7S% zySlcex9^0ky{oc5Tgc@w;EZeWZRqOem|^O=ZJ1*iJ+0dg&cgVvjvXDl;u-yP>k|PI ze}a?|t6-<~`;D9~Xq{z`b&lCuCZ~6vv9*Z_-R>MP9aqcc{Nxq1>ZEpB>&$89Sm%M! zlX}|qQ@x=2oHaJ4+k)07YphSo$=!ki8S9Lhv$Tw$jkN^(%hM2Dr=Lyd3XXAF>eZ7@ z>yEQuGc|e2z152i)75QL%XMZU*qO7^f2VNa&b>=6$L96-7^dOw5%h5Q7W&>&!&;LE zHFvznarFFX4$Iq*2=av6j|6E2ty0KOje>T6AA0+#S)tX`7^EOAZy+D72~vO>`0KVH zDYT5g*1?^cT(x=Y)~$lZYF@DH(A`PtOvCEr!^%DB+7Xvgv%CEki#M0sK87j#e|AiF z`*ND&2x<!(&YL_cddt|JZhP>?oLn?jrDE-u8Jhw}aZEJFSKW$fN2fJ^Xf8q2SHk7dJ$sp}4Y1sv>wG1HL5>74*j@^8lU353E zPY7BuUq?UPBgk(!d-)42WYjZn#(~NPFpih5G3ML0i5@1o>$|(5CPkB2tFaphEj7Dah*>kLeOL z13?<118ly7i0UQHSGJl1<5+6`|7*Kp90|0u#|PRMTO>$_=rF6o1duaE1N2tL3G{8R zVT@kOa-pU+u^)L-1?atC9 zYw{Sx(>cr0gY*NO9~^oD;u)zgHUvxc2I=ke4wn7Fiq=&(?kyO(3}=ORDs-NK(l{qE zfYc&0#=BrT*LqMte_L9!2(hyP`)+!VLO)FJ6h7Qs*yu&8?DN$E{e}rLeq-7bVTG?6wpk_57 zA#-P&*=D9tDbV$1!p*yJ}8YlUz5?RE{WYJNc2U)3HHK>Mz;I)~VkO(roMAdAlRt{4b zOdeNWu4Zj3e~&14?SjKB=g7LRgD=)!eVM~{E}^zL7%lIkCasc*O2e}>St(Hyl3Lo# zp0o>xR1K@;i6e$%xazp;PB@9qG6Qxn8J0`lxnj4I38_RjQuWyh_KuZ>uMC_}Z9ee! zK(=J9Q3jM+a9|!yP2-ZdZnbDkb#z@iMKxT9t$o@6e*i&oKaGlW4r{{&(>3xsYB7C+ z*ZJvZ7o_)j>1ax!=jeHq871(cM5sX|4?vRG-Etw81j`vv+0!}60s`g!^V1;yN_ zKoJG=F$2tVN6pMQ$5QhuC9LRt$e1WqS639e%G~AGO_#HrpwPTxX|Gwx>$dbRbeN_Y zmVa^He|}XWe!7N;!t-RmW$Sx$dLFwX06)v6%V+31=*HB~y5)(5Av~KOe}#UP#eWTX zWs%l7&fTjOVrRw^l&0DlYBrlVzL;PYOB z?)sjn2}=GpeO{qg=y&*J)OhvzQ>X!O*WWEMf6JFZhZQIE7P486_X7pDDlh!Lpxdh5 zG=KIF6#5GLB{b*RYJoDe{!pPW(;uO7lnHQlR#0a+S=)4#%goPGxX+)^pR#NJ3|^^q zpr8I6a65zK34{M7=cvD+uk+6nyb8HVkx*nN$OY+_=$9Fxe~l`#&nh73xT25(YJmQh zfB6~l;N@5j(BBIZ2(f>}U6*`p`RQ9+ELmeg`ZmYYKhwV;7Yu_Nm~;a4ZwrRk(dY-G%!JKtj|pE&x(rf5!yMxPb5heEn5a91wogI=6UL`b7g^&v-p- z8-i{RFVJRwHz<~gpdu8pd_lrpvNEqqxMC%oBvw@(W92>lq6zA|*5Tn~)kRB_NgTLZ zv?!ukteL+o=@+*FqDW1g>CDn24TQR2{oEXOS|`>kA|y6|0`Pe1)f^+;Qvl(Ee|Sr& zX0GzB+;^$X5GmqzaR*xhkIN?DGhN7`=sN7^cF!1g42o8u0@It|d>)O<;ecqX5YVDc z{bCEYa&&hXH3llOgXP4G2hEZN?}Ef2+C@YWVG)ICu>Tp$K6MC5#VUXo#XwNRMMnd4 z>O`)SU;T`4{oW5~fRF`%AzJ2VC1LB|}hQwRIWV5Bw8O>3Rxm$Mx#E3$#)AP`Y z5ET>GF+K7Ons=3 zAJy$cycKOjR`A2y9%|&jPT{MO|28GtAT3Ah2MkuwN^s^$^tM3Wi*|h^b$ptduF>k$ z;54;FuF~4*RSLzf()!C1J`J>iHkKBN2e70b?Xqa3NOvAB(w2*)f6P#PaEk7W7HL~* z@MWr>y7{fhHQJF%PScyN@9}hbTf7^erHzpm@Ag!}SETL>q(npb*nRZ8S4`b}H98o1 zk=`um0;%55l0P-*iH$V%MrP>2!E3ZHl@yU_+CN1fffNwny;LnWvPf(q;(3vd)}hwf zgz-(OR5H?(nx==Kf9wScN9Fl-e;&G>e)U;Uh#7E5u=Na zSS~vefll;OFp&_a@Ed`>>tW-AREMXdhfc#-?}wG2#^@BR|0?|QZJ6^W>n^d`zZMU9i*&9?KZNz?v3{DK^mO@JeDUkgQb)YSx1*76o|~cfr4m^DW4Q0K zkayMAB7N{Ew#U$ikDm9zAzzB|J{M9$Mf%ALP$`-!(j_?i*`%M1k~*I7dLkp<=!h>i zQXd~_`k9coe`KNOQn1g@-H=+`fCXA;9qq);HXuE7+m7Fzv-Vm62_NkB0odymd^d3U zT}EdwW;|%SBGO-RG{4Ah+U&V^Lln2!z@CjnH*AMvXXx@p@_Al3UkBY^gXEW^NUk-EEc~;UuMa#q}Vgl^wp4Wn*O**UrTr!y$k&HFwr{5^0o`?KoMoEztX9%fBr5LHej{OMX${4`36sb>NO~RBVVbzhsPq(bx?A z&E?ckBz1*CjI`*9rf*Ku-vJ@OP}4u)CszLcC;R|PMf%sWX#7Oeze~~onVq?Tvk3mF z2YWMHeFqUDPpkt#nYqN3SR^Gwc`#ZOp3;fHe|Ay8k{@ms^`)((t1cZa9~3*$ECM)b zMyx1`#)=N>huGX;F5zK!iiB4rd{SgBf`Yx8@UvS1kgu{w#YRRu;)?&LI4;DUMX|YA z+;yTTVpqi0qIi@1?JkN$!q*sv^Y<6UyZGtts9>jK30nd@(oXYoPukV7Vnc!U8J?~H9V+y2d;=DhSn%WF&y&8JS{;0 ziFfE$x&u=;pBW7K6W%Fu%5CBry`E|oho;5h8_|$I~qR-1dx7`0aeM9!S<^Jm^0J+aC`obd`xi4Gp$3(a6bIbj-cuMM7C5nqC zp#Lqv>LXMqlH?I-^o3-pI`VuMP)i30F(QIX`3?X8cpQ^~6C9Jzn=XItP7^^ChTpNk zLMfI~K(L^=ezk>VEk@E%V`4~5NE$WPVC3I)d)O}QN7)aIF>)bXg&M`gA6|eLWjsTR zkkE#m?Cj2&_c`xO&di^`zkUN)gDG%)bo8eBNpDJPpZu1-p^$oU$0nePgomP&-mTMbvY2V zrBUG_`L^Q|g^q7?^pL`cy*OT7eY{#VT6Cy?9)%D{H-aRz=!N5wziAClOkk+EQ`#0t6-(P0WNu0ct=`K7|6=Iv={1iPxm?t-?{^nraXj<2R>@%=coL|1+52-r&(Ju5km> z<@Y}^S@?meuTW18c}({-g`Or`{*I|*q`%?j@(FIA371Q7rzb4+gt@M8yequ-uKb0A z0;}AQ@E0sn*!>>1j3I77zKcyLY+>;P#mivo6f6z)E1Y2EGRBvHQRSQZ2T)4~2` z1v~-(03MTJo>6~~&q~8U5XNUs|HN8FpFr7DD@{WymQY0y!IPjU^uF0llWjMfu$$I{ z*az_~JP96r03S-6h#s7U`S^bO%`E%*_5J|>W7uQxvf126PdpZKi6-GwF6Vr}Ws#Rk zi%JzH$cqGtThu5V(q$%GATyLpx5^!#&V_b3;AI-*q6~jjy(6AXMsj>gSsVS$&sSO# zaG3~3WYMI`AX;ToqHDB{-Xb0iPli#D;F>@Cz!-EMij|dktu!(?Dr_32RwNq3M=Qz_ zZFncD?9w^RV~w^A4F>xQu@<2gCJk@n1o8mV zBmn>bYLiiZ9g{ntLw`<5GjS4HN}-f0HVuj)Bt)pi2yN9;D%b!Ou$X$mlgUXkFqs+8 zOrR{at9|fCv=92&*FJ@|tYsg3^WERje zyvQw2Bx7zVRpD;RR2ccOu@PhR3faoczJIZ5StRhvJT*c`VV6u>2x;0SlCBHsQ7n>Y zhA$6iQU$Rd`#A*0pf5UAX^2~~X{ou@5smw(dp`Bh=~8iEXGOTu5=^n6iicrsj!XY1CclU6VjgS*G7Z(8YD?oKd7 zn)MoVhM?)~rqvc7ycaX$WXO538=;Us7(|h%yCR8yQ`Fe?@$Mbp{=&NQnI~{k9BDHgdyx5aB4V& z8;97pYp&rY(b@C4^u1-%FB4DVM==$XZs9W>Qi`Ky%f6RGsoueIc_WKEcM!= zsZzkijF|}LFs~GM=v-1aFc3dl?y((Mz@oaAC4X`x5-?ahOL%3?PG<>&D{-(~{sG3$mZG!I^ z`lqCHWOSn}?5JWosiW?}R7Hz45Z6M;|I3ZkC#9f+gJwObwvJ7+lKPKs9?F7BDWR+& zOn>!9d`TP=sY$X_md=Li)LwW?#|kR6y$vWA(*JFipp-4U)~Ha8xq;fr5){z~)) zhDiD)DQd_qKi&Bw@f_bi%RWUYN$9V(v69;c&m~qmjV%;wSgm1gXbbi$O0tW%_!C_8 zB3ge((T|6edOrs0=ZE;E{$`LQJ%u*f!o+r*z$5x55|i`<+WrAhO9u#DCi-vo0|Wp7 z_6C#jWiylKq$GcnZBG+H5XWbs&{B`m77(N=a)^C^Qd^)_K$Ity1jV$1fsl}GyS*M< z@0z#ZpC_6H8jHE-TcOH8ok&$_(dqrZ8$S3|4=skt|hN>C9-<3~{+a6@$%* zbtze+^`y*m6tmfMDYJxHJ?HS1hN9qvQKiW=4w)*+Dr35=N;rGYbOYDI`P}@%d@fmL z=i)~n5CZ;!*3e7rxvVe(QB9Xpl1|GCOI_%+UT1phon<#QwIWLmy|rgAcnAbf={Zd) zRFzVD#Z!M)GQH4GKq$+GsmsL%*AWQpwp1!JQ~UXy6{OnZ8+c#>;oX0k3MSuir|u0k zs{}^drwUb?S;`g~H3HuEa^1?rJxd$F6)!aX?5$j5TEiqjb_k4}Q$;RQlWnyn+Se6~ z9ueqYl~vhXBhVX*9|$l4qkizhP29?h{QB1J_Q`*KVLN~Fa_`l)55@)X!;Jyxg9!qI zPO13*3?JMUK(K;$1qfK)JpqO+PZS^sA@1E5APmFYdq7~wVCL49(uHDIYsWX`g8{Bj z5Ez!O>a7Bd#Nuwn95&p5ney!kDT`T zjrMPR6Wig3nn38_y7nWD7huBpkHix@;%Pja_}Um_SjHe0FufTsHh(UkcP7sD3`~&nSW}7hU#OEMs$3tlO0)2^Z z5cy(<=ON{WM;!d2D?aJqX?J|m!85M-qJuBFYuyW`Ui zz6>ia_{?WJyb4dc@CbIt!Pnra3m$dwXRz*u+l|G0iQgXR{R2=-2MAKixJd5;0006| z29sf^Q-Aw+6GasMhCUKPcr-0<&=`fbY0~hJS_-JNfL8jVDPW3#+hme1-R#EQOr8BZ3nX;ya(|=lm)4a|VE*YE_hb1E%ALj89Bbzn? zZAnQncqoubh0{_dEDIY$EiLQg8#a-y-kQfJvx-6!#;_D#PeZPzWR-JWR#P-P%5{T$ z(R^$3#^%;=f{zAHxWO1aQ7x;-`7T-E3;|6~MN+zyPdxV3$Vxo7itK3 zkKSCU^`H(lUU)HoE~>D^3peJ9uVr3%Fn>>ctzhsL$Kk>%3X+e@hH2QY2fert_j|A! ze&RsUq(mV+F9KNTAuA6u%-6Y;*g-H|+p8-Kbq$SO1^T0=sPGmq)?lpw)Ds}Z%|1!z zs_F2%C=bXp;zc8Z!f_KrYf;WNN3v>iU6qu4=C)^fC@T^t|3n1sB~o!AOht}6!+&W? z4C~4kp*Z4POe!}cd;4XbdpJ~S9LG)OJx#NEd0#zK(Wu+IgP$k9p=Zzu)hD&vRzZ z`#$gc{n{85$lZ@>PkXO0S8;1#W`03Fm2r=ytwEsmILhmBj`R&Gh(_edtfG4y`f#A| z^dCwrg;5!b(v$UvQVt&1YE|E3Fv<{6%sd&T_m2%`1+dk+i1AH=ElHiEW$~oj@V=m? zW|@Wr)v7!h-m$@!IG>?C#U!WL)JyA9&MW5np8502qAdz{3y$-A-=Ap`4BX{^;_0j9 zB_p;8NNjj;^UGgr<@cJNJQ5VH=h~8N)7|G;lSG7%Sa@^u+SzLUGvvbo-o-E}Xo>?j*^P$o$k%e_8UQ*-qphPO%xubybj8-dW1lMmDvU zo4GGv=8I4FxzK$XO;L?ZuQrP$>np`s!xv8ss-`!ddKLE7!RP}xbT29O54vYn#lC#* zhKYDSpY1{4|yLxUf?cE|ZjiZRU=UDL79W{p%57b;IxbIMX9qZSY(3YM>$e=qjB3l!f0nPOzZuIV$ zxl04H%f+1cR78)asx&QAFXlJL)v_8V;S=AN91meG4_Yq=b}W zxbkFrSWy9GU8uDh@oM)1CE?~%iJS@4mIq4Fentb%rZ*Lk(o!FJmVjit7VOlvLzMXr zFs@!^fCy%3yFgnG0l^gMt4aw`z6>L&d^32*wh~Gh_|p;snMXYg7R!2dpQxYiN4g<26pq?Y@@lY+Y$pcD-Nm|_4QGLkP+K~ySMz*1>Z zP!Bd8#R-MBisX>Q3Oo3F5k^Z)v>|6H__@Lyp40`Jk_CbwEeyEU{TsLxma58t+LmFU zuQUKT!_y}sfWQz2u%QEB5wfImF4E4Nx-!!nq9BNff$Lb4DdnX{DUjttO&Hzh0|w?f zXxQWvQD}t~2ei>4o?h#Ope2~NtE?F>)&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/kotlin/templates/kotlin-gradle-spring-boot/gradle/wrapper/gradle-wrapper.jar b/kotlin/templates/kotlin-gradle-spring-boot/gradle/wrapper/gradle-wrapper.jar index 9bbc975c742b298b441bfb90dbc124400a3751b9..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40165 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/kotlin/templates/kotlin-gradle/gradle/wrapper/gradle-wrapper.jar b/kotlin/templates/kotlin-gradle/gradle/wrapper/gradle-wrapper.jar index 9bbc975c742b298b441bfb90dbc124400a3751b9..b1b8ef56b44f16b14dc800fa8103a6d89abb526f 100644 GIT binary patch delta 40165 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 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% From eb7d2a2823e278d94c3fdd6b605577898ae8b2d5 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Wed, 8 Jul 2026 10:42:44 +0200 Subject: [PATCH 3/3] Bump gradle plugins to work with latest gradle version --- .../app/restate-app/build.gradle.kts | 4 ++-- .../app/restaurant/build.gradle.kts | 2 +- java/integrations/java-spring/build.gradle.kts | 2 +- java/patterns-use-cases/build.gradle.kts | 2 +- .../tour-of-orchestration-java/build.gradle.kts | 2 +- .../tour-of-workflows-java/build.gradle.kts | 2 +- kotlin/basics/build.gradle.kts | 3 +-- .../food-ordering/app/build.gradle.kts | 2 +- .../app/restate-app/build.gradle.kts | 2 +- .../kotlin/dev/restate/sdk/examples/AppMain.kt | 3 ++- .../restate/sdk/examples/DriverDigitalTwin.kt | 16 +++++++++++----- .../dev/restate/sdk/examples/OrderETAService.kt | 3 ++- .../dev/restate/sdk/examples/OrderWorkflow.kt | 7 ++++++- .../sdk/examples/clients/KafkaPublisher.kt | 8 ++++++-- .../sdk/examples/clients/RestaurantClient.kt | 3 ++- .../external/DriverMobileAppSimulator.kt | 3 ++- .../kotlin/dev/restate/sdk/examples/types.kt | 12 ++++++------ .../app/restaurant/build.gradle.kts | 2 +- kotlin/patterns-use-cases/build.gradle.kts | 5 ++--- .../my/example/eventenrichment/PackageTracker.kt | 2 +- .../my/example/eventtransactions/utils/stubs.kt | 4 +++- .../kotlin/my/example/sagas/BookingWorkflow.kt | 2 +- .../my/example/sagas/clients/CarRentalClient.kt | 3 +-- kotlin/templates/kotlin-gradle/build.gradle.kts | 3 +-- 24 files changed, 57 insertions(+), 40 deletions(-) diff --git a/java/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts b/java/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts index e829124f..5c9fcb88 100644 --- a/java/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts +++ b/java/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts @@ -3,8 +3,8 @@ import java.net.URI plugins { java application - id ("com.google.cloud.tools.jib") version "3.4.0" - id("com.diffplug.spotless") version "6.25.0" + id ("com.google.cloud.tools.jib") version "3.5.3" + id("com.diffplug.spotless") version "8.8.0" } repositories { diff --git a/java/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts b/java/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts index a5f9b973..d9ecc494 100644 --- a/java/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts +++ b/java/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts @@ -3,7 +3,7 @@ import java.net.URI plugins { java application - id ("com.google.cloud.tools.jib") version "3.4.0" + id ("com.google.cloud.tools.jib") version "3.5.3" } repositories { diff --git a/java/integrations/java-spring/build.gradle.kts b/java/integrations/java-spring/build.gradle.kts index cb1f858a..d8319f49 100644 --- a/java/integrations/java-spring/build.gradle.kts +++ b/java/integrations/java-spring/build.gradle.kts @@ -3,7 +3,7 @@ plugins { application id("org.springframework.boot") version "3.3.1" id("io.spring.dependency-management") version "1.1.5" - id("com.diffplug.spotless") version "6.25.0" + id("com.diffplug.spotless") version "8.8.0" } group = "dev.restate.examples" diff --git a/java/patterns-use-cases/build.gradle.kts b/java/patterns-use-cases/build.gradle.kts index 7d419319..659a3955 100644 --- a/java/patterns-use-cases/build.gradle.kts +++ b/java/patterns-use-cases/build.gradle.kts @@ -1,7 +1,7 @@ plugins { java application - id("com.diffplug.spotless") version "6.25.0" + id("com.diffplug.spotless") version "8.8.0" } repositories { diff --git a/java/tutorials/tour-of-orchestration-java/build.gradle.kts b/java/tutorials/tour-of-orchestration-java/build.gradle.kts index 18b817af..33085174 100644 --- a/java/tutorials/tour-of-orchestration-java/build.gradle.kts +++ b/java/tutorials/tour-of-orchestration-java/build.gradle.kts @@ -1,7 +1,7 @@ plugins { java application - id("com.diffplug.spotless") version "6.25.0" + id("com.diffplug.spotless") version "8.8.0" } repositories { diff --git a/java/tutorials/tour-of-workflows-java/build.gradle.kts b/java/tutorials/tour-of-workflows-java/build.gradle.kts index 0f20675a..edb6bfa7 100644 --- a/java/tutorials/tour-of-workflows-java/build.gradle.kts +++ b/java/tutorials/tour-of-workflows-java/build.gradle.kts @@ -1,7 +1,7 @@ plugins { java application - id("com.diffplug.spotless") version "6.25.0" + id("com.diffplug.spotless") version "8.8.0" } repositories { diff --git a/kotlin/basics/build.gradle.kts b/kotlin/basics/build.gradle.kts index 655ea027..8ef48800 100644 --- a/kotlin/basics/build.gradle.kts +++ b/kotlin/basics/build.gradle.kts @@ -2,8 +2,6 @@ plugins { application kotlin("jvm") version "2.4.0" kotlin("plugin.serialization") version "2.4.0" - // Restate proxy clients need non-final classes; the all-open plugin opens - // classes annotated with the Restate annotations (see allOpen block below). kotlin("plugin.allopen") version "2.4.0" } @@ -24,6 +22,7 @@ kotlin { } allOpen { + // Restate proxy clients need non-final classes. annotation("dev.restate.sdk.annotation.Service") annotation("dev.restate.sdk.annotation.VirtualObject") annotation("dev.restate.sdk.annotation.Workflow") diff --git a/kotlin/end-to-end-applications/food-ordering/app/build.gradle.kts b/kotlin/end-to-end-applications/food-ordering/app/build.gradle.kts index 8ba5ec89..74037be9 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/build.gradle.kts +++ b/kotlin/end-to-end-applications/food-ordering/app/build.gradle.kts @@ -5,7 +5,7 @@ plugins { // Restate proxy clients need non-final classes; the all-open plugin opens // classes annotated with the Restate annotations (see allOpen block below). kotlin("plugin.allopen") version "2.4.0" - id("com.diffplug.spotless") version "6.25.0" + id("com.diffplug.spotless") version "8.8.0" } subprojects { diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts b/kotlin/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts index e29e96bc..3b9d7c8d 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/build.gradle.kts @@ -1,6 +1,6 @@ plugins { application - id("com.google.cloud.tools.jib") version "3.4.0" + id("com.google.cloud.tools.jib") version "3.5.3" } repositories { diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/AppMain.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/AppMain.kt index b3b0ad3b..e905ae6c 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/AppMain.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/AppMain.kt @@ -24,5 +24,6 @@ fun main() { // external mobile app on driver's phone bind(DriverMobileAppSimulator()) - }) + } + ) } diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDigitalTwin.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDigitalTwin.kt index 02b31af2..0830a182 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDigitalTwin.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/DriverDigitalTwin.kt @@ -66,13 +66,16 @@ class DriverDigitalTwin { request.orderId, request.restaurantId, request.restaurantLocation, - request.customerLocation)) + request.customerLocation, + ), + ) // Initialize the ETA service toVirtualObject(request.orderId) .request { notifyDeliveryLocations( - DeliveryLocations(request.restaurantLocation, request.customerLocation)) + DeliveryLocations(request.restaurantLocation, request.customerLocation) + ) } .send() @@ -96,7 +99,8 @@ class DriverDigitalTwin { val currentDelivery = state.get(ASSIGNED_DELIVERY) ?: throw TerminalException( - "Driver is in status DELIVERING but there is no current delivery set.") + "Driver is in status DELIVERING but there is no current delivery set." + ) currentDelivery.notifyPickup() state.set(ASSIGNED_DELIVERY, currentDelivery) @@ -119,7 +123,8 @@ class DriverDigitalTwin { val assignedDelivery = state.get(ASSIGNED_DELIVERY) ?: throw TerminalException( - "Driver is in status DELIVERING but there is no current delivery set.") + "Driver is in status DELIVERING but there is no current delivery set." + ) // Clean up the state state.clear(ASSIGNED_DELIVERY) @@ -166,7 +171,8 @@ class DriverDigitalTwin { if (currentStatus != expectedStatus) { throw TerminalException( - "Driver status wrong. Expected $expectedStatus but was $currentStatus") + "Driver status wrong. Expected $expectedStatus but was $currentStatus" + ) } } } diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderETAService.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderETAService.kt index a20d76fb..0f5e0c8d 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderETAService.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderETAService.kt @@ -59,7 +59,8 @@ class OrderETAService { val locations = state.get(DELIVERY_LOCATIONS) ?: throw TerminalException( - "Driver is doing a delivery but there is no ongoing delivery.") + "Driver is doing a delivery but there is no ongoing delivery." + ) val isOrderPickedUp = state.get(DELIVERY_IS_PICKED_UP) != null diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderWorkflow.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderWorkflow.kt index 9a08ac5e..d6521c63 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderWorkflow.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/OrderWorkflow.kt @@ -135,6 +135,11 @@ class OrderWorkflow { virtualObject(driverId) .assignDeliveryJob( AssignDeliveryRequest( - order.orderId, order.restaurantId, restaurantLocation, customerLocation)) + order.orderId, + order.restaurantId, + restaurantLocation, + customerLocation, + ) + ) } } diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/clients/KafkaPublisher.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/clients/KafkaPublisher.kt index 483c5692..bc3cbb45 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/clients/KafkaPublisher.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/clients/KafkaPublisher.kt @@ -30,9 +30,13 @@ object KafkaPublisher { val properties = Properties() properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, KAFKA_BOOTSTRAP_SERVERS) properties.setProperty( - ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer::class.java.name) + ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, + StringSerializer::class.java.name, + ) properties.setProperty( - ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer::class.java.name) + ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, + ByteArraySerializer::class.java.name, + ) return properties } } diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/clients/RestaurantClient.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/clients/RestaurantClient.kt index 5e2cb168..89a7e790 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/clients/RestaurantClient.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/clients/RestaurantClient.kt @@ -37,7 +37,8 @@ object RestaurantClient { val response: HttpResponse<*> = httpClient.send(request, HttpResponse.BodyHandlers.discarding()) if (response.statusCode() != 200) { throw TerminalException( - "Prepare request to restaurant failed with status code: " + response.statusCode()) + "Prepare request to restaurant failed with status code: " + response.statusCode() + ) } } } diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/external/DriverMobileAppSimulator.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/external/DriverMobileAppSimulator.kt index ded95ad2..968c2988 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/external/DriverMobileAppSimulator.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/external/DriverMobileAppSimulator.kt @@ -94,7 +94,8 @@ class DriverMobileAppSimulator { getAssignedDeliveryResult.assignedDelivery.orderId, getAssignedDeliveryResult.assignedDelivery.restaurantId, getAssignedDeliveryResult.assignedDelivery.restaurantLocation, - getAssignedDeliveryResult.assignedDelivery.customerLocation) + getAssignedDeliveryResult.assignedDelivery.customerLocation, + ) state().set(ASSIGNED_DELIVERY, newAssignedDelivery) // Start moving to the delivery pickup location diff --git a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/types.kt b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/types.kt index 2c597933..7849cb97 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/types.kt +++ b/kotlin/end-to-end-applications/food-ordering/app/restate-app/src/main/kotlin/dev/restate/sdk/examples/types.kt @@ -17,7 +17,7 @@ data class AssignDeliveryRequest( val orderId: String, val restaurantId: String, val restaurantLocation: Location, - val customerLocation: Location + val customerLocation: Location, ) @Serializable @@ -27,7 +27,7 @@ data class AssignedDelivery( val restaurantId: String, val restaurantLocation: Location, val customerLocation: Location, - var isOrderPickedUp: Boolean = false + var isOrderPickedUp: Boolean = false, ) { fun notifyPickup() { isOrderPickedUp = true @@ -41,7 +41,7 @@ data class DeliveryInformation( val restaurantId: String, val restaurantLocation: Location, val customerLocation: Location, - var isOrderPickedUp: Boolean + var isOrderPickedUp: Boolean, ) { fun notifyPickup() { this.isOrderPickedUp = true @@ -60,7 +60,7 @@ data class DeliveryLocations( enum class DriverStatus { IDLE, WAITING_FOR_WORK, - DELIVERING + DELIVERING, } @Serializable data class Location(val lon: Double, val lat: Double) @@ -71,7 +71,7 @@ data class OrderRequest( val restaurantId: String, val products: List, val totalCost: Double, - val deliveryDelay: Int + val deliveryDelay: Int, ) @Serializable data class Product(val productId: String, val description: String, val quantity: Int) @@ -88,7 +88,7 @@ enum class Status { DELIVERED, REJECTED, CANCELLED, - UNKNOWN + UNKNOWN, } @Serializable data class GetAssignedDeliveryResult(val assignedDelivery: AssignedDelivery? = null) diff --git a/kotlin/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts b/kotlin/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts index 4d83ba1f..8021bef2 100644 --- a/kotlin/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts +++ b/kotlin/end-to-end-applications/food-ordering/app/restaurant/build.gradle.kts @@ -1,6 +1,6 @@ plugins { application - id("com.google.cloud.tools.jib") version "3.4.0" + id("com.google.cloud.tools.jib") version "3.5.3" } repositories { diff --git a/kotlin/patterns-use-cases/build.gradle.kts b/kotlin/patterns-use-cases/build.gradle.kts index 1473dd16..b120d1b8 100644 --- a/kotlin/patterns-use-cases/build.gradle.kts +++ b/kotlin/patterns-use-cases/build.gradle.kts @@ -2,10 +2,8 @@ plugins { application kotlin("jvm") version "2.4.0" kotlin("plugin.serialization") version "2.4.0" - // Restate proxy clients need non-final classes; the all-open plugin opens - // classes annotated with the Restate annotations (see allOpen block below). kotlin("plugin.allopen") version "2.4.0" - id("com.diffplug.spotless") version "6.25.0" + id("com.diffplug.spotless") version "8.8.0" } repositories { @@ -28,6 +26,7 @@ dependencies { kotlin { jvmToolchain(25) } allOpen { + // Restate proxy clients need non-final classes. annotation("dev.restate.sdk.annotation.Service") annotation("dev.restate.sdk.annotation.VirtualObject") annotation("dev.restate.sdk.annotation.Workflow") diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventenrichment/PackageTracker.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventenrichment/PackageTracker.kt index 5215d66f..3901bd52 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventenrichment/PackageTracker.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventenrichment/PackageTracker.kt @@ -12,7 +12,7 @@ import kotlinx.serialization.Serializable @Serializable data class PackageInfo( val finalDestination: String, - val locations: MutableList = mutableListOf() + val locations: MutableList = mutableListOf(), ) @Serializable data class LocationUpdate(val timestamp: String, val location: String) diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventtransactions/utils/stubs.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventtransactions/utils/stubs.kt index 9e725a73..366d0e3c 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventtransactions/utils/stubs.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/eventtransactions/utils/stubs.kt @@ -16,7 +16,9 @@ fun createPost(userId: String, post: UserFeed.SocialMediaPost): String { fun getPostStatus(postId: String): String { return if (Math.random() < 0.8) { logger.info( - "Content moderation for post {} is still pending... Will check again in 5 seconds", postId) + "Content moderation for post {} is still pending... Will check again in 5 seconds", + postId, + ) "PENDING" } else { logger.info("Content moderation for post {} is done", postId) diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/BookingWorkflow.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/BookingWorkflow.kt index 577904fd..ae1f73d2 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/BookingWorkflow.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/BookingWorkflow.kt @@ -22,7 +22,7 @@ data class BookingRequest( val customerId: String, val flight: FlightBookingRequest, val car: CarRentalBookingRequest, - val hotel: HotelRequest + val hotel: HotelRequest, ) /* diff --git a/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/clients/CarRentalClient.kt b/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/clients/CarRentalClient.kt index 62909953..f25b739c 100644 --- a/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/clients/CarRentalClient.kt +++ b/kotlin/patterns-use-cases/src/main/kotlin/my/example/sagas/clients/CarRentalClient.kt @@ -3,8 +3,7 @@ package my.example.sagas.clients import kotlinx.serialization.Serializable import org.apache.logging.log4j.LogManager -@Serializable -data class CarRentalBookingRequest(val pickupLocation: String, val rentalDate: String) +@Serializable data class CarRentalBookingRequest(val pickupLocation: String, val rentalDate: String) private val logger = LogManager.getLogger("CarRentals") diff --git a/kotlin/templates/kotlin-gradle/build.gradle.kts b/kotlin/templates/kotlin-gradle/build.gradle.kts index a81c269e..a9432bb4 100644 --- a/kotlin/templates/kotlin-gradle/build.gradle.kts +++ b/kotlin/templates/kotlin-gradle/build.gradle.kts @@ -2,8 +2,6 @@ plugins { application kotlin("jvm") version "2.4.0" kotlin("plugin.serialization") version "2.4.0" - // Restate proxy clients need non-final classes; the all-open plugin opens - // classes annotated with the Restate annotations (see allOpen block below). kotlin("plugin.allopen") version "2.4.0" } @@ -26,6 +24,7 @@ kotlin { } allOpen { + // Restate proxy clients need non-final classes. annotation("dev.restate.sdk.annotation.Service") annotation("dev.restate.sdk.annotation.VirtualObject") annotation("dev.restate.sdk.annotation.Workflow")