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
The following commit(s) were added to refs/heads/main by this push: new 806a1c639c7 Generate REST DSL from OpenAPI YAML (#8390) 806a1c639c7 is described below commit 806a1c639c7a67200af93e6585b791a31cce2d7c Author: Marat Gubaidullin <marat.gubaidul...@gmail.com> AuthorDate: Fri Sep 16 14:27:34 2022 -0400 Generate REST DSL from OpenAPI YAML (#8390) --- .../dsl/jbang/core/commands/CodeRestGenerator.java | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) 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 a32565dd3b0..df225fd407b 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 @@ -16,8 +16,11 @@ */ package org.apache.camel.dsl.jbang.core.commands; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.nio.file.Files; import java.nio.file.Paths; +import java.util.Map; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -28,6 +31,8 @@ import org.apache.camel.generator.openapi.RestDslGenerator; import org.apache.camel.impl.lw.LightweightCamelContext; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.config.Configurator; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.SafeConstructor; import picocli.CommandLine; @CommandLine.Command(name = "rest", description = "Generate REST DSL source code from OpenApi specification") @@ -48,12 +53,11 @@ public class CodeRestGenerator extends CamelCommand { @Override public Integer call() throws Exception { - final ObjectMapper mapper = new ObjectMapper(); - final JsonNode node = mapper.readTree(Paths.get(input).toFile()); + final JsonNode node = input.endsWith("json") ? readNodeFromJson() : readNodeFromYaml(); OasDocument document = (OasDocument) Library.readDocument(node); Configurator.setRootLevel(Level.OFF); try (CamelContext context = new LightweightCamelContext()) { - final String yaml = type.equals("yaml") + final String yaml = type.equalsIgnoreCase("yaml") ? RestDslGenerator.toYaml(document).generate(context, generateRoutes) : RestDslGenerator.toXml(document).generate(context); if (output == null) { @@ -64,4 +68,16 @@ public class CodeRestGenerator extends CamelCommand { } return 0; } + + private JsonNode readNodeFromJson() throws Exception { + final ObjectMapper mapper = new ObjectMapper(); + return mapper.readTree(Paths.get(input).toFile()); + } + + private JsonNode readNodeFromYaml() throws FileNotFoundException { + final ObjectMapper mapper = new ObjectMapper(); + Yaml loader = new Yaml(new SafeConstructor()); + Map map = loader.load(new FileInputStream(Paths.get(input).toFile())); + return mapper.convertValue(map, JsonNode.class); + } }