From c5fc29c7d8517110fb27546de55cd55f29d40812 Mon Sep 17 00:00:00 2001 From: Javier Aliaga Date: Wed, 3 Sep 2025 10:31:14 +0200 Subject: [PATCH 1/3] chore: Use workflow and activity class when getting the logger from context Signed-off-by: Javier Aliaga --- .../workflows/runtime/DefaultWorkflowActivityContext.java | 5 +++-- .../io/dapr/workflows/runtime/DefaultWorkflowContext.java | 5 +++-- .../workflows/runtime/WorkflowActivityClassWrapper.java | 2 +- .../workflows/runtime/WorkflowActivityInstanceWrapper.java | 2 +- .../io/dapr/workflows/runtime/WorkflowClassWrapper.java | 2 +- .../io/dapr/workflows/runtime/WorkflowInstanceWrapper.java | 2 +- .../java/io/dapr/workflows/DefaultWorkflowContextTest.java | 2 +- .../runtime/DefaultWorkflowActivityContextTest.java | 7 ++++--- 8 files changed, 15 insertions(+), 12 deletions(-) diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContext.java b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContext.java index dd30dd8053..752fd018bc 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContext.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContext.java @@ -29,10 +29,11 @@ class DefaultWorkflowActivityContext implements WorkflowActivityContext { * Constructor for WorkflowActivityContext. * * @param context TaskActivityContext + * @param clazz Class to use for logger * @throws IllegalArgumentException if context is null */ - public DefaultWorkflowActivityContext(TaskActivityContext context) throws IllegalArgumentException { - this(context, LoggerFactory.getLogger(WorkflowActivityContext.class)); + public DefaultWorkflowActivityContext(TaskActivityContext context, Class clazz) throws IllegalArgumentException { + this(context, LoggerFactory.getLogger(clazz)); } /** diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java index 9fe15899a8..29ba28cbed 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java @@ -45,10 +45,11 @@ public class DefaultWorkflowContext implements WorkflowContext { * Constructor for DaprWorkflowContextImpl. * * @param context TaskOrchestrationContext + * @param clazz Class to use for logger * @throws IllegalArgumentException if context is null */ - public DefaultWorkflowContext(TaskOrchestrationContext context) throws IllegalArgumentException { - this(context, LoggerFactory.getLogger(WorkflowContext.class)); + public DefaultWorkflowContext(TaskOrchestrationContext context, Class clazz) throws IllegalArgumentException { + this(context, LoggerFactory.getLogger(clazz)); } /** diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowActivityClassWrapper.java b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowActivityClassWrapper.java index bbe97b2d12..43bd2ca203 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowActivityClassWrapper.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowActivityClassWrapper.java @@ -70,7 +70,7 @@ public TaskActivity create() { String.format("Unable to instantiate instance of activity class '%s'", this.name), e); } - result = activity.run(new DefaultWorkflowActivityContext(ctx)); + result = activity.run(new DefaultWorkflowActivityContext(ctx, activity.getClass())); return result; }; } diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowActivityInstanceWrapper.java b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowActivityInstanceWrapper.java index 973a90ef9f..09d1a9d6ca 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowActivityInstanceWrapper.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowActivityInstanceWrapper.java @@ -51,6 +51,6 @@ public String getName() { @Override public TaskActivity create() { - return ctx -> activity.run(new DefaultWorkflowActivityContext(ctx)); + return ctx -> activity.run(new DefaultWorkflowActivityContext(ctx, activity.getClass())); } } diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowClassWrapper.java b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowClassWrapper.java index 10b5248748..73b6cc8168 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowClassWrapper.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowClassWrapper.java @@ -57,7 +57,7 @@ public TaskOrchestration create() { ); } - workflow.run(new DefaultWorkflowContext(ctx)); + workflow.run(new DefaultWorkflowContext(ctx, workflow.getClass())); }; } } diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowInstanceWrapper.java b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowInstanceWrapper.java index f803c49de7..77a568a386 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowInstanceWrapper.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/WorkflowInstanceWrapper.java @@ -36,6 +36,6 @@ public String getName() { @Override public TaskOrchestration create() { - return ctx -> workflow.run(new DefaultWorkflowContext(ctx)); + return ctx -> workflow.run(new DefaultWorkflowContext(ctx, workflow.getClass())); } } diff --git a/sdk-workflows/src/test/java/io/dapr/workflows/DefaultWorkflowContextTest.java b/sdk-workflows/src/test/java/io/dapr/workflows/DefaultWorkflowContextTest.java index 837bf4c7db..4faaed8f0d 100644 --- a/sdk-workflows/src/test/java/io/dapr/workflows/DefaultWorkflowContextTest.java +++ b/sdk-workflows/src/test/java/io/dapr/workflows/DefaultWorkflowContextTest.java @@ -48,7 +48,6 @@ public class DefaultWorkflowContextTest { @BeforeEach public void setUp() { mockInnerContext = mock(TaskOrchestrationContext.class); - context = new DefaultWorkflowContext(mockInnerContext); testWorkflowContext = new WorkflowContext() { @Override public Logger getLogger() { @@ -141,6 +140,7 @@ public void setCustomStatus(Object status) { } }; + context = new DefaultWorkflowContext(mockInnerContext, testWorkflowContext.getClass()); } @Test diff --git a/sdk-workflows/src/test/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContextTest.java b/sdk-workflows/src/test/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContextTest.java index 90dfa565ca..995151fc95 100644 --- a/sdk-workflows/src/test/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContextTest.java +++ b/sdk-workflows/src/test/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContextTest.java @@ -3,6 +3,7 @@ import io.dapr.durabletask.TaskActivityContext; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.slf4j.Logger; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; @@ -15,7 +16,7 @@ class DefaultWorkflowActivityContextTest { @DisplayName("Should successfully create context and return correct values for all methods") void shouldSuccessfullyCreateContextAndReturnCorrectValuesForAllMethods() { TaskActivityContext mockInnerContext = mock(TaskActivityContext.class); - DefaultWorkflowActivityContext context = new DefaultWorkflowActivityContext(mockInnerContext); + DefaultWorkflowActivityContext context = new DefaultWorkflowActivityContext(mockInnerContext, TaskActivityContext.class); when(mockInnerContext.getName()).thenReturn("TestActivity"); when(mockInnerContext.getInput(any())).thenReturn("TestInput"); @@ -34,7 +35,7 @@ void shouldSuccessfullyCreateContextAndReturnCorrectValuesForAllMethods() { @DisplayName("Should throw IllegalArgumentException when context parameter is null") void shouldThrowIllegalArgumentExceptionWhenContextParameterIsNull() { IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> { - new DefaultWorkflowActivityContext(null); + new DefaultWorkflowActivityContext(null, TaskActivityContext.class); }); assertEquals("Context cannot be null", exception.getMessage()); } @@ -45,7 +46,7 @@ void shouldThrowIllegalArgumentExceptionWhenLoggerParameterIsNull() { TaskActivityContext mockInnerContext = mock(TaskActivityContext.class); IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> { - new DefaultWorkflowActivityContext(mockInnerContext, null); + new DefaultWorkflowActivityContext(mockInnerContext, (Logger) null); }); assertEquals("Logger cannot be null", exception.getMessage()); } From d2fd28d4491ffc2ea5b5106833218998af9f5607 Mon Sep 17 00:00:00 2001 From: Javier Aliaga Date: Wed, 3 Sep 2025 18:18:51 +0200 Subject: [PATCH 2/3] chore: Keep previous contructor for backward compatibility Signed-off-by: Javier Aliaga --- .../runtime/DefaultWorkflowActivityContext.java | 10 ++++++++++ .../dapr/workflows/runtime/DefaultWorkflowContext.java | 10 ++++++++++ .../io/dapr/workflows/DefaultWorkflowContextTest.java | 4 +++- .../runtime/DefaultWorkflowActivityContextTest.java | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContext.java b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContext.java index 752fd018bc..d6f935e8f8 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContext.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContext.java @@ -25,6 +25,16 @@ class DefaultWorkflowActivityContext implements WorkflowActivityContext { private final TaskActivityContext innerContext; private final Logger logger; + /** + * Constructor for WorkflowActivityContext. + * + * @param context TaskActivityContext + * @throws IllegalArgumentException if context is null + */ + public DefaultWorkflowActivityContext(TaskActivityContext context) throws IllegalArgumentException { + this(context, WorkflowActivityContext.class); + } + /** * Constructor for WorkflowActivityContext. * diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java index 29ba28cbed..028f87d461 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java @@ -41,6 +41,16 @@ public class DefaultWorkflowContext implements WorkflowContext { private final TaskOrchestrationContext innerContext; private final Logger logger; + /** + * Constructor for DaprWorkflowContextImpl. + * + * @param context TaskOrchestrationContext + * @throws IllegalArgumentException if context is null + */ + public DefaultWorkflowContext(TaskOrchestrationContext context) throws IllegalArgumentException { + this(context, WorkflowContext.class); + } + /** * Constructor for DaprWorkflowContextImpl. * diff --git a/sdk-workflows/src/test/java/io/dapr/workflows/DefaultWorkflowContextTest.java b/sdk-workflows/src/test/java/io/dapr/workflows/DefaultWorkflowContextTest.java index 4faaed8f0d..b573e26119 100644 --- a/sdk-workflows/src/test/java/io/dapr/workflows/DefaultWorkflowContextTest.java +++ b/sdk-workflows/src/test/java/io/dapr/workflows/DefaultWorkflowContextTest.java @@ -42,6 +42,7 @@ public class DefaultWorkflowContextTest { private DefaultWorkflowContext context; + private DefaultWorkflowContext contextWithClass; private TaskOrchestrationContext mockInnerContext; private WorkflowContext testWorkflowContext; @@ -140,7 +141,8 @@ public void setCustomStatus(Object status) { } }; - context = new DefaultWorkflowContext(mockInnerContext, testWorkflowContext.getClass()); + context = new DefaultWorkflowContext(mockInnerContext); + contextWithClass = new DefaultWorkflowContext(mockInnerContext, testWorkflowContext.getClass()); } @Test diff --git a/sdk-workflows/src/test/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContextTest.java b/sdk-workflows/src/test/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContextTest.java index 995151fc95..13cf3b6c6a 100644 --- a/sdk-workflows/src/test/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContextTest.java +++ b/sdk-workflows/src/test/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContextTest.java @@ -16,7 +16,7 @@ class DefaultWorkflowActivityContextTest { @DisplayName("Should successfully create context and return correct values for all methods") void shouldSuccessfullyCreateContextAndReturnCorrectValuesForAllMethods() { TaskActivityContext mockInnerContext = mock(TaskActivityContext.class); - DefaultWorkflowActivityContext context = new DefaultWorkflowActivityContext(mockInnerContext, TaskActivityContext.class); + DefaultWorkflowActivityContext context = new DefaultWorkflowActivityContext(mockInnerContext); when(mockInnerContext.getName()).thenReturn("TestActivity"); when(mockInnerContext.getInput(any())).thenReturn("TestInput"); From 3ea550af76de2cecf91ee5def2b0d420cc0bbe85 Mon Sep 17 00:00:00 2001 From: Javier Aliaga Date: Thu, 4 Sep 2025 08:56:20 +0200 Subject: [PATCH 3/3] chore: Fix method name Signed-off-by: Javier Aliaga --- .../io/dapr/workflows/runtime/DefaultWorkflowContext.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java index 028f87d461..067850c938 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java @@ -42,7 +42,7 @@ public class DefaultWorkflowContext implements WorkflowContext { private final Logger logger; /** - * Constructor for DaprWorkflowContextImpl. + * Constructor for DefaultWorkflowContext. * * @param context TaskOrchestrationContext * @throws IllegalArgumentException if context is null @@ -50,9 +50,9 @@ public class DefaultWorkflowContext implements WorkflowContext { public DefaultWorkflowContext(TaskOrchestrationContext context) throws IllegalArgumentException { this(context, WorkflowContext.class); } - + /** - * Constructor for DaprWorkflowContextImpl. + * Constructor for DefaultWorkflowContext. * * @param context TaskOrchestrationContext * @param clazz Class to use for logger @@ -63,7 +63,7 @@ public DefaultWorkflowContext(TaskOrchestrationContext context, Class clazz) } /** - * Constructor for DaprWorkflowContextImpl. + * Constructor for DefaultWorkflowContext. * * @param context TaskOrchestrationContext * @param logger Logger