diff --git a/sdk-workflows/src/main/java/io/dapr/workflows/WorkflowContext.java b/sdk-workflows/src/main/java/io/dapr/workflows/WorkflowContext.java index f649f0086d..9994cb7792 100644 --- a/sdk-workflows/src/main/java/io/dapr/workflows/WorkflowContext.java +++ b/sdk-workflows/src/main/java/io/dapr/workflows/WorkflowContext.java @@ -347,10 +347,7 @@ default Task> anyOf(Task... tasks) { * @param zonedDateTime timestamp with specific zone when the timer should expire * @return a new {@code Task} that completes after the specified delay */ - default Task createTimer(ZonedDateTime zonedDateTime) { - throw new UnsupportedOperationException("This method is not implemented."); - } - + Task createTimer(ZonedDateTime zonedDateTime); /** * Gets the deserialized input of the current task orchestration. 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 f3e93a7c38..d11e1fe771 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 @@ -33,6 +33,7 @@ import java.time.Duration; import java.time.Instant; +import java.time.ZonedDateTime; import java.util.List; import java.util.UUID; @@ -189,6 +190,11 @@ public Task createTimer(Duration duration) { return this.innerContext.createTimer(duration); } + @Override + public Task createTimer(ZonedDateTime zonedDateTime) { + return this.innerContext.createTimer(zonedDateTime); + } + /** * {@inheritDoc} */ 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 bfe567364e..15e8c8449e 100644 --- a/sdk-workflows/src/test/java/io/dapr/workflows/DefaultWorkflowContextTest.java +++ b/sdk-workflows/src/test/java/io/dapr/workflows/DefaultWorkflowContextTest.java @@ -39,14 +39,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.*; public class DefaultWorkflowContextTest { private DefaultWorkflowContext context; @@ -124,6 +120,11 @@ public Task createTimer(Duration duration) { return null; } + @Override + public Task createTimer(ZonedDateTime zonedDateTime) { + return null; + } + @Override public V getInput(Class targetType) { return null; @@ -269,8 +270,10 @@ public void createTimerTest() { } @Test - public void createTimerWithZonedDateTimeThrowsTest() { - assertThrows(UnsupportedOperationException.class, () -> context.createTimer(ZonedDateTime.now())); + public void createTimerWithZonedDateTimeTest() { + ZonedDateTime now = ZonedDateTime.now(); + context.createTimer(now); + verify(mockInnerContext, times(1)).createTimer(now); } @Test