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