You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/03/10 18:34:31 UTC

(camel) 04/04: camel-jbang - Fix generate rest to work with openapi v3

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

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 0b364bbb9f8395e13455b609b3340e35c2256a0e
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Mar 10 19:34:09 2024 +0100

    camel-jbang - Fix generate rest to work with openapi v3
---
 dsl/camel-jbang/camel-jbang-core/pom.xml                 |  4 ----
 .../camel/dsl/jbang/core/commands/CodeRestGenerator.java | 16 +++++++++++++---
 parent/pom.xml                                           |  2 +-
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/pom.xml b/dsl/camel-jbang/camel-jbang-core/pom.xml
index 46876c47084..037f03f4b4a 100644
--- a/dsl/camel-jbang/camel-jbang-core/pom.xml
+++ b/dsl/camel-jbang/camel-jbang-core/pom.xml
@@ -155,10 +155,6 @@
             <artifactId>openapi-generator</artifactId>
             <version>${openapi-generator}</version>
             <exclusions>
-                <exclusion>
-                    <groupId>io.swagger.parser.v3</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
                 <exclusion>
                     <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-api</artifactId>
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CodeRestGenerator.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CodeRestGenerator.java
index 47bd9428494..7c3e3363e4f 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CodeRestGenerator.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CodeRestGenerator.java
@@ -27,6 +27,8 @@ import java.util.Map;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import io.apicurio.datamodels.Library;
+import io.apicurio.datamodels.models.Document;
+import io.apicurio.datamodels.models.ModelType;
 import io.apicurio.datamodels.models.openapi.v30.OpenApi30Document;
 import org.apache.camel.CamelContext;
 import org.apache.camel.generator.openapi.RestDslGenerator;
@@ -63,6 +65,9 @@ public class CodeRestGenerator extends CamelCommand {
     @CommandLine.Option(names = { "-p", "--package" }, description = "Package for generated Java models",
                         defaultValue = "model")
     private String packageName;
+    @CommandLine.Option(names = { "-v", "--openapi-version" }, description = "Openapi specification 3.0 or 3.1",
+                        defaultValue = "3.0")
+    private String openApiVersion = "3.0";
 
     public CodeRestGenerator(CamelJBangMain main) {
         super(main);
@@ -71,14 +76,19 @@ public class CodeRestGenerator extends CamelCommand {
     @Override
     public Integer doCall() throws Exception {
         final ObjectNode node = input.endsWith("json") ? readNodeFromJson() : readNodeFromYaml();
-        OpenApi30Document document = (OpenApi30Document) Library.readDocument(node);
+        Document source = Library.readDocument(node);
+        ModelType mt = ModelType.OPENAPI30;
+        if ("3.1".equals(openApiVersion)) {
+            mt = ModelType.OPENAPI31;
+        }
+        OpenApi30Document doc = (OpenApi30Document) Library.transformDocument(source, mt);
         Configurator.setRootLevel(Level.OFF);
         try (CamelContext context = new DefaultCamelContext()) {
             String text = null;
             if ("yaml".equalsIgnoreCase(type)) {
-                text = RestDslGenerator.toYaml(document).generate(context, generateRoutes);
+                text = RestDslGenerator.toYaml(doc).generate(context, generateRoutes);
             } else if ("xml".equalsIgnoreCase(type)) {
-                text = RestDslGenerator.toXml(document).generate(context);
+                text = RestDslGenerator.toXml(doc).generate(context);
             }
             if (text != null) {
                 if (output == null) {
diff --git a/parent/pom.xml b/parent/pom.xml
index ab3aa0e3fe0..74c7db5eea4 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -444,7 +444,7 @@
         <swagger-java-version>1.6.10</swagger-java-version>
         <swagger-openapi3-version>2.2.20</swagger-openapi3-version>
         <swagger-java-parser-version>1.0.65</swagger-java-parser-version>
-        <swagger-openapi3-java-parser-version>2.1.20</swagger-openapi3-java-parser-version>
+        <swagger-openapi3-java-parser-version>2.1.21</swagger-openapi3-java-parser-version>
         <swagger-request-validator-version>2.40.0</swagger-request-validator-version>
         <stax-api-version>1.0.1</stax-api-version>
         <stringtemplate-version>4.3.4</stringtemplate-version>