From cb8f44ff633fe3d23efc0d4c32ca3111ab8b5bd3 Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Sat, 23 Dec 2023 10:02:06 +0000 Subject: [PATCH] Restore old sorting behaviour - In #946 we added new ways to add items to single selector while still keeping Map. Order to keep old sorting behaviour we try to pass incoming map via new HashMap as that was a way it worked. This should limit risks for breaking things in a patch release. --- .../shell/component/flow/BaseSingleItemSelector.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/spring-shell-core/src/main/java/org/springframework/shell/component/flow/BaseSingleItemSelector.java b/spring-shell-core/src/main/java/org/springframework/shell/component/flow/BaseSingleItemSelector.java index 73d0de27..7866c589 100644 --- a/spring-shell-core/src/main/java/org/springframework/shell/component/flow/BaseSingleItemSelector.java +++ b/spring-shell-core/src/main/java/org/springframework/shell/component/flow/BaseSingleItemSelector.java @@ -17,6 +17,7 @@ package org.springframework.shell.component.flow; import java.util.ArrayList; import java.util.Comparator; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; @@ -81,7 +82,11 @@ public abstract class BaseSingleItemSelector extends BaseInput selectItems) { - List items = selectItems.entrySet().stream() + // TODO: we changed to keep items as SelectItem's, to try to keep old sorting + // behaviour we go via HashMap gh-946. Later we should remove this step. + Map selectItemsMap = new HashMap<>(); + selectItemsMap.putAll(selectItems); + List items = selectItemsMap.entrySet().stream() .map(e -> SelectItem.of(e.getKey(), e.getValue())) .collect(Collectors.toList()); selectItems(items);