From 9d3a3ee85abd36a2210ded6896af757436882831 Mon Sep 17 00:00:00 2001
From: Damien MARCHAT <dmarchat@takima.fr>
Date: Thu, 13 Mar 2025 16:55:24 +0100
Subject: [PATCH] Day 1 part 2.1

---
 .../bakery/bake/BakeService.java              |  3 +++
 .../bakery/bake/BakeServiceImpl.java          |  8 ++++++
 .../bakery/batter/BatterService.java          |  3 +++
 .../bakery/batter/BatterServiceImpl.java      |  8 ++++++
 .../bakery/cookie/BestCookieWorkflow.java     | 26 ++++++++++++++++---
 5 files changed, 45 insertions(+), 3 deletions(-)
 create mode 100644 src/main/java/io/takima/temporalpractice/bakery/bake/BakeServiceImpl.java
 create mode 100644 src/main/java/io/takima/temporalpractice/bakery/batter/BatterServiceImpl.java

diff --git a/src/main/java/io/takima/temporalpractice/bakery/bake/BakeService.java b/src/main/java/io/takima/temporalpractice/bakery/bake/BakeService.java
index 66a48c3..d411a8b 100644
--- a/src/main/java/io/takima/temporalpractice/bakery/bake/BakeService.java
+++ b/src/main/java/io/takima/temporalpractice/bakery/bake/BakeService.java
@@ -1,5 +1,8 @@
 package io.takima.temporalpractice.bakery.bake;
 
+import io.temporal.activity.ActivityInterface;
+
+@ActivityInterface
 public interface BakeService {
     void bake();
 }
diff --git a/src/main/java/io/takima/temporalpractice/bakery/bake/BakeServiceImpl.java b/src/main/java/io/takima/temporalpractice/bakery/bake/BakeServiceImpl.java
new file mode 100644
index 0000000..346b162
--- /dev/null
+++ b/src/main/java/io/takima/temporalpractice/bakery/bake/BakeServiceImpl.java
@@ -0,0 +1,8 @@
+package io.takima.temporalpractice.bakery.bake;
+
+public class BakeServiceImpl implements BakeService {
+    @Override
+    public void bake() {
+        System.out.println("Baking cookies!");
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/io/takima/temporalpractice/bakery/batter/BatterService.java b/src/main/java/io/takima/temporalpractice/bakery/batter/BatterService.java
index 486e82f..2bf83ed 100644
--- a/src/main/java/io/takima/temporalpractice/bakery/batter/BatterService.java
+++ b/src/main/java/io/takima/temporalpractice/bakery/batter/BatterService.java
@@ -1,5 +1,8 @@
 package io.takima.temporalpractice.bakery.batter;
 
+import io.temporal.activity.ActivityInterface;
+
+@ActivityInterface
 public interface BatterService {
     void prepareBatter();
 }
diff --git a/src/main/java/io/takima/temporalpractice/bakery/batter/BatterServiceImpl.java b/src/main/java/io/takima/temporalpractice/bakery/batter/BatterServiceImpl.java
new file mode 100644
index 0000000..305a10a
--- /dev/null
+++ b/src/main/java/io/takima/temporalpractice/bakery/batter/BatterServiceImpl.java
@@ -0,0 +1,8 @@
+package io.takima.temporalpractice.bakery.batter;
+
+public class BatterServiceImpl implements BatterService {
+    @Override
+    public void prepareBatter() {
+        System.out.println("Mixing flour, sugar, and love...");
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/io/takima/temporalpractice/bakery/cookie/BestCookieWorkflow.java b/src/main/java/io/takima/temporalpractice/bakery/cookie/BestCookieWorkflow.java
index 76e6fec..7380234 100644
--- a/src/main/java/io/takima/temporalpractice/bakery/cookie/BestCookieWorkflow.java
+++ b/src/main/java/io/takima/temporalpractice/bakery/cookie/BestCookieWorkflow.java
@@ -1,10 +1,30 @@
 package io.takima.temporalpractice.bakery.cookie;
 
+import io.temporal.activity.ActivityOptions;
+import io.temporal.workflow.Workflow;
+import io.takima.temporalpractice.bakery.batter.BatterService;
+import io.takima.temporalpractice.bakery.bake.BakeService;
+import java.time.Duration;
+
 public class BestCookieWorkflow implements CookieWorkflow {
+    private final BatterService batterService;
+    private final BakeService bakeService;
+
+    public BestCookieWorkflow() {
+        ActivityOptions options = ActivityOptions.newBuilder()
+                .setTaskQueue("theOneAndOnlyQueue")
+                .setStartToCloseTimeout(Duration.ofSeconds(10))
+                .build();
+
+        this.batterService = Workflow.newActivityStub(BatterService.class, options);
+        this.bakeService = Workflow.newActivityStub(BakeService.class, options);
+    }
+
     @Override
     public void orderCookie() {
-        // Note: System.out.println is used here for simplicity
-        // In real applications, you should use proper Workflow-aware logging (we'll cover this in Day 2)
-        System.out.println("Cookie ordered... Yuum");
+        System.out.println("Starting to prepare your cookie!");
+        batterService.prepareBatter();
+        bakeService.bake();
+        System.out.println("Your cookie is ready!");
     }
 }
\ No newline at end of file
-- 
GitLab