diff --git a/experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncSetTaskBuilder.java b/experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncSetTaskBuilder.java index 304a67c81..d8c3d0f0f 100644 --- a/experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncSetTaskBuilder.java +++ b/experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncSetTaskBuilder.java @@ -15,8 +15,6 @@ */ package io.serverlessworkflow.fluent.func; -import io.serverlessworkflow.api.types.Set; -import io.serverlessworkflow.api.types.SetTask; import io.serverlessworkflow.api.types.func.MapSetTaskConfiguration; import io.serverlessworkflow.fluent.func.spi.ConditionalTaskBuilder; import io.serverlessworkflow.fluent.spec.SetTaskBuilder; @@ -25,23 +23,8 @@ public class FuncSetTaskBuilder extends SetTaskBuilder implements ConditionalTaskBuilder { - private final SetTask task; - - FuncSetTaskBuilder() { - this.task = new SetTask(); - this.setTask(task); - } - public FuncSetTaskBuilder expr(Map map) { - if (this.task.getSet() == null) { - this.task.setSet(new Set()); - } - this.task.getSet().withSetTaskConfiguration(new MapSetTaskConfiguration(map)); + this.setTaskConfiguration = new MapSetTaskConfiguration(map); return this; } - - @Override - public SetTask build() { - return this.task; - } } diff --git a/experimental/lambda/src/test/java/io/serverless/workflow/impl/executors/func/FluentDSLCallTest.java b/experimental/lambda/src/test/java/io/serverless/workflow/impl/executors/func/FluentDSLCallTest.java index 23c019083..8abf5b464 100644 --- a/experimental/lambda/src/test/java/io/serverless/workflow/impl/executors/func/FluentDSLCallTest.java +++ b/experimental/lambda/src/test/java/io/serverless/workflow/impl/executors/func/FluentDSLCallTest.java @@ -25,6 +25,8 @@ import io.serverlessworkflow.impl.WorkflowApplication; import io.serverlessworkflow.impl.WorkflowDefinition; import io.serverlessworkflow.impl.WorkflowInstance; +import io.serverlessworkflow.impl.WorkflowModel; +import io.serverlessworkflow.impl.jackson.JsonUtils; import java.util.Collection; import java.util.List; import java.util.Map; @@ -131,4 +133,22 @@ void set_with_map() { assertEquals(Map.of("message", "hello world!"), output); } } + + @Test + void set_with_string() { + try (WorkflowApplication app = WorkflowApplication.builder().build()) { + Workflow workflow = + FuncWorkflowBuilder.workflow() + .tasks(f -> f.set(s -> s.expr("{message:\"hello world!\"}"))) + .build(); + + WorkflowDefinition workflowDefinition = app.workflowDefinition(workflow); + + WorkflowModel model = workflowDefinition.instance(Map.of()).start().join(); + + assertEquals( + JsonUtils.mapper().createObjectNode().put("message", "hello world!"), + model.asJavaObject()); + } + } } diff --git a/fluent/spec/src/main/java/io/serverlessworkflow/fluent/spec/SetTaskBuilder.java b/fluent/spec/src/main/java/io/serverlessworkflow/fluent/spec/SetTaskBuilder.java index 6ee2cbf8f..0ce11ec4a 100644 --- a/fluent/spec/src/main/java/io/serverlessworkflow/fluent/spec/SetTaskBuilder.java +++ b/fluent/spec/src/main/java/io/serverlessworkflow/fluent/spec/SetTaskBuilder.java @@ -21,8 +21,8 @@ public class SetTaskBuilder extends TaskBaseBuilder { - private final SetTask task; - private final SetTaskConfiguration setTaskConfiguration; + protected final SetTask task; + protected SetTaskConfiguration setTaskConfiguration; public SetTaskBuilder() { this.task = new SetTask(); @@ -49,7 +49,6 @@ public SetTask build() { if (this.task.getSet() == null) { this.task.setSet(new Set().withSetTaskConfiguration(setTaskConfiguration)); } - return task; } }