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 2011/10/27 19:35:32 UTC

svn commit: r1189883 - /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/util/AbstractAttributeMap.java

Author: lu4242
Date: Thu Oct 27 17:35:32 2011
New Revision: 1189883

URL: http://svn.apache.org/viewvc?rev=1189883&view=rev
Log:
MYFACES-3377 unsynchronized lazy initialization could create concurrency errors

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/util/AbstractAttributeMap.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/util/AbstractAttributeMap.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/util/AbstractAttributeMap.java?rev=1189883&r1=1189882&r2=1189883&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/util/AbstractAttributeMap.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/util/AbstractAttributeMap.java Thu Oct 27 17:35:32 2011
@@ -37,9 +37,9 @@ import java.util.Set;
  */
 public abstract class AbstractAttributeMap<V> extends AbstractMap<String, V>
 {
-    private Set<String> _keySet = new KeySet();
-    private Collection<V> _values = new Values();
-    private Set<Entry<String, V>> _entrySet = new EntrySet();
+    private Set<String> _keySet;
+    private Collection<V> _values;
+    private Set<Entry<String, V>> _entrySet;
 
     @Override
     public void clear()
@@ -85,7 +85,7 @@ public abstract class AbstractAttributeM
     @Override
     public Set<Entry<String, V>> entrySet()
     {
-        return _entrySet;
+        return (_entrySet != null) ? _entrySet : (_entrySet = new EntrySet());
     }
 
     @Override
@@ -103,7 +103,7 @@ public abstract class AbstractAttributeM
     @Override
     public Set<String> keySet()
     {
-        return _keySet;
+        return (_keySet != null) ? _keySet : (_keySet = new KeySet());
     }
 
     @Override
@@ -147,7 +147,7 @@ public abstract class AbstractAttributeM
     @Override
     public Collection<V> values()
     {
-        return _values;
+        return (_values != null) ? _values : (_values = new Values());
     }
 
     abstract protected V getAttribute(String key);