This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 1960a6ceda45 CAMEL-22493: camel-rest-openapi: Potential NPE in 
OpenApiUtils.isArrayType
1960a6ceda45 is described below

commit 1960a6ceda45e4e0703259fd1a50dd307f0eddcf
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Oct 7 13:50:15 2025 +0200

    CAMEL-22493: camel-rest-openapi: Potential NPE in OpenApiUtils.isArrayType
---
 .../camel/component/rest/openapi/OpenApiUtils.java |  6 ++++
 .../component/rest/openapi/OpenApiUtilsTest.java   | 34 ++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git 
a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/OpenApiUtils.java
 
b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/OpenApiUtils.java
index 4a5ed22ceaeb..7823cf46003a 100644
--- 
a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/OpenApiUtils.java
+++ 
b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/OpenApiUtils.java
@@ -206,6 +206,9 @@ public class OpenApiUtils {
 
         schemaName = Optional.ofNullable(schemaName)
                 
.orElse(Optional.ofNullable(schema.get$ref()).orElse(getSchemaType(schema)));
+        if (schemaName == null) {
+            return null;
+        }
         Matcher classNameMatcher = CLASS_NAME_PATTERN.matcher(schemaName);
         String classToFind = classNameMatcher.find()
                 ? classNameMatcher.group(1)
@@ -222,6 +225,9 @@ public class OpenApiUtils {
         if (schema.getSpecVersion() == SpecVersion.V30) {
             return schema instanceof ArraySchema;
         }
+        if (schema.getTypes() == null) {
+            return false;
+        }
         return 
"array".equals(schema.getTypes().stream().findFirst().orElse(null));
     }
 
diff --git 
a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/OpenApiUtilsTest.java
 
b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/OpenApiUtilsTest.java
index b7d5770e31ad..27ebe5d0380d 100644
--- 
a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/OpenApiUtilsTest.java
+++ 
b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/OpenApiUtilsTest.java
@@ -36,6 +36,7 @@ import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class OpenApiUtilsTest {
 
@@ -75,6 +76,28 @@ public class OpenApiUtilsTest {
                     - name
                     """;
 
+    private static final String NO_RESPONSE_BODY = """
+            openapi: <openapi_version>
+            info:
+              title: test
+              version: 1.0.0
+            paths:
+              /test:
+                post:
+                  operationId: test
+                  requestBody:
+                    required: true
+                    content:
+                      "application/json":
+                        schema:
+                          oneOf:
+                            - type: string
+                            - type: number
+                  responses:
+                    "200":
+                      description: Successful response
+                """;
+
     @Test
     public void shouldReturnAllProduces() {
         Operation operation = new Operation();
@@ -185,6 +208,17 @@ public class OpenApiUtilsTest {
         assertEquals(TagResponseDto.class.getName() + "[]", 
utils.manageResponseBody(operation));
     }
 
+    @Test
+    public void noResponseBody() throws Exception {
+        String bindingPackagePath = OpenApiUtils.class.getPackage().getName();
+        OpenAPIV3Parser parser = new OpenAPIV3Parser();
+        OpenAPI openApi = 
parser.readContents(NO_RESPONSE_BODY.replace("<openapi_version>", 
"3.1.0")).getOpenAPI();
+        Operation operation = openApi.getPaths().get("/test").getPost();
+        OpenApiUtils utils = new OpenApiUtils(new DefaultCamelContext(), 
bindingPackagePath, openApi.getComponents());
+        assertNull(utils.manageRequestBody(operation));
+        assertNull(utils.manageResponseBody(operation));
+    }
+
     private ApiResponse createResponse(String... contentTypes) {
         ApiResponse response = new ApiResponse();
 

Reply via email to