diff --git a/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java b/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java index 62921593a1c2..c652036a8cda 100644 --- a/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java +++ b/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java @@ -137,6 +137,11 @@ public void clear() { super.clear(); } + @Override + public V getOrDefault(Object key, V defaultValue) { + V value = this.get(key); + return value == null ? defaultValue : value; + } /** * Convert the given key to a case-insensitive key. diff --git a/spring-core/src/test/java/org/springframework/util/LinkedCaseInsensitiveMapTests.java b/spring-core/src/test/java/org/springframework/util/LinkedCaseInsensitiveMapTests.java index 7d3b171ba75a..fd5d68712396 100644 --- a/spring-core/src/test/java/org/springframework/util/LinkedCaseInsensitiveMapTests.java +++ b/spring-core/src/test/java/org/springframework/util/LinkedCaseInsensitiveMapTests.java @@ -55,4 +55,16 @@ public void putWithOverlappingKeys() { assertEquals("value3", map.get("Key")); } + @Test + public void putAndGetDefault() { + map.put("key", "value1"); + map.put("KEY", "value2"); + map.put("Key", "value3"); + assertEquals("value3", map.getOrDefault("key", "N")); + assertEquals("value3", map.getOrDefault("KEY", "N")); + assertEquals("value3", map.getOrDefault("Key", "N")); + assertEquals("N", map.getOrDefault("keeeey", "N")); + assertEquals("N", map.getOrDefault(new Object(), "N")); + } + }