You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ji...@apache.org on 2024/04/26 07:59:54 UTC
(camel-quarkus) 06/07: Fix Swagger classpath resource loading in native mode
This is an automated email from the ASF dual-hosted git repository.
jiriondrusek pushed a commit to branch camel-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 1696672cbd50363ffdea089f1b9403a4d6ce4cfb
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Apr 25 09:19:42 2024 +0100
Fix Swagger classpath resource loading in native mode
---
.../runtime/graal/SwaggerSubstitutions.java | 44 ++++++++++++++++++++++
.../component/rest/openapi/it/RestOpenapiTest.java | 3 --
2 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/extensions-support/swagger/runtime/src/main/java/org/apache/camel/quarkus/support/swagger/runtime/graal/SwaggerSubstitutions.java b/extensions-support/swagger/runtime/src/main/java/org/apache/camel/quarkus/support/swagger/runtime/graal/SwaggerSubstitutions.java
index c48cd6c7af..5bfd13dc8e 100644
--- a/extensions-support/swagger/runtime/src/main/java/org/apache/camel/quarkus/support/swagger/runtime/graal/SwaggerSubstitutions.java
+++ b/extensions-support/swagger/runtime/src/main/java/org/apache/camel/quarkus/support/swagger/runtime/graal/SwaggerSubstitutions.java
@@ -19,6 +19,9 @@ package org.apache.camel.quarkus.support.swagger.runtime.graal;
import java.util.Calendar;
import java.util.List;
+import com.oracle.svm.core.annotate.Alias;
+import com.oracle.svm.core.annotate.RecomputeFieldValue;
+import com.oracle.svm.core.annotate.RecomputeFieldValue.Kind;
import com.oracle.svm.core.annotate.Substitute;
import com.oracle.svm.core.annotate.TargetClass;
import io.swagger.parser.OpenAPIParser;
@@ -27,6 +30,9 @@ import io.swagger.v3.parser.core.extensions.SwaggerParserExtension;
import io.swagger.v3.parser.core.models.AuthorizationValue;
import io.swagger.v3.parser.core.models.ParseOptions;
import io.swagger.v3.parser.core.models.SwaggerParseResult;
+import io.swagger.v3.parser.exception.ReadContentException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
final class SwaggerSubstitutions {
}
@@ -53,6 +59,44 @@ final class OpenAPIParserSubstitutions {
}
}
+@TargetClass(OpenAPIV3Parser.class)
+final class OpenAPIPV3ParserSubstitutions {
+ @Alias
+ @RecomputeFieldValue(kind = Kind.FromAlias)
+ private static Logger LOGGER = LoggerFactory.getLogger(OpenAPIV3Parser.class);
+
+ @Substitute
+ public SwaggerParseResult readLocation(String url, List<AuthorizationValue> auth, ParseOptions options) {
+ try {
+ if (url.startsWith("resource:")) {
+ url = url.replaceFirst("resource:", "");
+ }
+ final String content = readContentFromLocation(url, emptyListIfNull(auth));
+ LOGGER.debug("Loaded raw data: {}", content);
+ return readContents(content, auth, options, url);
+ } catch (ReadContentException e) {
+ LOGGER.warn("Exception while reading:", e);
+ return SwaggerParseResult.ofError(e.getMessage());
+ }
+ }
+
+ @Alias
+ private String readContentFromLocation(String location, List<AuthorizationValue> auth) {
+ return null;
+ }
+
+ @Alias
+ private <T> List<T> emptyListIfNull(List<T> list) {
+ return null;
+ }
+
+ @Alias
+ public SwaggerParseResult readContents(String swaggerAsString, List<AuthorizationValue> auth, ParseOptions options,
+ String location) {
+ return null;
+ }
+}
+
@TargetClass(Calendar.Builder.class)
final class CalendarBuilderSubstitution {
@Substitute
diff --git a/integration-tests/rest-openapi/src/test/java/org/apache/camel/quarkus/component/rest/openapi/it/RestOpenapiTest.java b/integration-tests/rest-openapi/src/test/java/org/apache/camel/quarkus/component/rest/openapi/it/RestOpenapiTest.java
index 5bca131e44..0f016c08b9 100644
--- a/integration-tests/rest-openapi/src/test/java/org/apache/camel/quarkus/component/rest/openapi/it/RestOpenapiTest.java
+++ b/integration-tests/rest-openapi/src/test/java/org/apache/camel/quarkus/component/rest/openapi/it/RestOpenapiTest.java
@@ -21,7 +21,6 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
-import io.quarkus.test.junit.DisabledOnIntegrationTest;
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
@@ -72,13 +71,11 @@ class RestOpenapiTest {
invokeApiEndpoint("/rest-openapi/fruits/list/bean");
}
- @DisabledOnIntegrationTest("https://github.com/apache/camel-quarkus/issues/5945")
@Test
public void testInvokeClasspathApiEndpoint() {
invokeApiEndpoint("/rest-openapi/fruits/list/classpath");
}
- @DisabledOnIntegrationTest("https://github.com/apache/camel-quarkus/issues/5945")
@Test
public void testInvokeApiEndpointWithRequestValidationEnabled() {
// Empty request body