From a5a201fbb074cd893370504f5041ef3d8e59d7b7 Mon Sep 17 00:00:00 2001 From: Matheus Cruz Date: Mon, 16 Feb 2026 20:45:29 -0300 Subject: [PATCH] Add build method to FuncSetTaskBuilder and integration test - Add build() method override to FuncSetTaskBuilder to properly return SetTask - Add test dependencies (serverlessworkflow-impl-model and serverlessworkflow-impl-jackson) to pom.xml - Add integration test 'set_with_map' to verify set task functionality with WorkflowApplication - Remove unused import (auth) from FuncDSLTest This change enables proper building of set tasks in the functional fluent API and validates the functionality through an end-to-end test that creates a workflow, executes it, and verifies the output. Fixes #1155 Signed-off-by: Matheus Cruz --- experimental/fluent/func/pom.xml | 12 +++++++++++ .../fluent/func/FuncSetTaskBuilder.java | 5 +++++ .../fluent/func/FuncDSLTest.java | 20 ++++++++++++++++++- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/experimental/fluent/func/pom.xml b/experimental/fluent/func/pom.xml index dcf2aa96f..5beaf49d1 100644 --- a/experimental/fluent/func/pom.xml +++ b/experimental/fluent/func/pom.xml @@ -45,5 +45,17 @@ ${version.org.mockito} test + + io.serverlessworkflow + serverlessworkflow-impl-model + ${project.version} + test + + + io.serverlessworkflow + serverlessworkflow-impl-jackson + ${project.version} + test + \ No newline at end of file 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 a9d1bd6cf..304a67c81 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 @@ -39,4 +39,9 @@ public FuncSetTaskBuilder expr(Map map) { this.task.getSet().withSetTaskConfiguration(new MapSetTaskConfiguration(map)); return this; } + + @Override + public SetTask build() { + return this.task; + } } diff --git a/experimental/fluent/func/src/test/java/io/serverlessworkflow/fluent/func/FuncDSLTest.java b/experimental/fluent/func/src/test/java/io/serverlessworkflow/fluent/func/FuncDSLTest.java index 3dbe95094..2e07737cc 100644 --- a/experimental/fluent/func/src/test/java/io/serverlessworkflow/fluent/func/FuncDSLTest.java +++ b/experimental/fluent/func/src/test/java/io/serverlessworkflow/fluent/func/FuncDSLTest.java @@ -23,7 +23,6 @@ import static io.serverlessworkflow.fluent.func.dsl.FuncDSL.http; import static io.serverlessworkflow.fluent.func.dsl.FuncDSL.listen; import static io.serverlessworkflow.fluent.func.dsl.FuncDSL.toOne; -import static io.serverlessworkflow.fluent.spec.dsl.DSL.auth; import static io.serverlessworkflow.fluent.spec.dsl.DSL.use; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; @@ -42,6 +41,8 @@ import io.serverlessworkflow.fluent.func.dsl.FuncDSL; import io.serverlessworkflow.fluent.func.dsl.FuncEmitSpec; import io.serverlessworkflow.fluent.func.dsl.FuncListenSpec; +import io.serverlessworkflow.impl.WorkflowApplication; +import io.serverlessworkflow.impl.WorkflowDefinition; import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.List; @@ -432,4 +433,21 @@ void call_with_preconfigured_http_spec() { .getUse()); assertEquals(Map.of("foo", "bar"), http.getWith().getBody()); } + + @Test + void set_with_map() { + try (WorkflowApplication app = WorkflowApplication.builder().build()) { + Workflow workflow = + FuncWorkflowBuilder.workflow() + .tasks(f -> f.set(s -> s.expr(Map.of("message", "hello world!")))) + .build(); + + WorkflowDefinition workflowDefinition = app.workflowDefinition(workflow); + + Map output = + workflowDefinition.instance(Map.of()).start().join().asMap().orElseThrow(); + + assertEquals(Map.of("message", "hello world!"), output); + } + } }