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

davsclaus pushed a commit to branch sdir
in repository https://gitbox.apache.org/repos/asf/camel.git

commit cf9eadae4d84e7561507da009691d3829ff1b958
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Aug 28 10:36:20 2024 +0200

    CAMEL-21126: camel-jbang - Using --source-dir and reload should not fail if 
non Camel routes are added in the source-dir such as csv files.
---
 .../java/org/apache/camel/main/KameletMain.java    |  7 ++++
 .../download/DependencyDownloaderRoutesLoader.java | 12 +++++++
 .../main/download/NoopRoutesBuilderLoader.java     | 39 ++++++++++++++++++++++
 3 files changed, 58 insertions(+)

diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
index 0053fd4ba03..f15786c1c65 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
@@ -786,6 +786,13 @@ public class KameletMain extends MainCommandLineSupport {
         }
         
routesLoader.setIgnoreLoadingError(this.mainConfigurationProperties.isRoutesCollectorIgnoreLoadingError());
 
+        // routes loader should ignore unknown extensions when using 
--source-dir as users may drop files
+        // in this folder that are not Camel routes but resource files.
+        String sourceDir = 
getInitialProperties().getProperty("camel.jbang.sourceDir");
+        if (sourceDir != null) {
+            routesLoader.setIgnoreUnknownExtensions(true);
+        }
+
         // use resolvers that can auto downloaded
         ecc.addContextPlugin(RoutesLoader.class, routesLoader);
     }
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java
index 6a81aaa6ecc..950340d01ff 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java
@@ -34,6 +34,7 @@ public class DependencyDownloaderRoutesLoader extends 
DefaultRoutesLoader {
     private final DependencyDownloader downloader;
     private final String camelVersion;
     private final String kameletsVersion;
+    private boolean ignoreUnknownExtensions;
 
     public DependencyDownloaderRoutesLoader(CamelContext camelContext) {
         this(camelContext, null, null);
@@ -46,6 +47,14 @@ public class DependencyDownloaderRoutesLoader extends 
DefaultRoutesLoader {
         this.kameletsVersion = kameletsVersion;
     }
 
+    public boolean isIgnoreUnknownExtensions() {
+        return ignoreUnknownExtensions;
+    }
+
+    public void setIgnoreUnknownExtensions(boolean ignoreUnknownExtensions) {
+        this.ignoreUnknownExtensions = ignoreUnknownExtensions;
+    }
+
     @Override
     protected RoutesBuilderLoader resolveService(String extension) {
         // we need to eager capture that we use this route loader extension so 
lets
@@ -96,6 +105,9 @@ public class DependencyDownloaderRoutesLoader extends 
DefaultRoutesLoader {
                 // allows for custom initialization
                 initRoutesBuilderLoader(loader);
                 ServiceHelper.startService(loader);
+            } else if (ignoreUnknownExtensions) {
+                // use a dummy loader to avoid camel to fail
+                loader = new NoopRoutesBuilderLoader(extension);
             }
         }
         return loader;
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/NoopRoutesBuilderLoader.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/NoopRoutesBuilderLoader.java
new file mode 100644
index 00000000000..3f7b18ad01e
--- /dev/null
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/NoopRoutesBuilderLoader.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.main.download;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.dsl.support.RouteBuilderLoaderSupport;
+import org.apache.camel.spi.Resource;
+
+public class NoopRoutesBuilderLoader extends RouteBuilderLoaderSupport {
+
+    protected NoopRoutesBuilderLoader(String extension) {
+        super(extension);
+    }
+
+    @Override
+    protected RouteBuilder doLoadRouteBuilder(Resource resource) throws 
Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                // noop
+            }
+        };
+    }
+
+}

Reply via email to