From 546bd667f0c61f1da3f91776e4ebb41cebd45a3d Mon Sep 17 00:00:00 2001 From: Martin Macko Date: Thu, 25 Feb 2016 18:24:39 +0100 Subject: [PATCH] Fixed getOrDefault bug in LinkedCaseInsensitiveMap issue: SPR-13981 --- .../util/LinkedCaseInsensitiveMap.java | 5 +++++ .../util/LinkedCaseInsensitiveMapTests.java | 12 ++++++++++++ 2 files changed, 17 insertions(+) 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")); + } + }