From 8461966a45fb1c6fd065e5cc028988ca031c9bc5 Mon Sep 17 00:00:00 2001 From: Renjith Narayanan Date: Mon, 5 Jan 2026 22:13:59 +0530 Subject: [PATCH 1/2] changes to generate rest dsl from openapi 3.1 docs --- pom.xml | 22 +++++++--- .../apache/camel/kameleon/WarmUpService.java | 10 ++--- .../component/ClassicComponentService.java | 2 +- .../kameleon/component/ComponentResource.java | 12 +++--- .../component/KameletComponentService.java | 2 +- .../component/QuarkusComponentService.java | 2 +- .../component/SpringBootComponentService.java | 8 ++-- .../config/ConfigurationResource.java | 10 ++--- .../kameleon/generator/GeneratorResource.java | 6 +-- .../generator/ProjectGeneratorService.java | 4 +- .../generator/RestDslGeneratorService.java | 21 +++++----- .../camel/kameleon/ComponentResourceTest.java | 40 +++++++++---------- 12 files changed, 78 insertions(+), 61 deletions(-) diff --git a/pom.xml b/pom.xml index 7fa4548..3c7cfa0 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ under the License. 4.0.0 org.apache.camel.kameleon kameleon - 0.4.1 + 0.4.6 3.8.1 true @@ -33,13 +33,13 @@ under the License. 11 UTF-8 UTF-8 - 2.16.7.Final + 3.20.3 quarkus-universe-bom io.quarkus - 2.16.7.Final + 3.20.3 3.0.0 - 2.16.0 - 3.20.5 + 3.20.3 + 4.10.7 3.20.4 3.8.6 @@ -102,10 +102,17 @@ under the License. org.apache.camel.kamelets camel-kamelets-catalog ${version.camel-kamelet} + + + classgraph + io.github.classgraph + + io.fabric8 camel-k-model-v1alpha1 + 6.3.1 org.apache.maven @@ -146,6 +153,11 @@ under the License. camel-openapi-rest-dsl-generator ${version.camel-classic} + + io.github.classgraph + classgraph + 4.8.184 + diff --git a/src/main/java/org/apache/camel/kameleon/WarmUpService.java b/src/main/java/org/apache/camel/kameleon/WarmUpService.java index 89c67ac..284f7e2 100644 --- a/src/main/java/org/apache/camel/kameleon/WarmUpService.java +++ b/src/main/java/org/apache/camel/kameleon/WarmUpService.java @@ -16,8 +16,8 @@ */ package org.apache.camel.kameleon; +import io.quarkus.runtime.LaunchMode; import io.quarkus.runtime.StartupEvent; -import io.quarkus.runtime.configuration.ProfileManager; import io.quarkus.vertx.ConsumeEvent; import io.vertx.core.json.JsonArray; import io.vertx.mutiny.core.eventbus.EventBus; @@ -27,9 +27,9 @@ import org.apache.camel.kameleon.generator.ProjectGeneratorService; import org.jboss.logging.Logger; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.event.Observes; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; +import jakarta.inject.Inject; import java.util.List; import java.util.stream.Collectors; @@ -52,7 +52,7 @@ public class WarmUpService { void onStart(@Observes StartupEvent ev) { LOGGER.info("Data warmup start..."); - if (!ProfileManager.getLaunchMode().isDevOrTest()) { + if (!LaunchMode.current().isDevOrTest()) { configurationResource.getKc().getTypes() .forEach(camelType -> camelType.getVersions() .forEach(camelVersion -> camelVersion.getJavaVersions() diff --git a/src/main/java/org/apache/camel/kameleon/component/ClassicComponentService.java b/src/main/java/org/apache/camel/kameleon/component/ClassicComponentService.java index 5a19c41..dae37f7 100644 --- a/src/main/java/org/apache/camel/kameleon/component/ClassicComponentService.java +++ b/src/main/java/org/apache/camel/kameleon/component/ClassicComponentService.java @@ -23,7 +23,7 @@ import org.apache.camel.kameleon.model.CamelComponent; import org.apache.maven.artifact.versioning.ComparableVersion; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/apache/camel/kameleon/component/ComponentResource.java b/src/main/java/org/apache/camel/kameleon/component/ComponentResource.java index 0a839bd..a39119e 100644 --- a/src/main/java/org/apache/camel/kameleon/component/ComponentResource.java +++ b/src/main/java/org/apache/camel/kameleon/component/ComponentResource.java @@ -18,12 +18,12 @@ import io.vertx.core.json.JsonArray; -import javax.inject.Inject; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; +import jakarta.inject.Inject; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; @Path("/component") public class ComponentResource { diff --git a/src/main/java/org/apache/camel/kameleon/component/KameletComponentService.java b/src/main/java/org/apache/camel/kameleon/component/KameletComponentService.java index 932fb16..b1ba596 100644 --- a/src/main/java/org/apache/camel/kameleon/component/KameletComponentService.java +++ b/src/main/java/org/apache/camel/kameleon/component/KameletComponentService.java @@ -21,7 +21,7 @@ import org.apache.camel.kameleon.model.KameletComponent; import org.apache.camel.kamelets.catalog.KameletsCatalog; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/org/apache/camel/kameleon/component/QuarkusComponentService.java b/src/main/java/org/apache/camel/kameleon/component/QuarkusComponentService.java index 3bc17fb..ebecfa1 100644 --- a/src/main/java/org/apache/camel/kameleon/component/QuarkusComponentService.java +++ b/src/main/java/org/apache/camel/kameleon/component/QuarkusComponentService.java @@ -22,7 +22,7 @@ import org.apache.camel.catalog.quarkus.QuarkusRuntimeProvider; import org.apache.camel.kameleon.model.CamelComponent; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/apache/camel/kameleon/component/SpringBootComponentService.java b/src/main/java/org/apache/camel/kameleon/component/SpringBootComponentService.java index ac41722..88fa237 100644 --- a/src/main/java/org/apache/camel/kameleon/component/SpringBootComponentService.java +++ b/src/main/java/org/apache/camel/kameleon/component/SpringBootComponentService.java @@ -23,7 +23,7 @@ import org.apache.camel.kameleon.model.CamelComponent; import org.apache.camel.springboot.catalog.SpringBootRuntimeProvider; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; import java.util.ArrayList; import java.util.List; @@ -61,9 +61,11 @@ public JsonArray components() throws Exception { catalog.findOtherNames().forEach(name -> { String json = catalog.otherJSonSchema(name); - CamelComponent component = getCamelComponent(json, "other"); - if (!component.getDeprecated()) { + if(json != null) { + CamelComponent component = getCamelComponent(json, "other"); + if (!component.getDeprecated()) { list.add(component); + } } }); diff --git a/src/main/java/org/apache/camel/kameleon/config/ConfigurationResource.java b/src/main/java/org/apache/camel/kameleon/config/ConfigurationResource.java index e358821..517a68c 100644 --- a/src/main/java/org/apache/camel/kameleon/config/ConfigurationResource.java +++ b/src/main/java/org/apache/camel/kameleon/config/ConfigurationResource.java @@ -23,11 +23,11 @@ import org.apache.camel.kameleon.model.KameleonConfiguration; import org.eclipse.microprofile.config.inject.ConfigProperty; -import javax.enterprise.event.Observes; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Response; +import jakarta.enterprise.event.Observes; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.Response; import java.io.*; import java.util.stream.Collectors; diff --git a/src/main/java/org/apache/camel/kameleon/generator/GeneratorResource.java b/src/main/java/org/apache/camel/kameleon/generator/GeneratorResource.java index 6cbc04a..d0b0eec 100644 --- a/src/main/java/org/apache/camel/kameleon/generator/GeneratorResource.java +++ b/src/main/java/org/apache/camel/kameleon/generator/GeneratorResource.java @@ -16,9 +16,9 @@ */ package org.apache.camel.kameleon.generator; -import javax.inject.Inject; -import javax.ws.rs.*; -import javax.ws.rs.core.Response; +import jakarta.inject.Inject; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.Response; import java.io.File; @Path("/generator") diff --git a/src/main/java/org/apache/camel/kameleon/generator/ProjectGeneratorService.java b/src/main/java/org/apache/camel/kameleon/generator/ProjectGeneratorService.java index f006692..865b58a 100644 --- a/src/main/java/org/apache/camel/kameleon/generator/ProjectGeneratorService.java +++ b/src/main/java/org/apache/camel/kameleon/generator/ProjectGeneratorService.java @@ -32,8 +32,8 @@ import org.apache.maven.shared.invoker.*; import org.codehaus.plexus.util.xml.Xpp3Dom; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import java.io.*; import java.nio.file.Files; import java.nio.file.Path; diff --git a/src/main/java/org/apache/camel/kameleon/generator/RestDslGeneratorService.java b/src/main/java/org/apache/camel/kameleon/generator/RestDslGeneratorService.java index d4dc537..802614f 100644 --- a/src/main/java/org/apache/camel/kameleon/generator/RestDslGeneratorService.java +++ b/src/main/java/org/apache/camel/kameleon/generator/RestDslGeneratorService.java @@ -18,15 +18,17 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import io.apicurio.datamodels.Library; -import io.apicurio.datamodels.openapi.models.OasDocument; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.parser.OpenAPIV3Parser; +import io.swagger.v3.parser.core.models.SwaggerParseResult; import org.apache.camel.CamelContext; import org.apache.camel.generator.openapi.RestDslGenerator; -import org.apache.camel.impl.lw.LightweightCamelContext; +import org.apache.camel.impl.DefaultCamelContext; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.SafeConstructor; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; import java.io.FileNotFoundException; import java.util.Map; @@ -36,10 +38,11 @@ public class RestDslGeneratorService { public String generate(String filename, String openapi) throws Exception { System.out.println(filename); System.out.println(openapi); - final JsonNode node = filename.endsWith("json") ? readNodeFromJson(openapi) : readNodeFromYaml(openapi); - OasDocument document = (OasDocument) Library.readDocument(node); - try (CamelContext context = new LightweightCamelContext()) { - return RestDslGenerator.toYaml(document).generate(context, true); + SwaggerParseResult result = new OpenAPIV3Parser().readContents(openapi); + OpenAPI openAPI = result.getOpenAPI(); + + try (CamelContext context = new DefaultCamelContext()) { + return RestDslGenerator.toYaml(openAPI).generate(context, true); } } @@ -50,7 +53,7 @@ private JsonNode readNodeFromJson(String openapi) throws Exception { private JsonNode readNodeFromYaml(String openapi) throws FileNotFoundException { final ObjectMapper mapper = new ObjectMapper(); - Yaml loader = new Yaml(new SafeConstructor()); + Yaml loader = new Yaml(new SafeConstructor(new LoaderOptions())); Map map = loader.load(openapi); return mapper.convertValue(map, JsonNode.class); } diff --git a/src/test/java/org/apache/camel/kameleon/ComponentResourceTest.java b/src/test/java/org/apache/camel/kameleon/ComponentResourceTest.java index d8d8ad3..ff14d21 100644 --- a/src/test/java/org/apache/camel/kameleon/ComponentResourceTest.java +++ b/src/test/java/org/apache/camel/kameleon/ComponentResourceTest.java @@ -20,7 +20,7 @@ import io.restassured.response.Response; import org.junit.jupiter.api.Test; -import javax.inject.Inject; +import jakarta.inject.Inject; import java.util.HashMap; import java.util.List; @@ -34,25 +34,25 @@ @QuarkusTest public class ComponentResourceTest { - @Inject - ConfigurationResource configurationResource; - - @Test - public void testComponents() { - KameleonConfiguration kc = configurationResource.getKc(); - kc.getTypes().forEach(camelType -> - camelType.getVersions().forEach( - camelVersion -> test(camelType.getName(), camelVersion.getName()) - ) - ); - } - - private void test(String type, String version){ - Response resp = given() - .pathParam("type", type) - .pathParam("version", version) - .when().get("/component/{type}/{version}") - .then().extract().response(); + @Inject + ConfigurationResource configurationResource; + + @Test + public void testComponents() { + KameleonConfiguration kc = configurationResource.getKc(); + kc.getTypes().forEach(camelType -> + camelType.getVersions().forEach( + camelVersion -> test(camelType.getName(), camelVersion.getName()) + ) + ); + } + + private void test(String type, String version) { + Response resp = given() + .pathParam("type", type) + .pathParam("version", version) + .when().get("/component/{type}/{version}") + .then().extract().response(); List> list = resp.getBody().jsonPath().getList(""); Assertions.assertTrue(list.size() > 100); From 05273db3e9c7312f9332cdaf7db7972f7ea5af3e Mon Sep 17 00:00:00 2001 From: Renjith Narayanan Date: Mon, 5 Jan 2026 22:33:19 +0530 Subject: [PATCH 2/2] changes to generate rest dsl from openapi 3.1 docs --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3c7cfa0..3bde371 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ under the License. 4.0.0 org.apache.camel.kameleon kameleon - 0.4.6 + 0.4.1 3.8.1 true