You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/06/21 07:12:52 UTC
(camel) branch main updated: CAMEL-20903: camel-jbang - Only load custom plugin if in use
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new f8a47f3200a CAMEL-20903: camel-jbang - Only load custom plugin if in use
f8a47f3200a is described below
commit f8a47f3200a43ecc0830d497bb87b1f46a003af0
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Jun 21 09:12:33 2024 +0200
CAMEL-20903: camel-jbang - Only load custom plugin if in use
---
.../camel/dsl/jbang/core/common/PluginHelper.java | 28 ++++++++++++----------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java
index 8559679b9e5..e41233f085c 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java
@@ -24,7 +24,6 @@ import java.nio.file.Files;
import java.nio.file.StandardOpenOption;
import java.util.Optional;
import java.util.Properties;
-import java.util.stream.Stream;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.catalog.CamelCatalog;
@@ -70,7 +69,6 @@ public final class PluginHelper {
// first arg is the command name (ie camel generate xxx)
String target = args != null && args.length > 0 ? args[0] : null;
- boolean verbose = args != null && Stream.of(args).anyMatch(a -> a.startsWith("--verbose"));
if (config != null) {
CamelCatalog catalog = new DefaultCamelCatalog();
@@ -82,24 +80,30 @@ public final class PluginHelper {
String name = properties.getOrDefault("name", pluginKey).toString();
String command = properties.getOrDefault("command", name).toString();
-
- if (verbose) {
- main.getOut().println("Installed plugin: camel-jbang-plugin-" + command);
- }
+ String firstVersion = properties.getOrDefault("firstVersion", "").toString();
// only load the plugin if the command-line is calling this plugin
if (target != null && !target.equals(command)) {
- if (verbose) {
- main.getOut().println("Plugin not in use: camel-jbang-plugin-" + command);
- }
continue;
}
+ // check if plugin version can be loaded (cannot if we use an older camel version than the plugin)
+ if (!firstVersion.isBlank()) {
+ // compare versions without SNAPSHOT
+ String source = version;
+ if (source.endsWith("-SNAPSHOT")) {
+ source = source.replace("-SNAPSHOT", "");
+ }
+ boolean accept = VersionHelper.isGE(source, firstVersion);
+ if (!accept) {
+ main.getOut().println("Cannot load plugin camel-jbang-plugin-" + command + " with version: " + version
+ + " because plugin has first version: " + firstVersion + ". Exit");
+ main.quit(1);
+ }
+ }
+
Optional<Plugin> plugin = FACTORY_FINDER.newInstance("camel-jbang-plugin-" + command, Plugin.class);
if (plugin.isEmpty()) {
- if (verbose) {
- main.getOut().println("Downloading plugin: camel-jbang-plugin-" + command);
- }
plugin = downloadPlugin(command, main, version);
}
if (plugin.isPresent()) {