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 f649f0086..9994cb779 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 @@ public interface WorkflowContext { * @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 f3e93a7c3..d11e1fe77 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 javax.annotation.Nullable; 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 class DefaultWorkflowContext implements WorkflowContext { 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 bfe567364..15e8c8449 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 java.util.List; 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 class DefaultWorkflowContextTest { return null; } + @Override + public Task createTimer(ZonedDateTime zonedDateTime) { + return null; + } + @Override public V getInput(Class targetType) { return null; @@ -269,8 +270,10 @@ public class DefaultWorkflowContextTest { } @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