From 83014f95a850856b0bbe6f030cc1b33e519a8541 Mon Sep 17 00:00:00 2001 From: Matheus Cruz Date: Thu, 11 Jun 2026 16:57:42 -0300 Subject: [PATCH 1/4] Guard against null parameter fields in OpenAPI operation parsing Signed-off-by: Matheus Cruz --- .../impl/executors/openapi/OperationDefinition.java | 6 +++--- .../impl/executors/openapi/UnifiedOpenAPI.java | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java index d8fa0eece..769a175c4 100644 --- a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java +++ b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java @@ -60,7 +60,7 @@ List getParameters() { List paramDefinitions = new ArrayList<>(); if (operation.hasParameters()) { for (UnifiedOpenAPI.Parameter parameter : operation.parameters()) { - if (parameter.in().equals("body")) { + if (parameter.in() != null && parameter.in().equals("body")) { continue; // body parameters are handled separately } @@ -72,11 +72,11 @@ List getParameters() { if (openAPI.swaggerVersion().equals(UnifiedOpenAPI.SwaggerVersion.SWAGGER_V2)) { operation.parameters().stream() - .filter(p -> p.in().equals("body")) + .filter(p -> p.in() != null && p.in().equals("body")) .forEach( p -> { UnifiedOpenAPI.Schema schema = p.schema(); - if (schema.hasRef()) { + if (schema != null && schema.hasRef()) { String ref = schema.ref(); schema = openAPI.resolveSchema(ref); } diff --git a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/UnifiedOpenAPI.java b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/UnifiedOpenAPI.java index 01f6c45fc..cac7f5e53 100644 --- a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/UnifiedOpenAPI.java +++ b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/UnifiedOpenAPI.java @@ -165,7 +165,11 @@ public boolean hasRequestBody() { } } - public record Parameter(String name, String in, Boolean required, Schema schema) {} + public record Parameter(String name, String in, Boolean required, Schema schema) { + public Parameter { + required = required != null ? required : Boolean.FALSE; + } + } public record RequestBody(Content content) {} From 88a0d2a44309b941e26c35a36c507603654a83a5 Mon Sep 17 00:00:00 2001 From: Matheus Cruz Date: Thu, 11 Jun 2026 17:29:25 -0300 Subject: [PATCH 2/4] Guard operation.parameters from NPE Signed-off-by: Matheus Cruz --- .../impl/executors/openapi/OperationDefinition.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java index 769a175c4..c911132ad 100644 --- a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java +++ b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java @@ -70,7 +70,8 @@ List getParameters() { } } - if (openAPI.swaggerVersion().equals(UnifiedOpenAPI.SwaggerVersion.SWAGGER_V2)) { + if (openAPI.swaggerVersion().equals(UnifiedOpenAPI.SwaggerVersion.SWAGGER_V2) + && operation.parameters() != null) { operation.parameters().stream() .filter(p -> p.in() != null && p.in().equals("body")) .forEach( From 9f269c955d31a7a6f704fad2a962c7bf2cfdd9f6 Mon Sep 17 00:00:00 2001 From: Matheus Cruz Date: Fri, 12 Jun 2026 12:43:28 -0300 Subject: [PATCH 3/4] Apply pull request suggestions Signed-off-by: Matheus Cruz --- .../impl/executors/openapi/OperationDefinition.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java index c911132ad..f35ae1b6b 100644 --- a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java +++ b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java @@ -60,7 +60,7 @@ List getParameters() { List paramDefinitions = new ArrayList<>(); if (operation.hasParameters()) { for (UnifiedOpenAPI.Parameter parameter : operation.parameters()) { - if (parameter.in() != null && parameter.in().equals("body")) { + if (parameter.in() != null && "body".equals(parameter.in())) { continue; // body parameters are handled separately } @@ -73,7 +73,7 @@ List getParameters() { if (openAPI.swaggerVersion().equals(UnifiedOpenAPI.SwaggerVersion.SWAGGER_V2) && operation.parameters() != null) { operation.parameters().stream() - .filter(p -> p.in() != null && p.in().equals("body")) + .filter(p -> p.in() != null && "body".equals(p.in())) .forEach( p -> { UnifiedOpenAPI.Schema schema = p.schema(); From b27d74319f5a27b81537e01b576473947e1be867 Mon Sep 17 00:00:00 2001 From: Matheus Cruz Date: Fri, 12 Jun 2026 13:10:59 -0300 Subject: [PATCH 4/4] Compare enum with == operator Signed-off-by: Matheus Cruz --- .../impl/executors/openapi/OperationDefinition.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java index f35ae1b6b..179874068 100644 --- a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java +++ b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OperationDefinition.java @@ -70,7 +70,7 @@ List getParameters() { } } - if (openAPI.swaggerVersion().equals(UnifiedOpenAPI.SwaggerVersion.SWAGGER_V2) + if (openAPI.swaggerVersion() == UnifiedOpenAPI.SwaggerVersion.SWAGGER_V2 && operation.parameters() != null) { operation.parameters().stream() .filter(p -> p.in() != null && "body".equals(p.in()))