From 8daef86b2af11411f453a6f5890bf8d1ce70ffc0 Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Tue, 14 Dec 2021 13:04:36 -0500 Subject: [PATCH] Adding support for annotations prop Signed-off-by: Tihomir Surdilovic --- .../api/serializers/WorkflowSerializer.java | 4 ++++ api/src/main/resources/schema/workflow.json | 8 ++++++++ .../api/test/MarkupToWorkflowTest.java | 14 ++++++++++++++ api/src/test/resources/features/annotations.json | 6 ++++++ api/src/test/resources/features/annotations.yml | 8 ++++++++ 5 files changed, 40 insertions(+) create mode 100644 api/src/test/resources/features/annotations.json create mode 100644 api/src/test/resources/features/annotations.yml 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 b45871fa..dfa94688 100644 --- a/api/src/main/java/io/serverlessworkflow/api/serializers/WorkflowSerializer.java +++ b/api/src/main/java/io/serverlessworkflow/api/serializers/WorkflowSerializer.java @@ -63,6 +63,10 @@ public void serialize(Workflow workflow, JsonGenerator gen, SerializerProvider p gen.writeStringField("version", workflow.getVersion()); } + if (workflow.getAnnotations() != null && !workflow.getAnnotations().isEmpty()) { + gen.writeObjectField("annotations", workflow.getAnnotations()); + } + if (workflow.getDataInputSchema() != null) { if (workflow.getDataInputSchema().getSchema() != null && workflow.getDataInputSchema().getSchema().length() > 0 diff --git a/api/src/main/resources/schema/workflow.json b/api/src/main/resources/schema/workflow.json index 19164ca5..a3bb762b 100644 --- a/api/src/main/resources/schema/workflow.json +++ b/api/src/main/resources/schema/workflow.json @@ -27,6 +27,14 @@ "type": "string", "description": "Workflow version" }, + "annotations": { + "type": "array", + "description": "List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities", + "minItems": 1, + "items": { + "type": "string" + } + }, "dataInputSchema": { "$ref": "datainputschema/datainputschema.json", "description": "Workflow data input schema" 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 2c6da083..e87532df 100644 --- a/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java +++ b/api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java @@ -838,4 +838,18 @@ public void testFunctionInvoke(String workflowLocation) { assertNotNull(action3.getEventRef().getInvoke()); assertEquals(EventRef.Invoke.ASYNC, action3.getEventRef().getInvoke()); } + + @ParameterizedTest + @ValueSource(strings = {"/features/annotations.json", "/features/annotations.yml"}) + public void testAnnotations(String workflowLocation) { + Workflow workflow = Workflow.fromSource(WorkflowTestUtils.readWorkflowFile(workflowLocation)); + + assertNotNull(workflow); + assertNotNull(workflow.getId()); + assertNotNull(workflow.getName()); + + assertNotNull(workflow.getAnnotations()); + List annotations = workflow.getAnnotations(); + assertEquals(4, annotations.size()); + } } diff --git a/api/src/test/resources/features/annotations.json b/api/src/test/resources/features/annotations.json new file mode 100644 index 00000000..90ed6dd1 --- /dev/null +++ b/api/src/test/resources/features/annotations.json @@ -0,0 +1,6 @@ +{ + "id" : "test-workflow", + "name" : "test-workflow-name", + "version" : "1.0", + "annotations": ["a", "b", "c", "d"] +} \ No newline at end of file diff --git a/api/src/test/resources/features/annotations.yml b/api/src/test/resources/features/annotations.yml new file mode 100644 index 00000000..54e359ae --- /dev/null +++ b/api/src/test/resources/features/annotations.yml @@ -0,0 +1,8 @@ +id: test-workflow +name: test-workflow-name +version: '1.0' +annotations: + - a + - b + - c + - d