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

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

commit a582205c0f7f9510dc8d15f58e58332931c4bab5
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Apr 24 07:47:59 2025 +0200

    CAMEL-22014: camel-jbang - Should be able to include groovy files on 
classpath
---
 .../camel/dsl/jbang/core/common/GistHelper.java    |  3 +-
 .../camel/dsl/jbang/core/common/GitHubHelper.java  |  3 +-
 .../camel/dsl/jbang/core/common/ProcessHelper.java |  2 +-
 .../camel/dsl/jbang/core/common/SourceHelper.java  |  2 +-
 .../src/main/resources/templates/groovy.tmpl       |  4 ---
 .../src/main/resources/templates/js.tmpl           |  4 ---
 .../camel/dsl/jbang/core/commands/ExportTest.java  | 30 ++++++++++++++++++++
 .../src/test/resources/demo.groovy                 | 20 ++++++++++++++
 .../src/test/resources/groovy-demo.camel.yaml      | 32 ++++++++++++++++++++++
 .../DependencyDownloaderLanguageResolver.java      |  2 +-
 .../camel/main/download/TransactedDownloader.java  |  4 +--
 11 files changed, 89 insertions(+), 17 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java
index be79242041b..a171e09f24d 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java
@@ -103,8 +103,7 @@ public final class GistHelper {
                     properties.add(u);
                 } else if (routes != null) {
                     if ("java".equalsIgnoreCase(ext) || 
"xml".equalsIgnoreCase(ext)
-                            || "yaml".equalsIgnoreCase(ext)
-                            || "groovy".equalsIgnoreCase(ext) || 
"js".equalsIgnoreCase(ext)) {
+                            || "yaml".equalsIgnoreCase(ext) || 
"camel.yaml".equalsIgnoreCase(ext)) {
                         String rawUrl = c.get("raw_url").asText();
                         String u = asGistSingleUrl(rawUrl);
                         routes.add(u);
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java
index a7756ac24cc..b6dfa0972cd 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java
@@ -126,8 +126,7 @@ public final class GitHubHelper {
                         properties.add(u);
                     } else if (routes != null) {
                         if ("java".equalsIgnoreCase(ext) || 
"xml".equalsIgnoreCase(ext)
-                                || "yaml".equalsIgnoreCase(ext) || 
"camel.yaml".equalsIgnoreCase(ext)
-                                || "groovy".equalsIgnoreCase(ext) || 
"js".equalsIgnoreCase(ext)) {
+                                || "yaml".equalsIgnoreCase(ext) || 
"camel.yaml".equalsIgnoreCase(ext)) {
                             String htmlUrl = c.get("html_url").asText();
                             String u = asGithubSingleUrl(htmlUrl);
                             routes.add(u);
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ProcessHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ProcessHelper.java
index 0ea3e1a5b13..3286111648d 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ProcessHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ProcessHelper.java
@@ -27,7 +27,7 @@ import org.apache.camel.util.json.JsonObject;
 
 public final class ProcessHelper {
 
-    private static final String[] DSL_EXT = new String[] { "groovy", "java", 
"js", "xml", "yaml" };
+    private static final String[] DSL_EXT = new String[] { "java", "xml", 
"yaml" };
     private static final Pattern PATTERN = Pattern.compile("([\\w|\\-.])+");
 
     private ProcessHelper() {
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/SourceHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/SourceHelper.java
index c83b82ca3fe..819fed24be1 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/SourceHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/SourceHelper.java
@@ -38,7 +38,7 @@ import org.apache.camel.util.IOHelper;
 public class SourceHelper {
 
     private static final String[] ACCEPTED_FILE_EXT
-            = new String[] { "java", "groovy", "js", "xml", "yaml" };
+            = new String[] { "java", "xml", "yaml" };
 
     public static Source resolveSource(String source) {
         List<Source> resolved = 
resolveSources(Collections.singletonList(source));
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/groovy.tmpl 
b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/groovy.tmpl
deleted file mode 100644
index ea3d8878a0a..00000000000
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/groovy.tmpl
+++ /dev/null
@@ -1,4 +0,0 @@
-from('timer:groovy?period=1000')
-  .setBody()
-    .simple('Hello Camel from ${routeId}')
-  .log('${body}')
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/js.tmpl 
b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/js.tmpl
deleted file mode 100644
index ec4fa29ddb8..00000000000
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/js.tmpl
+++ /dev/null
@@ -1,4 +0,0 @@
-from('timer:js?period=1000')
-  .setBody()
-    .simple('Hello Camel from ${routeId}')
-  .log('${body}')
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
index 6565b115b9d..565f332a77b 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
@@ -536,4 +536,34 @@ class ExportTest {
         appProps.load(new FileInputStream(appProperties));
         Assertions.assertEquals("world", appProps.getProperty("hello"));
     }
+
+    @ParameterizedTest
+    @MethodSource("runtimeProvider")
+    public void shouldExportGroovy(RuntimeType rt) throws Exception {
+        Export command = createCommand(rt,
+                new String[] { "src/test/resources/groovy-demo.camel.yaml", 
"src/test/resources/demo.groovy" },
+                "--gav=examples:route:1.0.0", "--dir=" + workingDir, 
"--quiet");
+        int exit = command.doCall();
+
+        Assertions.assertEquals(0, exit);
+        Model model = readMavenModel();
+        Assertions.assertEquals("examples", model.getGroupId());
+        Assertions.assertEquals("route", model.getArtifactId());
+        Assertions.assertEquals("1.0.0", model.getVersion());
+
+        /*        if (rt == RuntimeType.main) {
+            Assertions.assertTrue(containsDependency(model.getDependencies(), 
"org.apache.camel", "camel-groovy", null));
+        } else if (rt == RuntimeType.springBoot) {
+            Assertions.assertTrue(
+                    containsDependency(model.getDependencies(), 
"org.apache.camel.springboot", "camel-groovy-starter", null));
+        } else if (rt == RuntimeType.quarkus) {
+            Assertions.assertTrue(
+                    containsDependency(model.getDependencies(), 
"org.apache.camel.quarkus", "camel-quarkus-groovy", null));
+        }*/
+
+        File f = 
workingDir.toPath().resolve("src/main/resources/demo.groovy").toFile();
+        Assertions.assertTrue(f.isFile());
+        Assertions.assertTrue(f.exists());
+    }
+
 }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/test/resources/demo.groovy 
b/dsl/camel-jbang/camel-jbang-core/src/test/resources/demo.groovy
new file mode 100644
index 00000000000..80c731d917b
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/test/resources/demo.groovy
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+return [
+    id: 12345,
+    data: "Hello World"
+]
\ No newline at end of file
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/resources/groovy-demo.camel.yaml 
b/dsl/camel-jbang/camel-jbang-core/src/test/resources/groovy-demo.camel.yaml
new file mode 100644
index 00000000000..e48f56790aa
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/test/resources/groovy-demo.camel.yaml
@@ -0,0 +1,32 @@
+#
+# 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.
+#
+
+- route:
+    from:
+      uri: timer
+      parameters:
+        timerName: demo
+        repeatCount: "1"
+      steps:
+        - to:
+            variableReceive: var1
+            uri: language
+            parameters:
+              languageName: groovy
+              resourceUri: classpath:demo.groovy
+        - log:
+            message: ${variable.var1}
\ No newline at end of file
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java
index df6bc024bd4..5dfe06305e3 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java
@@ -33,7 +33,7 @@ import org.apache.camel.tooling.model.LanguageModel;
 public final class DependencyDownloaderLanguageResolver extends 
DefaultLanguageResolver {
 
     private static final String ACCEPTED_STUB_NAMES
-            = "constant,exchangeProperty,header,ref,simple";
+            = "constant,exchangeProperty,header,ref,simple,variable";
 
     private final CamelCatalog catalog = new DefaultCamelCatalog();
     private final DependencyDownloader downloader;
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/TransactedDownloader.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/TransactedDownloader.java
index d0fa95d2fc0..339abd473a6 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/TransactedDownloader.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/TransactedDownloader.java
@@ -31,6 +31,7 @@ import org.apache.camel.spi.TransactedPolicy;
  * When using transacted then we need to download the runtime implementation
  */
 public class TransactedDownloader {
+
     private static final String[] TRANSACTED_POLICIES = new String[] {
             "PROPAGATION_REQUIRED",
             "PROPAGATION_REQUIRES_NEW",
@@ -45,7 +46,6 @@ public class TransactedDownloader {
     }
 
     public static void registerDownloadReifiers(KameletMain main) {
-
         ProcessorReifier.registerReifier(TransactedDefinition.class,
                 (route, processorDefinition) -> {
                     if (processorDefinition instanceof TransactedDefinition) {
@@ -62,9 +62,9 @@ public class TransactedDownloader {
     }
 
     private static class DummyTransactedPolicy implements TransactedPolicy {
+
         @Override
         public void beforeWrap(final Route route, final NamedNode definition) {
-
         }
 
         @Override

Reply via email to