You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2010/07/10 01:59:19 UTC

svn commit: r962725 - /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java

Author: lu4242
Date: Fri Jul  9 23:59:19 2010
New Revision: 962725

URL: http://svn.apache.org/viewvc?rev=962725&view=rev
Log:
MYFACES-2805 Use synchronized blocks for ApplicationImpl _defaultValidatorsIds

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java?rev=962725&r1=962724&r2=962725&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java Fri Jul  9 23:59:19 2010
@@ -300,7 +300,12 @@ public class ApplicationImpl extends App
     @Override
     public Map<String, String> getDefaultValidatorInfo()
     {
-        if (_cachedDefaultValidatorsIds == null)
+        // cachedMap ensures we will not return null if after the check for null
+        // _cachedDefaultValidatorsIds is set to null. In theory the unmodifiable map
+        // always has a reference to _defaultValidatorsIds, so any instance set
+        // in _cachedDefaultValidatorsIds is always the same.
+        Map<String, String> cachedMap = _cachedDefaultValidatorsIds;
+        if (cachedMap == null)
         {
             synchronized(_defaultValidatorsIds)
             {
@@ -308,9 +313,10 @@ public class ApplicationImpl extends App
                 {
                     _cachedDefaultValidatorsIds = Collections.unmodifiableMap(_defaultValidatorsIds);
                 }
+                cachedMap = _cachedDefaultValidatorsIds;
             }
         }
-        return _cachedDefaultValidatorsIds;
+        return cachedMap;
     }
 
     @Override