This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-4.22.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-4.22.x by this push:
new 24e73ab125cc CAMEL-24388: Guard against duplicate plugin subcommand
registration
24e73ab125cc is described below
commit 24e73ab125ccd0b5ed4c9f2d527982deeefcc424
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Aug 13 12:27:38 2026 +0200
CAMEL-24388: Guard against duplicate plugin subcommand registration
Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
.../org/apache/camel/dsl/jbang/core/common/PluginHelper.java | 10 ++++++++--
1 file changed, 8 insertions(+), 2 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 a28c5c7c9eb7..1638540992c9 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
@@ -170,8 +170,9 @@ public final class PluginHelper {
// Maven resolution for plugins unrelated to the current command.
Map<String, Plugin> plugins = getActivePlugins(main, repos, target);
for (Map.Entry<String, Plugin> plugin : plugins.entrySet()) {
- // Skip if this plugin was already loaded from embedded plugins
- if (foundEmbeddedPlugins &&
commandLine.getSubcommands().containsKey(plugin.getKey())) {
+ // Skip if this plugin command is already registered (e.g. loaded
from embedded plugins,
+ // or stale JSON config listing a plugin that is now built-in)
+ if (commandLine.getSubcommands().containsKey(plugin.getKey())) {
continue;
}
@@ -756,6 +757,11 @@ public final class PluginHelper {
}
}
+ // Skip if this plugin command is already registered
+ if (command != null &&
commandLine.getSubcommands().containsKey(command)) {
+ return true;
+ }
+
plugin.customize(commandLine, main);
return true;
}