From acb632a6c8dd5cb407ae498056d39baf231088a2 Mon Sep 17 00:00:00 2001 From: Francisco Javier Tirado Sarti Date: Fri, 20 Dec 2024 15:59:40 +0100 Subject: [PATCH] [Fix #500] Fixing set behaviour Signed-off-by: Francisco Javier Tirado Sarti --- .../impl/executors/SetExecutor.java | 9 ++--- .../impl/WorkflowDefinitionTest.java | 34 ++++-------------- impl/core/src/test/resources/for-collect.yaml | 4 +-- impl/core/src/test/resources/for-sum.yaml | 11 +++--- .../test/resources/switch-then-string.yaml | 36 ++++++------------- 5 files changed, 26 insertions(+), 68 deletions(-) diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/SetExecutor.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/SetExecutor.java index 0f0d999e..b06153f3 100644 --- a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/SetExecutor.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/SetExecutor.java @@ -21,7 +21,6 @@ import io.serverlessworkflow.impl.WorkflowDefinition; import io.serverlessworkflow.impl.expressions.ExpressionUtils; import io.serverlessworkflow.impl.json.JsonUtils; -import io.serverlessworkflow.impl.json.MergeUtils; import java.util.Map; public class SetExecutor extends AbstractTaskExecutor { @@ -38,10 +37,8 @@ protected SetExecutor(SetTask task, WorkflowDefinition definition) { @Override protected void internalExecute(WorkflowContext workflow, TaskContext taskContext) { taskContext.rawOutput( - MergeUtils.merge( - JsonUtils.fromValue( - ExpressionUtils.evaluateExpressionMap( - toBeSet, workflow, taskContext, taskContext.input())), - taskContext.input())); + JsonUtils.fromValue( + ExpressionUtils.evaluateExpressionMap( + toBeSet, workflow, taskContext, taskContext.input()))); } } diff --git a/impl/core/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java b/impl/core/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java index e2a1dbf2..c97f11e5 100644 --- a/impl/core/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java +++ b/impl/core/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java @@ -16,6 +16,7 @@ package io.serverlessworkflow.impl; import static io.serverlessworkflow.api.WorkflowReader.readWorkflowFromClasspath; +import static io.serverlessworkflow.api.WorkflowReader.validation; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowableOfType; @@ -52,7 +53,7 @@ static void init() { @MethodSource("provideParameters") void testWorkflowExecution(String fileName, Consumer assertions) throws IOException { - assertions.accept(appl.workflowDefinition(readWorkflowFromClasspath(fileName))); + assertions.accept(appl.workflowDefinition(readWorkflowFromClasspath(validation(), fileName))); } private static Stream provideParameters() { @@ -60,39 +61,19 @@ private static Stream provideParameters() { args( "switch-then-string.yaml", Map.of("orderType", "electronic"), - o -> - assertThat(o.output()) - .isEqualTo( - Map.of( - "orderType", "electronic", "validate", true, "status", "fulfilled"))), + o -> assertThat(o.output()).isEqualTo(Map.of("validate", true, "status", "fulfilled"))), args( "switch-then-string.yaml", Map.of("orderType", "physical"), o -> assertThat(o.output()) - .isEqualTo( - Map.of( - "orderType", - "physical", - "inventory", - "clear", - "items", - 1, - "address", - "Elmer St"))), + .isEqualTo(Map.of("inventory", "clear", "items", 1, "address", "Elmer St"))), args( "switch-then-string.yaml", Map.of("orderType", "unknown"), o -> assertThat(o.output()) - .isEqualTo( - Map.of( - "orderType", - "unknown", - "log", - "warn", - "message", - "something's wrong"))), + .isEqualTo(Map.of("log", "warn", "message", "something's wrong"))), args( "for-sum.yaml", Map.of("input", Arrays.asList(1, 2, 3)), @@ -100,10 +81,7 @@ private static Stream provideParameters() { args( "for-collect.yaml", Map.of("input", Arrays.asList(1, 2, 3)), - o -> - assertThat(o.output()) - .isEqualTo( - Map.of("input", Arrays.asList(1, 2, 3), "output", Arrays.asList(2, 4, 6)))), + o -> assertThat(o.output()).isEqualTo(Map.of("output", Arrays.asList(2, 4, 6)))), args( "simple-expression.yaml", Map.of("input", Arrays.asList(1, 2, 3)), diff --git a/impl/core/src/test/resources/for-collect.yaml b/impl/core/src/test/resources/for-collect.yaml index 7bcc48c2..53dd8231 100644 --- a/impl/core/src/test/resources/for-collect.yaml +++ b/impl/core/src/test/resources/for-collect.yaml @@ -13,5 +13,5 @@ do: from: '{input: .input, output: []}' do: - sumIndex: - output: - as: .output+=[$number+$index+1] \ No newline at end of file + set: + output: ${.output+[$number+$index+1]} \ No newline at end of file diff --git a/impl/core/src/test/resources/for-sum.yaml b/impl/core/src/test/resources/for-sum.yaml index e0fe106b..6d89d9ff 100644 --- a/impl/core/src/test/resources/for-sum.yaml +++ b/impl/core/src/test/resources/for-sum.yaml @@ -4,16 +4,13 @@ document: name: for-sum-example version: '0.1.0' do: - - initCounter: - set: - counter: 0 - sumAll: for: each: number in: .input do: - accumulate: - output: - as: .counter+=$number - output: - as: .counter \ No newline at end of file + set: + counter: ${.counter+$number} + output: + as: .counter diff --git a/impl/core/src/test/resources/switch-then-string.yaml b/impl/core/src/test/resources/switch-then-string.yaml index a35ebd45..4093a6fa 100644 --- a/impl/core/src/test/resources/switch-then-string.yaml +++ b/impl/core/src/test/resources/switch-then-string.yaml @@ -15,31 +15,17 @@ do: - default: then: handleUnknownOrderType - processElectronicOrder: - do: - - validatePayment: - set: - validate: true - - fulfillOrder: - set: - status: fulfilled - then: exit + set: + validate: true + status: fulfilled + then: exit - processPhysicalOrder: - do: - - checkInventory: - set: - inventory: clear - - packItems: - set: - items: 1 - - scheduleShipping: - set: - address: Elmer St + set: + inventory: clear + items: 1 + address: Elmer St then: exit - handleUnknownOrderType: - do: - - logWarning: - set: - log: warn - - notifyAdmin: - set: - message: something's wrong + set: + log: warn + message: something's wrong pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy