From 44f39ebc53104f0c0b1ac96979d1fa35edc5c8ea Mon Sep 17 00:00:00 2001 From: Francisco Javier Tirado Sarti Date: Thu, 23 Jul 2026 12:57:22 +0200 Subject: [PATCH] [Fix #1558] Quote numbers when they are string. Signed-off-by: Francisco Javier Tirado Sarti --- .../api/ObjectMapperFactory.java | 6 +++++- .../io/serverlessworkflow/api/FeaturesTest.java | 16 ++++++++++------ .../features/call-http-query-parameters.yaml | 1 + 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/api/src/main/java/io/serverlessworkflow/api/ObjectMapperFactory.java b/api/src/main/java/io/serverlessworkflow/api/ObjectMapperFactory.java index 0a09beb6f..5e820f819 100644 --- a/api/src/main/java/io/serverlessworkflow/api/ObjectMapperFactory.java +++ b/api/src/main/java/io/serverlessworkflow/api/ObjectMapperFactory.java @@ -32,7 +32,11 @@ class ObjectMapperFactory { private static final ObjectMapper jsonMapper = configure(new ObjectMapper()); private static final ObjectMapper yamlMapper = - configure(new ObjectMapper(new YAMLFactory().enable(Feature.MINIMIZE_QUOTES))); + configure( + new ObjectMapper( + new YAMLFactory() + .enable(Feature.MINIMIZE_QUOTES) + .enable(Feature.ALWAYS_QUOTE_NUMBERS_AS_STRINGS))); public static ObjectMapper jsonMapper() { return jsonMapper; diff --git a/api/src/test/java/io/serverlessworkflow/api/FeaturesTest.java b/api/src/test/java/io/serverlessworkflow/api/FeaturesTest.java index 9011e3a8c..983c7a542 100644 --- a/api/src/test/java/io/serverlessworkflow/api/FeaturesTest.java +++ b/api/src/test/java/io/serverlessworkflow/api/FeaturesTest.java @@ -65,20 +65,24 @@ public class FeaturesTest { public void testSpecFeaturesParsing(String workflowLocation) throws IOException { Workflow workflow = readWorkflowFromClasspath(workflowLocation, validation()); assertWorkflow(workflow); - assertWorkflowEquals(workflow, writeAndReadInMemory(workflow)); + assertWorkflowEquals( + workflow, + writeAndReadInMemory( + writeAndReadInMemory(workflow, WorkflowFormat.YAML), WorkflowFormat.JSON)); } - private static Workflow writeAndReadInMemory(Workflow workflow) throws IOException { + private static Workflow writeAndReadInMemory(Workflow workflow, WorkflowFormat format) + throws IOException { byte[] bytes; try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - writeWorkflow(out, workflow, WorkflowFormat.JSON); + writeWorkflow(out, workflow, format); bytes = out.toByteArray(); } - if (logger.isDebugEnabled()) { - logger.debug("Workflow string representation is {}", new String(bytes)); + if (logger.isTraceEnabled()) { + logger.trace("Workflow string representation is {}", new String(bytes)); } try (ByteArrayInputStream in = new ByteArrayInputStream(bytes)) { - return validation().read(in, WorkflowFormat.JSON); + return validation().read(in, format); } } diff --git a/api/src/test/resources/features/call-http-query-parameters.yaml b/api/src/test/resources/features/call-http-query-parameters.yaml index 959343152..3fc1ccf88 100644 --- a/api/src/test/resources/features/call-http-query-parameters.yaml +++ b/api/src/test/resources/features/call-http-query-parameters.yaml @@ -21,4 +21,5 @@ do: endpoint: https://swapi.dev/api/people/ query: search: ${.searchQuery} + number: "1"