This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.18.x by this push:
new d675057e477 Generate REST DSL from OpenAPI YAML (#8390)
d675057e477 is described below
commit d675057e477b2496782dcee5ff599fecd7bd4a94
Author: Marat Gubaidullin <ma...@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);
+ }
}