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<>();