You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by kl...@apache.org on 2023/08/31 20:50:40 UTC

[camel] 01/01: CAMEL-19818: handle all schema references in response types. (#11262)

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

klease pushed a commit to branch fix-openapi
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 5b26d1b182fd0b208133e67ecbf3bb51f52b047e
Author: klease <kl...@cegetel.net>
AuthorDate: Thu Aug 31 22:49:44 2023 +0200

    CAMEL-19818: handle all schema references in response types. (#11262)
---
 .../java/org/apache/camel/openapi/RestOpenApiReader.java   | 14 ++++++++------
 .../apache/camel/openapi/RestOpenApiReaderModelTest.java   |  2 ++
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java
index f5e38ebff75..6c298f46b6b 100644
--- a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java
+++ b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java
@@ -1066,7 +1066,7 @@ public class RestOpenApiReader {
                 Parameter parameter, Operation operation, ApiDescription api,
                 Map<String, List<String>> params, Map<String, String> cookies, Map<String, List<String>> headers) {
             if (parameter.getContent() != null) {
-                processRefsInContent(parameter.getContent());
+                processRefsInContent(parameter.getContent(), params, cookies, headers);
             }
             return Optional.of(parameter);
         }
@@ -1076,7 +1076,7 @@ public class RestOpenApiReader {
                 RequestBody requestBody, Operation operation, ApiDescription api,
                 Map<String, List<String>> params, Map<String, String> cookies, Map<String, List<String>> headers) {
             if (requestBody.getContent() != null) {
-                processRefsInContent(requestBody.getContent());
+                processRefsInContent(requestBody.getContent(), params, cookies, headers);
             }
             return Optional.of(requestBody);
         }
@@ -1086,7 +1086,7 @@ public class RestOpenApiReader {
                 ApiResponse response, Operation operation, ApiDescription api,
                 Map<String, List<String>> params, Map<String, String> cookies, Map<String, List<String>> headers) {
             if (response.getContent() != null) {
-                processRefsInContent(response.getContent());
+                processRefsInContent(response.getContent(), params, cookies, headers);
             }
             return Optional.of(response);
         }
@@ -1135,10 +1135,12 @@ public class RestOpenApiReader {
             return Optional.of(schema);
         }
 
-        private void processRefsInContent(Content content) {
+        private void processRefsInContent(
+                Content content, Map<String, List<String>> params,
+                Map<String, String> cookies, Map<String, List<String>> headers) {
             for (MediaType media : content.values()) {
-                if (media.getSchema() != null && media.getSchema().get$ref() != null) {
-                    media.getSchema().set$ref(fixSchemaReference(media.getSchema().get$ref(), OAS30_SCHEMA_DEFINITION_PREFIX));
+                if (media.getSchema() != null) {
+                    filterSchema(media.getSchema(), params, cookies, headers);
                 }
             }
         }
diff --git a/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/RestOpenApiReaderModelTest.java b/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/RestOpenApiReaderModelTest.java
index e343c16bfb5..2d630abb16e 100644
--- a/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/RestOpenApiReaderModelTest.java
+++ b/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/RestOpenApiReaderModelTest.java
@@ -89,6 +89,7 @@ public class RestOpenApiReaderModelTest extends CamelTestSupport {
         assertTrue(json.contains("\"host\" : \"localhost:8080\""));
         assertTrue(json.contains("\"description\" : \"The user returned\""));
         assertTrue(json.contains("\"$ref\" : \"#/definitions/User\""));
+        assertFalse(json.contains("\"$ref\" : \"#/definitions/org.apache.camel.openapi.User\""));
         assertTrue(json.contains("\"x-className\""));
         assertTrue(json.contains("\"format\" : \"org.apache.camel.openapi.User\""));
         assertTrue(json.contains("\"type\" : \"string\""));
@@ -119,6 +120,7 @@ public class RestOpenApiReaderModelTest extends CamelTestSupport {
         assertTrue(json.contains("\"url\" : \"http://localhost:8080/api\""));
         assertTrue(json.contains("\"description\" : \"The user returned\""));
         assertTrue(json.contains("\"$ref\" : \"#/components/schemas/User\""));
+        assertFalse(json.contains("\"$ref\" : \"#/components/schemas/org.apache.camel.openapi.User\""));
         assertTrue(json.contains("\"format\" : \"org.apache.camel.openapi.User\""));
         assertTrue(json.contains("\"type\" : \"string\""));
         assertTrue(json.contains("\"format\" : \"date\""));