This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch camel-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/camel-main by this push:
new ba383623e2 Fix Swagger classpath resource loading in native mode
ba383623e2 is described below
commit ba383623e239fe890f9a9da41689b09a81b1bd13
Author: James Netherton <[email protected]>
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