From 781a6d289e76b616602c3b14d6de2dd0f8a15af5 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 19 Aug 2014 22:50:54 +0200 Subject: [PATCH] CachedIntrospectionResults uses putIfAbsent where possible (for minimal write locking) Issue: SPR-12102 --- .../springframework/beans/CachedIntrospectionResults.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java b/spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java index 38bc83c901..a74017dca7 100644 --- a/spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java +++ b/spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java @@ -188,13 +188,13 @@ public class CachedIntrospectionResults { results = new CachedIntrospectionResults(beanClass); if (ClassUtils.isCacheSafe(beanClass, CachedIntrospectionResults.class.getClassLoader()) || isClassLoaderAccepted(beanClass.getClassLoader())) { - strongClassCache.put(beanClass, results); + strongClassCache.putIfAbsent(beanClass, results); } else { if (logger.isDebugEnabled()) { logger.debug("Not strongly caching class [" + beanClass.getName() + "] because it is not cache-safe"); } - softClassCache.put(beanClass, results); + softClassCache.putIfAbsent(beanClass, results); } return results; } @@ -295,7 +295,7 @@ public class CachedIntrospectionResults { "; editor [" + pd.getPropertyEditorClass().getName() + "]" : "")); } pd = buildGenericTypeAwarePropertyDescriptor(beanClass, pd); - this.propertyDescriptorCache.put(pd.getName(), pd); + this.propertyDescriptorCache.putIfAbsent(pd.getName(), pd); } this.typeDescriptorCache = new ConcurrentHashMap(); @@ -348,7 +348,7 @@ public class CachedIntrospectionResults { } void addTypeDescriptor(PropertyDescriptor pd, TypeDescriptor td) { - this.typeDescriptorCache.put(pd, td); + this.typeDescriptorCache.putIfAbsent(pd, td); } TypeDescriptor getTypeDescriptor(PropertyDescriptor pd) {