You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/05/04 06:27:43 UTC

[camel-kamelets] 01/02: KameletCatalog is empty with a bundled jar

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

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

commit ae827f0c7bb3ee9c248006ecc08579e2fee46172
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue May 4 08:19:04 2021 +0200

    KameletCatalog is empty with a bundled jar
---
 library/camel-kamelets-catalog/pom.xml             | 33 +++++++++++++++++++++-
 .../camel/kamelets/catalog/KameletsCatalog.java    | 19 +++++++++----
 2 files changed, 46 insertions(+), 6 deletions(-)

diff --git a/library/camel-kamelets-catalog/pom.xml b/library/camel-kamelets-catalog/pom.xml
index 74332c9..9864d2b 100644
--- a/library/camel-kamelets-catalog/pom.xml
+++ b/library/camel-kamelets-catalog/pom.xml
@@ -85,6 +85,13 @@
             <scope>test</scope>
             <version>${junit.jupiter.version}</version>
         </dependency>
+<!-- https://mvnrepository.com/artifact/io.github.classgraph/classgraph -->
+<dependency>
+    <groupId>io.github.classgraph</groupId>
+    <artifactId>classgraph</artifactId>
+    <version>4.8.105</version>
+</dependency>
+
 
     </dependencies>
 
@@ -103,7 +110,7 @@
 
                         <configuration>
                             <overwrite>true</overwrite>
-                            <outputDirectory>src/main/resources/kamelets</outputDirectory>
+                            <outputDirectory>${project.basedir}/src/main/resources/kamelets</outputDirectory>
                             <resources>
                                 <resource>
                                     <directory>./../../</directory>
@@ -116,6 +123,30 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+             
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                            <goal>add-resource</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>src/kamelets</source>
+                            </sources>
+                            <resources>
+                                <resource>
+                                    <directory>src/kamelets</directory>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
index 3e426fe..8e49b78 100644
--- a/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
+++ b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
@@ -22,13 +22,18 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
 import io.fabric8.camelk.v1alpha1.Kamelet;
 import io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaProps;
+import io.github.classgraph.ClassGraph;
+import io.github.classgraph.ScanResult;
 import org.apache.camel.kamelets.catalog.model.KameletLabelNames;
 import org.apache.commons.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -49,14 +54,17 @@ public class KameletsCatalog {
 
     public KameletsCatalog() throws IOException {
         initCatalog();
-        kameletNames = kameletModels.keySet().stream().sorted(Comparator.naturalOrder()).map(x -> sanitizeFileName(x)).collect(Collectors.toList());
+        kameletNames = kameletModels.keySet().stream().sorted(Comparator.naturalOrder()).map(x -> x).collect(Collectors.toList());
     }
 
     private void initCatalog() throws IOException {
-        List<String> files = IOUtils.readLines(KameletsCatalog.class.getClassLoader().getResourceAsStream(KAMELETS_DIR), StandardCharsets.UTF_8);
+        List<String> resourceNames;
+        try (ScanResult scanResult = new ClassGraph().acceptPaths("/" + KAMELETS_DIR + "/").scan()) {
+            resourceNames = scanResult.getAllResources().getPaths();
+        }
         for (String fileName:
-             files) {
-            Kamelet kamelet = mapper.readValue(KameletsCatalog.class.getClassLoader().getResourceAsStream(KAMELETS_DIR + File.separator + fileName), Kamelet.class);
+                resourceNames) {
+            Kamelet kamelet = mapper.readValue(KameletsCatalog.class.getResourceAsStream("/" + fileName), Kamelet.class);
             kameletModels.put(sanitizeFileName(fileName), kamelet);
         }
     }
@@ -66,7 +74,8 @@ public class KameletsCatalog {
         if (index > 0) {
             fileName = fileName.substring(0, index);
         }
-        return fileName;
+        String finalName = fileName.substring(9);
+        return finalName;
     }