From 9c68ef21d7763e3899b85ab100680f11a2d22d60 Mon Sep 17 00:00:00 2001 From: Francisco Javier Tirado Sarti Date: Fri, 22 Apr 2022 17:30:54 +0200 Subject: [PATCH 1/2] Constanst.setRefValue() was always null Setting the ref value when constant is an uri to allow implementations to try load them in case default loading fails Signed-off-by: Francisco Javier Tirado Sarti --- .../deserializers/ConstantsDeserializer.java | 1 + .../api/serializers/WorkflowSerializer.java | 8 ++++++-- .../api/test/MarkupToWorkflowTest.java | 17 +++++++++++++++++ .../test/resources/features/constantsRef.json | 17 +++++++++++++++++ .../test/resources/features/constantsRef.yml | 14 ++++++++++++++ 5 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 api/src/test/resources/features/constantsRef.json create mode 100644 api/src/test/resources/features/constantsRef.yml diff --git a/api/src/main/java/io/serverlessworkflow/api/deserializers/ConstantsDeserializer.java b/api/src/main/java/io/serverlessworkflow/api/deserializers/ConstantsDeserializer.java index c3789b52..71b6f456 100644 --- a/api/src/main/java/io/serverlessworkflow/api/deserializers/ConstantsDeserializer.java +++ b/api/src/main/java/io/serverlessworkflow/api/deserializers/ConstantsDeserializer.java @@ -62,6 +62,7 @@ public Constants deserialize(JsonParser jp, DeserializationContext ctxt) throws constantsDefinition = node; } else { String constantsFileDef = node.asText(); + constants.setRefValue(constantsFileDef); String constantsFileSrc = Utils.getResourceFileAsString(constantsFileDef); JsonNode constantsRefNode; ObjectMapper jsonWriter = new ObjectMapper(); diff --git a/api/src/main/java/io/serverlessworkflow/api/serializers/WorkflowSerializer.java b/api/src/main/java/io/serverlessworkflow/api/serializers/WorkflowSerializer.java index 67e6af86..68b8bb3d 100644 --- a/api/src/main/java/io/serverlessworkflow/api/serializers/WorkflowSerializer.java +++ b/api/src/main/java/io/serverlessworkflow/api/serializers/WorkflowSerializer.java @@ -159,8 +159,12 @@ public void serialize(Workflow workflow, JsonGenerator gen, SerializerProvider p gen.writeEndArray(); } - if (workflow.getConstants() != null && !workflow.getConstants().getConstantsDef().isEmpty()) { - gen.writeObjectField("constants", workflow.getConstants().getConstantsDef()); + if (workflow.getConstants() != null) { + if (!workflow.getConstants().getConstantsDef().isEmpty()) { + gen.writeObjectField("constants", workflow.getConstants().getConstantsDef()); + } else if (workflow.getConstants().getRefValue() != null) { + gen.writeStringField("constants", workflow.getConstants().getRefValue()); + } } if (workflow.getTimeouts() != null) { diff --git a/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java b/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java index 768085e1..a857602f 100644 --- a/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java +++ b/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java @@ -569,6 +569,23 @@ public void testConstants(String workflowLocation) { JsonNode serbianTranslationNode = translationDogNode.get("Serbian"); assertEquals("pas", serbianTranslationNode.asText()); } + + + @ParameterizedTest + @ValueSource(strings = {"/features/constantsRef.json", "/features/constantsRef.yml"}) + public void testConstantsRef(String workflowLocation) { + Workflow workflow = Workflow.fromSource(WorkflowTestUtils.readWorkflowFile(workflowLocation)); + + assertNotNull(workflow); + assertNotNull(workflow.getId()); + assertNotNull(workflow.getName()); + assertNotNull(workflow.getStates()); + + assertNotNull(workflow.getConstants()); + Constants constants = workflow.getConstants(); + assertNotNull(constants.getRefValue()); + } + @ParameterizedTest @ValueSource(strings = {"/features/timeouts.json", "/features/timeouts.yml"}) diff --git a/api/src/test/resources/features/constantsRef.json b/api/src/test/resources/features/constantsRef.json new file mode 100644 index 00000000..3558774b --- /dev/null +++ b/api/src/test/resources/features/constantsRef.json @@ -0,0 +1,17 @@ +{ + "id": "secrets", + "version": "1.0", + "specVersion": "0.8", + "name": "Custom secrets flow", + "expressionLang": "abc", + "start": "TestFunctionRefs", + "constants": "contantsValues.json", + "states": [ + { + "name": "TestFunctionRefs", + "type": "operation", + "actions": [], + "end": true + } + ] +} \ No newline at end of file diff --git a/api/src/test/resources/features/constantsRef.yml b/api/src/test/resources/features/constantsRef.yml new file mode 100644 index 00000000..cdc48332 --- /dev/null +++ b/api/src/test/resources/features/constantsRef.yml @@ -0,0 +1,14 @@ +id: secrets +version: '1.0' +specVersion: '0.8' +name: Custom secrets flow +expressionLang: abc +start: TestFunctionRefs +constants: + constantValues.json +states: + - name: TestFunctionRefs + type: operation + actionMode: sequential + actions: + end: true From a924fe0ef5ad4855f171e646b51865c570a3b6b0 Mon Sep 17 00:00:00 2001 From: Francisco Javier Tirado Sarti Date: Mon, 25 Apr 2022 13:25:13 +0200 Subject: [PATCH 2/2] Changes after comments Signed-off-by: Francisco Javier Tirado Sarti --- .../api/serializers/WorkflowSerializer.java | 7 ++++--- .../serverlessworkflow/api/test/MarkupToWorkflowTest.java | 6 ++---- .../serverlessworkflow/api/test/WorkflowToMarkupTest.java | 6 +++++- api/src/test/resources/features/constantsRef.json | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/api/src/main/java/io/serverlessworkflow/api/serializers/WorkflowSerializer.java b/api/src/main/java/io/serverlessworkflow/api/serializers/WorkflowSerializer.java index 68b8bb3d..e933f8a8 100644 --- a/api/src/main/java/io/serverlessworkflow/api/serializers/WorkflowSerializer.java +++ b/api/src/main/java/io/serverlessworkflow/api/serializers/WorkflowSerializer.java @@ -160,10 +160,11 @@ public void serialize(Workflow workflow, JsonGenerator gen, SerializerProvider p } if (workflow.getConstants() != null) { - if (!workflow.getConstants().getConstantsDef().isEmpty()) { - gen.writeObjectField("constants", workflow.getConstants().getConstantsDef()); + if (workflow.getConstants().getConstantsDef() != null + && !workflow.getConstants().getConstantsDef().isEmpty()) { + gen.writeObjectField("constants", workflow.getConstants().getConstantsDef()); } else if (workflow.getConstants().getRefValue() != null) { - gen.writeStringField("constants", workflow.getConstants().getRefValue()); + gen.writeStringField("constants", workflow.getConstants().getRefValue()); } } diff --git a/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java b/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java index a857602f..eb126597 100644 --- a/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java +++ b/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java @@ -569,8 +569,7 @@ public void testConstants(String workflowLocation) { JsonNode serbianTranslationNode = translationDogNode.get("Serbian"); assertEquals("pas", serbianTranslationNode.asText()); } - - + @ParameterizedTest @ValueSource(strings = {"/features/constantsRef.json", "/features/constantsRef.yml"}) public void testConstantsRef(String workflowLocation) { @@ -583,9 +582,8 @@ public void testConstantsRef(String workflowLocation) { assertNotNull(workflow.getConstants()); Constants constants = workflow.getConstants(); - assertNotNull(constants.getRefValue()); + assertEquals("constantValues.json", constants.getRefValue()); } - @ParameterizedTest @ValueSource(strings = {"/features/timeouts.json", "/features/timeouts.yml"}) diff --git a/api/src/test/java/io/serverlessworkflow/api/test/WorkflowToMarkupTest.java b/api/src/test/java/io/serverlessworkflow/api/test/WorkflowToMarkupTest.java index ff43f167..7bc34c04 100644 --- a/api/src/test/java/io/serverlessworkflow/api/test/WorkflowToMarkupTest.java +++ b/api/src/test/java/io/serverlessworkflow/api/test/WorkflowToMarkupTest.java @@ -32,6 +32,7 @@ import io.serverlessworkflow.api.start.Start; import io.serverlessworkflow.api.states.SleepState; import io.serverlessworkflow.api.workflow.Auth; +import io.serverlessworkflow.api.workflow.Constants; import io.serverlessworkflow.api.workflow.Events; import io.serverlessworkflow.api.workflow.Functions; import java.util.Arrays; @@ -47,6 +48,7 @@ public void testSingleState() { .withName("test-workflow-name") .withVersion("1.0") .withStart(new Start().withSchedule(new Schedule().withInterval("PT1S"))) + .withConstants(new Constants("constantsValues.json")) .withStates( Arrays.asList( new SleepState() @@ -62,11 +64,13 @@ public void testSingleState() { assertNotNull(workflow); assertNotNull(workflow.getStart()); + Constants constants = workflow.getConstants(); + assertNotNull(constants); + assertEquals("constantsValues.json", constants.getRefValue()); assertEquals(1, workflow.getStates().size()); State state = workflow.getStates().get(0); assertTrue(state instanceof SleepState); assertNotNull(state.getEnd()); - assertNotNull(Workflow.toJson(workflow)); assertNotNull(Workflow.toYaml(workflow)); } diff --git a/api/src/test/resources/features/constantsRef.json b/api/src/test/resources/features/constantsRef.json index 3558774b..cd0fcb60 100644 --- a/api/src/test/resources/features/constantsRef.json +++ b/api/src/test/resources/features/constantsRef.json @@ -5,7 +5,7 @@ "name": "Custom secrets flow", "expressionLang": "abc", "start": "TestFunctionRefs", - "constants": "contantsValues.json", + "constants": "constantValues.json", "states": [ { "name": "TestFunctionRefs", 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