You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gc...@apache.org on 2011/05/02 21:19:51 UTC

svn commit: r1098752 - in /myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util: PropertyArrayMap.java PropertyHashMap.java

Author: gcrawford
Date: Mon May  2 19:19:51 2011
New Revision: 1098752

URL: http://svn.apache.org/viewvc?rev=1098752&view=rev
Log:
TRINIDAD-2091 add mutable information to property key to support partial state saving

ignore valueExpressions

Modified:
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util/PropertyArrayMap.java
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util/PropertyHashMap.java

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util/PropertyArrayMap.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util/PropertyArrayMap.java?rev=1098752&r1=1098751&r2=1098752&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util/PropertyArrayMap.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util/PropertyArrayMap.java Mon May  2 19:19:51 2011
@@ -6,9 +6,9 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -22,6 +22,8 @@ import java.util.Map;
 
 import java.util.Set;
 
+import javax.el.ValueExpression;
+
 import javax.faces.component.PartialStateHolder;
 
 import org.apache.myfaces.trinidad.bean.FacesBean;
@@ -64,11 +66,11 @@ public class PropertyArrayMap extends Ar
        if (key.isMutable() || !_equals(value, retValue))
          _deltas.put(key, value);
      }
-     else if (key.isMutable())
+     else if (key.isMutable() && !(value instanceof ValueExpression))
      {
        _getMutableTracker(true).addProperty(key);
      }
-     
+
      if (key.isPartialStateHolder())
      {
        _getPartialStateHolderTracker(true).addProperty(key);
@@ -82,7 +84,7 @@ public class PropertyArrayMap extends Ar
      Object key)
    {
      boolean useDeltas = _createDeltas();
-    
+
      if (useDeltas)
      {
        if (!super.containsKey(key))
@@ -92,7 +94,7 @@ public class PropertyArrayMap extends Ar
        assert(key instanceof PropertyKey);
        _deltas.put((PropertyKey) key, null);
      }
-     
+
      if (key instanceof PropertyKey)
      {
        PropertyKey propKey  = (PropertyKey)key;
@@ -100,10 +102,13 @@ public class PropertyArrayMap extends Ar
        {
          _getPartialStateHolderTracker(true).removeProperty(propKey);
        }
-       
+
        if (!useDeltas &&  propKey.isMutable())
        {
-         _getMutableTracker(true).removeProperty(propKey);
+         PropertyTracker mutableTracker = _getMutableTracker(false);
+
+         if (mutableTracker != null)
+           mutableTracker.removeProperty(propKey);
        }
      }
 
@@ -114,7 +119,7 @@ public class PropertyArrayMap extends Ar
   public void putAll(Map<? extends PropertyKey, ? extends Object> t)
   {
     boolean useDeltas =_createDeltas();
-    
+
     if (useDeltas)
       _deltas.putAll(t);
 
@@ -124,11 +129,16 @@ public class PropertyArrayMap extends Ar
       if (key.isPartialStateHolder())
       {
         _getPartialStateHolderTracker(true).addProperty(key);
-      }  
-      
+      }
+
       if (!useDeltas && key.isMutable())
       {
-        _getMutableTracker(true).addProperty(key);
+        Object value = t.get(key);
+
+        if (!(value instanceof ValueExpression))
+        {
+          _getMutableTracker(true).addProperty(key);
+        }
       }
 
     }
@@ -139,7 +149,7 @@ public class PropertyArrayMap extends Ar
   public Object saveState(FacesContext context)
   {
     if (_initialStateMarked)
-    {    
+    {
       if (_deltas == null)
         return null;
 
@@ -164,23 +174,23 @@ public class PropertyArrayMap extends Ar
     PropertyArrayMap map = new PropertyArrayMap(2);
     map.setUseStateHolder(getUseStateHolder());
     map.setType(_type);
-    
+
     PropertyTracker tracker = _getMutableTracker(false);
-    
+
     if (tracker != null)
-    {      
+    {
       for (PropertyKey key: tracker)
       {
         Object val = get(key);
-        
+
         if (val != null)
         {
           map.put(key, val);
         }
       }
-            
+
       _mutableTracker = null;
-    }    
+    }
     return map;
   }
 
@@ -202,7 +212,7 @@ public class PropertyArrayMap extends Ar
   public void markInitialState()
   {
     _initialStateMarked = true;
-    
+
     // PropertyTracker uses a bitmask to track properties
     // We are tracking all properties that have CA_PARTIAL_STATE_HOLDER capability,
     // so that we do not have to check every property here
@@ -225,7 +235,7 @@ public class PropertyArrayMap extends Ar
   {
     _initialStateMarked = false;
     _deltas = null;
-    
+
     // PropertyTracker uses a bitmask to track properties
     // We are tracking all properties that have CA_PARTIAL_STATE_HOLDER capability,
     // so that we do not have to check every property here
@@ -247,7 +257,7 @@ public class PropertyArrayMap extends Ar
   {
     return _initialStateMarked;
   }
-  
+
   /**
    * Sets the the FacesBean type used by this map's owner bean
    * @param type FacesBean type
@@ -268,7 +278,7 @@ public class PropertyArrayMap extends Ar
 
       return true;
     }
-    
+
     return false;
   }
 
@@ -282,7 +292,7 @@ public class PropertyArrayMap extends Ar
 
     return a.equals(b);
   }
-  
+
   private PropertyTracker _getPartialStateHolderTracker(boolean create)
   {
     if (_tracker == null && create)
@@ -293,9 +303,9 @@ public class PropertyArrayMap extends Ar
       }
       _tracker = new PropertyTracker(_type);
     }
-    return _tracker;                  
+    return _tracker;
   }
-    
+
     private PropertyTracker _getMutableTracker(boolean create)
     {
       if (_mutableTracker == null && create)
@@ -306,9 +316,9 @@ public class PropertyArrayMap extends Ar
         }
         _mutableTracker = new PropertyTracker(_type);
       }
-      return _mutableTracker;                  
-    }  
-  
+      return _mutableTracker;
+    }
+
 
   private transient boolean _initialStateMarked;
   private transient PropertyMap _deltas;

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util/PropertyHashMap.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util/PropertyHashMap.java?rev=1098752&r1=1098751&r2=1098752&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util/PropertyHashMap.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/bean/util/PropertyHashMap.java Mon May  2 19:19:51 2011
@@ -24,6 +24,8 @@ import java.util.Map;
 
 import java.util.Set;
 
+import javax.el.ValueExpression;
+
 import javax.faces.component.PartialStateHolder;
 import javax.faces.context.FacesContext;
 
@@ -70,7 +72,7 @@ public class PropertyHashMap extends Has
        if (key.isMutable() || !_equals(value, retValue))
          _deltas.put(key, value);
      }
-     else if (key.isMutable())
+     else if (key.isMutable() && !(value instanceof ValueExpression))
      {
        _getMutableTracker(true).addProperty(key);
      }
@@ -109,7 +111,10 @@ public class PropertyHashMap extends Has
        
        if (!useDeltas &&  propKey.isMutable())
        {
-         _getMutableTracker(true).removeProperty(propKey);
+         PropertyTracker mutableTracker = _getMutableTracker(false);
+         
+         if (mutableTracker != null)
+           mutableTracker.removeProperty(propKey);
        }
      }
 
@@ -134,7 +139,12 @@ public class PropertyHashMap extends Has
       
       if (!useDeltas && key.isMutable())
       {
-        _getMutableTracker(true).addProperty(key);
+        Object value = t.get(key);
+        
+        if (!(value instanceof ValueExpression))
+        {
+          _getMutableTracker(true).addProperty(key);
+        }
       }
 
     }