From 2ade44791e01d56411608afe18dc3bb6a7d56559 Mon Sep 17 00:00:00 2001 From: Giselle van Dongen Date: Tue, 27 Aug 2024 11:44:21 +0200 Subject: [PATCH] Java formatting --- .../eventprocessing/ProfileService.java | 1 - .../usecases/microservices/Idempotency.java | 99 ------------------- 2 files changed, 100 deletions(-) diff --git a/code_snippets/java/src/main/java/usecases/eventprocessing/ProfileService.java b/code_snippets/java/src/main/java/usecases/eventprocessing/ProfileService.java index 4c12a0cc..a7a6ed00 100644 --- a/code_snippets/java/src/main/java/usecases/eventprocessing/ProfileService.java +++ b/code_snippets/java/src/main/java/usecases/eventprocessing/ProfileService.java @@ -30,7 +30,6 @@ public void userEvent(ObjectContext ctx, String name) { ctx.set(USER, profile); // - ctx.get(USER).orElse(new UserProfile()); // ProfileServiceClient.fromContext(ctx, ctx.key()).send(Duration.ofSeconds(1)).emit(); // diff --git a/code_snippets/java/src/main/java/usecases/microservices/Idempotency.java b/code_snippets/java/src/main/java/usecases/microservices/Idempotency.java index 323db6ca..3207fb0f 100644 --- a/code_snippets/java/src/main/java/usecases/microservices/Idempotency.java +++ b/code_snippets/java/src/main/java/usecases/microservices/Idempotency.java @@ -22,102 +22,3 @@ public void reserveProduct(String productId, String reservationId) { // } - - -@Workflow -public class SignupWorkflow { - - final DurablePromiseKey EMAIL_CLICKED = - DurablePromiseKey.of("email_clicked", STRING); - - @Workflow - public boolean run(WorkflowContext ctx, User user) { - - // Persist progress: code doesn't get re-executed on retries - ctx.run(() -> createUserEntry(user)); - - String secret = ctx.random().nextUUID().toString(); - ctx.run(() -> sendEmailWithLink(user.getEmail(), secret)); - - // Wait until user clicked email verification link - // Resolved or rejected by the other handlers - String clickSecret = - ctx.promise(EMAIL_CLICKED) - .awaitable() - .await(); - return clickSecret.equals(secret); - } - - @Shared - public void click(SharedWorkflowContext ctx, String secret) { - // Durable signals and query: - // Workflow interaction via callbacks, Kafka events,... - ctx.promiseHandle(EMAIL_CLICKED).resolve(secret); - } -} - - -@VirtualObject -public class UserUpdatesService { - - @Handler - public void updateUser(ObjectContext ctx, UpdateEvent event) { - // Durable actions: result persisted and recovered on failures - String userId = ctx.run(STRING, () -> - updateUserProfile(event.getProfile())); - - // Flexible control flow: no restrictions (e.g. loops, cycles) - // Each event crafts its own recovery log - while (userId.equals("NOT_READY")) { - // Delay execution - ctx.sleep(Duration.ofMillis(5000)); - userId = ctx.run(STRING, () -> - updateUserProfile(event.getProfile())); - } - - String roleId = ctx.run(STRING, () -> - setUserPermissions(userId, event.getPermissions())); - ctx.run(() -> provisionResources( - userId, roleId, event.getResources())); - } -} - - - -@VirtualObject -public class ProfileService { - - final StateKey USER = - StateKey.of("user", UserSerde()); - - @Handler - public void userEvent(ObjectContext ctx, String name) { - // Durable actions: result persisted and recoverable - // Enrich events with data from multiple sources - UserProfile profile = ctx.run(() -> - createUserProfile(name)); - - // Persistent built-in K/V state - ctx.set(USER, profile); - - // Delay execution or schedule async actions - // Restate triggers them when the time comes - ProfileServiceClient.fromContext(ctx, name) - .send(Seconds(1)).emit(); - } - - // The same functions can be called over RPC and Kafka - @Handler - public void featureEvent(ObjectContext ctx, String email) { - UserProfile user = ctx.get(USER); - user.setEmail(email); - ctx.set(USER, user); - } - - @Handler - public void emit(ObjectContext ctx) { - UserProfile user = ctx.get(USER); - sendDownstream(user); - ctx.clearAll(); - } -} \ No newline at end of file