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\""));