This is an automated email from the ASF dual-hosted git repository. marat pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
The following commit(s) were added to refs/heads/main by this push: new 18382000 Fix #1340 18382000 is described below commit 18382000091328380fcdf2ae80c42d8077b15fea Author: Marat Gubaidullin <ma...@talismancloud.io> AuthorDate: Thu Jul 18 16:01:56 2024 -0400 Fix #1340 --- karavan-generator/pom.xml | 39 +++++++++- .../camel/karavan/generator/AbstractGenerator.java | 83 +++++++++++++++------- .../camel/karavan/generator/KameletGenerator.java | 22 +++--- 3 files changed, 104 insertions(+), 40 deletions(-) diff --git a/karavan-generator/pom.xml b/karavan-generator/pom.xml index 8b8dbebe..9569bd11 100644 --- a/karavan-generator/pom.xml +++ b/karavan-generator/pom.xml @@ -29,8 +29,8 @@ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <surefire-plugin.version>3.0.0-M5</surefire-plugin.version> <version.camel-core>4.7.0</version.camel-core> - <version.camel-kamelet>4.6.0</version.camel-kamelet> - <version.vertx>4.5.7</version.vertx> + <version.camel-kamelet>4.7.0</version.camel-kamelet> + <version.vertx>4.5.9</version.vertx> </properties> <dependencies> <dependency> @@ -43,6 +43,11 @@ <artifactId>vertx-core</artifactId> <version>${version.vertx}</version> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + <version>2.16.1</version> + </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-catalog</artifactId> @@ -57,6 +62,28 @@ <groupId>org.apache.camel.kamelets</groupId> <artifactId>camel-kamelets-catalog</artifactId> <version>${version.camel-kamelet}</version> + <exclusions> + <exclusion> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-core</artifactId> + </exclusion> + <exclusion> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + </exclusion> + <exclusion> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-annotations</artifactId> + </exclusion> + <exclusion> + <groupId>com.fasterxml.jackson.dataformat</groupId> + <artifactId>:jackson-dataformat-yaml</artifactId> + </exclusion> + <exclusion> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-jsr310</artifactId> + </exclusion> + </exclusions> </dependency> </dependencies> <build> @@ -104,6 +131,14 @@ </archive> </configuration> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>16</source> + <target>16</target> + </configuration> + </plugin> </plugins> </build> <repositories> diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java index cc83d878..9538a7d4 100644 --- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java +++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java @@ -20,10 +20,7 @@ import io.vertx.core.Vertx; import io.vertx.core.buffer.Buffer; import io.vertx.core.json.JsonArray; import io.vertx.core.json.JsonObject; -import org.apache.camel.builder.RouteBuilder; import org.apache.camel.catalog.CamelCatalog; -import org.apache.camel.catalog.ConfigurationPropertiesValidationResult; -import org.apache.camel.catalog.DefaultCamelCatalog; import org.apache.camel.catalog.VersionHelper; import org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader; @@ -391,30 +388,30 @@ public class AbstractGenerator { } } - protected List<String> listResources(String resourceFolder) { - List<Path> filePaths = new ArrayList<>(); - try { - URI uri = VersionHelper.class.getResource(resourceFolder).toURI(); - Path myPath; - FileSystem fileSystem = null; - if (uri.getScheme().equals("jar")) { - fileSystem = FileSystems.newFileSystem(uri, Collections.emptyMap()); - myPath = fileSystem.getPath(resourceFolder); - } else { - myPath = Paths.get(uri); - } - filePaths = Files.walk(myPath, 10).collect(Collectors.toList()); - - // Close the file system if opened - if (fileSystem != null) { - fileSystem.close(); - } - } catch (URISyntaxException | IOException e) { - e.printStackTrace(); - } - return filePaths.stream().map(path -> path.getFileName().toString()) - .collect(Collectors.toList()); - } +// protected List<String> listResources(String resourceFolder) { +// List<Path> filePaths = new ArrayList<>(); +// try { +// URI uri = VersionHelper.class.getResource(resourceFolder).toURI(); +// Path myPath; +// FileSystem fileSystem = null; +// if (uri.getScheme().equals("jar")) { +// fileSystem = FileSystems.newFileSystem(uri, Collections.emptyMap()); +// myPath = fileSystem.getPath(resourceFolder); +// } else { +// myPath = Paths.get(uri); +// } +// filePaths = Files.walk(myPath, 10).collect(Collectors.toList()); +// +// // Close the file system if opened +// if (fileSystem != null) { +// fileSystem.close(); +// } +// } catch (URISyntaxException | IOException e) { +// e.printStackTrace(); +// } +// return filePaths.stream().map(path -> path.getFileName().toString()) +// .collect(Collectors.toList()); +// } protected String getMetaLanguage(String name) { try { @@ -554,4 +551,36 @@ public class AbstractGenerator { } return deprecatedClasses; } + + public List<String> listResources(String resourceFolder) { + List<String> result = new ArrayList<>(); + try { + URI uri = Objects.requireNonNull(KaravanGenerator.class.getResource(resourceFolder)).toURI(); + Path myPath; + FileSystem fileSystem = null; + if (uri.getScheme().equals("jar")) { + fileSystem = FileSystems.newFileSystem(uri, Collections.emptyMap()); + myPath = fileSystem.getPath(resourceFolder); + } else { + myPath = Paths.get(uri); + } + + try (var pathsStream = Files.walk(myPath, 10)) { + pathsStream + .filter(Files::isRegularFile) + .map(path -> path.getFileName().toString()) + .forEach(result::add); + } catch (IOException e) { + var error = e.getCause() != null ? e.getCause() : e; + LOGGER.severe("IOException " + error.getMessage()); + } + if (fileSystem != null) { + fileSystem.close(); + } + } catch (URISyntaxException | IOException e) { + var error = e.getCause() != null ? e.getCause() : e; + LOGGER.severe("URISyntaxException | IOException " + error.getMessage()); + } + return result; + } } diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KameletGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KameletGenerator.java index 0bd0b9a3..394fe873 100644 --- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KameletGenerator.java +++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KameletGenerator.java @@ -16,6 +16,7 @@ */ package org.apache.camel.karavan.generator; +import org.apache.camel.builder.RouteBuilder; import org.apache.camel.kamelets.catalog.KameletsCatalog; import org.apache.camel.v1.Kamelet; @@ -24,6 +25,8 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.net.URI; +import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; @@ -31,6 +34,7 @@ import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; public class KameletGenerator extends AbstractGenerator { @@ -44,19 +48,18 @@ public class KameletGenerator extends AbstractGenerator { public void createKamelets(String folder, boolean singleFile) { clearDirectory(Paths.get(folder).toFile()); - KameletsCatalog catalog = new KameletsCatalog(); StringBuilder list = new StringBuilder(); StringBuilder sources = new StringBuilder(); - List<Map.Entry<String, Kamelet>> kamelets = new ArrayList<>(catalog.getKamelets().entrySet()); + var kamelets = listResources("/kamelets/").stream().sorted().toList(); for (int i = 0; i < kamelets.size() ; i++) { - Map.Entry<String, Kamelet> k = kamelets.get(i); - String name = k.getValue().getMetadata().getName(); + var fileName = kamelets.get(i); + var name = fileName.replace(".kamelet.yaml", ""); list.append(name).append("\n"); if (singleFile) { - sources.append(readKamelet(name)).append(i != kamelets.size() - 1 ? "\n---\n": "\n"); + sources.append(readKamelet(fileName)).append(i != kamelets.size() - 1 ? "\n---\n": "\n"); } else { - saveKamelet(folder, name); + saveKamelet(folder, fileName); } } saveFile(folder, "kamelets.properties", list.toString()); @@ -65,8 +68,7 @@ public class KameletGenerator extends AbstractGenerator { } } - public String readKamelet(String name) { - String fileName = name + ".kamelet.yaml"; + public String readKamelet(String fileName) { InputStream inputStream = KameletsCatalog.class.getResourceAsStream("/kamelets/" + fileName); return new BufferedReader( new InputStreamReader(inputStream, StandardCharsets.UTF_8)) @@ -75,9 +77,7 @@ public class KameletGenerator extends AbstractGenerator { .collect(Collectors.joining("\n")); } - public void saveKamelet(String folder, String name) { -// LOGGER.info("Creating kamelet " + name); - String fileName = name + ".kamelet.yaml"; + public void saveKamelet(String folder, String fileName) { InputStream inputStream = KameletsCatalog.class.getResourceAsStream("/kamelets/" + fileName); try { File targetFile = Paths.get(folder, fileName).toFile();