From d60c55c2960ca6c86ce4cfb219e6bba4cf723815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=85=B6=E8=8B=97?= Date: Thu, 14 May 2020 11:22:07 +0800 Subject: [PATCH] Use computeIfAbsent in ResourceBundleMessageSource Closes gh-25072 --- .../support/ResourceBundleMessageSource.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java b/spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java index 77519a4822..f78120b8fe 100644 --- a/spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java +++ b/spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java @@ -71,6 +71,7 @@ import org.springframework.util.ClassUtils; * * @author Rod Johnson * @author Juergen Hoeller + * @author Qimiao Chen * @see #setBasenames * @see ReloadableResourceBundleMessageSource * @see java.util.ResourceBundle @@ -331,19 +332,10 @@ public class ResourceBundleMessageSource extends AbstractResourceBasedMessageSou String msg = getStringOrNull(bundle, code); if (msg != null) { if (codeMap == null) { - codeMap = new ConcurrentHashMap<>(); - Map> existing = - this.cachedBundleMessageFormats.putIfAbsent(bundle, codeMap); - if (existing != null) { - codeMap = existing; - } + codeMap = this.cachedBundleMessageFormats.computeIfAbsent(bundle, b -> new ConcurrentHashMap<>()); } if (localeMap == null) { - localeMap = new ConcurrentHashMap<>(); - Map existing = codeMap.putIfAbsent(code, localeMap); - if (existing != null) { - localeMap = existing; - } + localeMap = codeMap.computeIfAbsent(code, c -> new ConcurrentHashMap<>()); } MessageFormat result = createMessageFormat(msg, locale); localeMap.put(locale, result);