瀏覽代碼

fix broken locale menu display

Jason Rivard 2 年之前
父節點
當前提交
3b316b9928

+ 6 - 1
lib-util/src/main/java/password/pwm/util/java/CollectorUtil.java

@@ -74,7 +74,12 @@ public class CollectorUtil
         return Collectors.collectingAndThen( Collectors.toUnmodifiableMap(
         return Collectors.collectingAndThen( Collectors.toUnmodifiableMap(
                         keyMapper,
                         keyMapper,
                         valueMapper ),
                         valueMapper ),
-                s -> new TreeMap<>( comparator ) );
+                s -> {
+                    final SortedMap<K, U> sortedMap = new TreeMap<>( comparator );
+                    sortedMap.putAll( s );
+                    return sortedMap;
+                } );
+
     }
     }
 
 
     public static <T, K extends Enum<K>, U> Collector<T, ?, Map<K, U>> toUnmodifiableEnumMap(
     public static <T, K extends Enum<K>, U> Collector<T, ?, Map<K, U>> toUnmodifiableEnumMap(

+ 20 - 0
lib-util/src/test/java/password/pwm/util/java/CollectorUtilTest.java

@@ -28,6 +28,7 @@ import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map;
 import java.util.Set;
 import java.util.Set;
+import java.util.SortedMap;
 import java.util.function.Function;
 import java.util.function.Function;
 
 
 public class CollectorUtilTest
 public class CollectorUtilTest
@@ -104,4 +105,23 @@ public class CollectorUtilTest
         Assertions.assertEquals( TestEnum.ONE, testSet.iterator().next() );
         Assertions.assertEquals( TestEnum.ONE, testSet.iterator().next() );
         Assertions.assertThrows( UnsupportedOperationException.class, () -> testSet.remove( TestEnum.ONE ) );
         Assertions.assertThrows( UnsupportedOperationException.class, () -> testSet.remove( TestEnum.ONE ) );
     }
     }
+
+    @Test
+    public void collectorToSortedMap()
+    {
+        final Map<String, String> input = Map.ofEntries(
+                Map.entry( "2", "two" ),
+                Map.entry( "1", "one" ),
+                Map.entry( "3", "three" ) );
+
+        final SortedMap<String, String> sortedMap = input.entrySet().stream()
+                .collect( CollectorUtil.toSortedMap(
+                        Map.Entry::getKey,
+                        Map.Entry::getValue,
+                        String.CASE_INSENSITIVE_ORDER
+                ) );
+
+        Assertions.assertEquals( 3, sortedMap.size() );
+        Assertions.assertEquals( "1", sortedMap.firstKey() );
+    }
 }
 }