This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch karaf-4.4.x
in repository https://gitbox.apache.org/repos/asf/karaf.git


The following commit(s) were added to refs/heads/karaf-4.4.x by this push:
     new ebd224b1a4 fix(tooling): use LinkedHashSet for deterministic option 
ordering in help generation (#2306) (#2337)
ebd224b1a4 is described below

commit ebd224b1a4fcd85571194bea35b301dc02f26b21
Author: JB Onofré <[email protected]>
AuthorDate: Sat Mar 14 19:09:53 2026 +0100

    fix(tooling): use LinkedHashSet for deterministic option ordering in help 
generation (#2306) (#2337)
    
    * Revert "Use single file generation to avoid verify race condition (#2285)"
    
    This reverts commit 3b067c9dc0c4b26bcd4c31d78702c9a0d2a44b93.
    
    * fix(tooling): use LinkedHashSet for deterministic option ordering in help 
generation
    
    Replace HashSet with LinkedHashSet in all CommandHelpPrinter
    implementations (Markdown, AsciiDoctor, DocBook, UserConf) to
    preserve insertion order of options.
    
    HashSet provides no ordering guarantee, causing non-deterministic
    output that breaks the test-commands-generate-help invoker test
    when dependencies change (e.g. jline upgrade from 3.30.6 to 3.30.8).
---
 .../apache/karaf/tooling/commands/AsciiDoctorCommandHelpPrinter.java   | 2 +-
 .../org/apache/karaf/tooling/commands/DocBookCommandHelpPrinter.java   | 3 ++-
 .../org/apache/karaf/tooling/commands/MarkdownCommandHelpPrinter.java  | 2 +-
 .../org/apache/karaf/tooling/commands/UserConfCommandHelpPrinter.java  | 3 ++-
 4 files changed, 6 insertions(+), 4 deletions(-)

diff --git 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/AsciiDoctorCommandHelpPrinter.java
 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/AsciiDoctorCommandHelpPrinter.java
index 1aecb99b1c..5d0fc03073 100644
--- 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/AsciiDoctorCommandHelpPrinter.java
+++ 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/AsciiDoctorCommandHelpPrinter.java
@@ -36,7 +36,7 @@ public class AsciiDoctorCommandHelpPrinter extends 
AbstractCommandHelpPrinter {
     @Override
     public void printHelp(Action action, PrintStream out, boolean 
includeHelpOption) {
         Command command = action.getClass().getAnnotation(Command.class);
-        Set<Option> options = new HashSet<>();
+        Set<Option> options = new LinkedHashSet<>();
         List<Argument> arguments = new ArrayList<>();
         Map<Argument, Field> argFields = new HashMap<>();
         Map<Option, Field> optFields = new HashMap<>();
diff --git 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/DocBookCommandHelpPrinter.java
 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/DocBookCommandHelpPrinter.java
index 2cdad99650..cf259fcb60 100644
--- 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/DocBookCommandHelpPrinter.java
+++ 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/DocBookCommandHelpPrinter.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -41,7 +42,7 @@ public class DocBookCommandHelpPrinter extends 
AbstractCommandHelpPrinter {
     @Override
     public void printHelp(Action action, PrintStream out, boolean 
includeHelpOption) {
         Command command = action.getClass().getAnnotation(Command.class);
-        Set<Option> options = new HashSet<>();
+        Set<Option> options = new LinkedHashSet<>();
         List<Argument> arguments = new ArrayList<>();
         Map<Argument, Field> argFields = new HashMap<>();
         Map<Option, Field> optFields = new HashMap<>();
diff --git 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/MarkdownCommandHelpPrinter.java
 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/MarkdownCommandHelpPrinter.java
index 7b54ab773f..d5269a91d7 100644
--- 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/MarkdownCommandHelpPrinter.java
+++ 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/MarkdownCommandHelpPrinter.java
@@ -31,7 +31,7 @@ public class MarkdownCommandHelpPrinter extends 
AbstractCommandHelpPrinter {
     @Override
     public void printHelp(Action action, PrintStream out, boolean 
includeHelpOption) {
         Command command = action.getClass().getAnnotation(Command.class);
-        Set<Option> options = new HashSet<>();
+        Set<Option> options = new LinkedHashSet<>();
         List<Argument> arguments = new ArrayList<>();
         Map<Argument, Field> argFields = new HashMap<>();
         Map<Option, Field> optFields = new HashMap<>();
diff --git 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/UserConfCommandHelpPrinter.java
 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/UserConfCommandHelpPrinter.java
index 23af956d03..4ac2633b10 100644
--- 
a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/UserConfCommandHelpPrinter.java
+++ 
b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/commands/UserConfCommandHelpPrinter.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -41,7 +42,7 @@ public class UserConfCommandHelpPrinter extends 
AbstractCommandHelpPrinter {
     @Override
     public void printHelp(Action action, PrintStream out, boolean 
includeHelpOption) {
         Command command = action.getClass().getAnnotation(Command.class);
-        Set<Option> options = new HashSet<>();
+        Set<Option> options = new LinkedHashSet<>();
         List<Argument> arguments = new ArrayList<>();
         Map<Argument, Field> argFields = new HashMap<>();
         Map<Option, Field> optFields = new HashMap<>();

Reply via email to