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 2026/08/13 09:26:13 UTC

(camel) branch main updated: CAMEL-24388: Guard against duplicate plugin subcommand registration

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 b9f9d833f1f0 CAMEL-24388: Guard against duplicate plugin subcommand registration
b9f9d833f1f0 is described below

commit b9f9d833f1f0e7ca2621cc3e948994b28a9d30d7
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Aug 13 11:26:07 2026 +0200

    CAMEL-24388: Guard against duplicate plugin subcommand registration
    
    Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
---
 .../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;
             }