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
