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;
             }

Reply via email to