From d8e64edfe2ed30e61a8c07fca6909be0553ce73d Mon Sep 17 00:00:00 2001 From: Steve Hu Date: Sun, 7 Jul 2024 12:18:03 -0400 Subject: [PATCH] fixes #2277 move MapUtil to light-4j utility module --- .../java/com/networknt/utility/MapUtil.java | 30 +++++++++++++++++++ .../com/networknt/utility/MapUtilTest.java | 26 ++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 utility/src/main/java/com/networknt/utility/MapUtil.java create mode 100644 utility/src/test/java/com/networknt/utility/MapUtilTest.java diff --git a/utility/src/main/java/com/networknt/utility/MapUtil.java b/utility/src/main/java/com/networknt/utility/MapUtil.java new file mode 100644 index 0000000000..90e3f8cfb3 --- /dev/null +++ b/utility/src/main/java/com/networknt/utility/MapUtil.java @@ -0,0 +1,30 @@ +package com.networknt.utility; +import java.util.Iterator; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +public class MapUtil { + // Method to get value from HashMap with case-insensitive key lookup + public static Optional getValueIgnoreCase(Map map, String key) { + for (Map.Entry entry : map.entrySet()) { + if (Objects.equals(entry.getKey().toLowerCase(), key.toLowerCase())) { + return Optional.of(entry.getValue()); + } + } + return Optional.empty(); + } + + // Method to delete value from HashMap with case-insensitive key lookup + public static Optional delValueIgnoreCase(Map map, String key) { + for(Iterator> it = map.entrySet().iterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + if (Objects.equals(entry.getKey().toLowerCase(), key.toLowerCase())) { + it.remove(); + return Optional.of(entry.getValue()); + } + } + return Optional.empty(); + } + +} diff --git a/utility/src/test/java/com/networknt/utility/MapUtilTest.java b/utility/src/test/java/com/networknt/utility/MapUtilTest.java new file mode 100644 index 0000000000..30a749071a --- /dev/null +++ b/utility/src/test/java/com/networknt/utility/MapUtilTest.java @@ -0,0 +1,26 @@ +package com.networknt.utility; + + +import org.junit.Assert; +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import static com.networknt.utility.MapUtil.getValueIgnoreCase; + +public class MapUtilTest { + @Test + public void testGetValueIgnoreCase() { + Map hashMap = new HashMap<>(); + hashMap.put("Key1", "Value1"); + hashMap.put("Key2", "Value2"); + + // Get value from HashMap with case-insensitive key lookup + String key = "key1"; + Optional value = getValueIgnoreCase(hashMap, key); + Assert.assertTrue(value.isPresent()); + } + +}