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();

Reply via email to