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/01/31 00:56:18 UTC

svn commit: r904919 - in /myfaces/core/trunk: api/src/main/java/javax/faces/component/UIComponentBase.java api/src/main/java/javax/faces/component/behavior/AjaxBehavior.java impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java

Author: lu4242
Date: Sat Jan 30 23:56:17 2010
New Revision: 904919

URL: http://svn.apache.org/viewvc?rev=904919&view=rev
Log:
MYFACES-2342 New objects added for new api in UIViewRoot, UIComponent and UIComponentBase could be saved and restored

Modified:
    myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java
    myfaces/core/trunk/api/src/main/java/javax/faces/component/behavior/AjaxBehavior.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java

Modified: myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java?rev=904919&r1=904918&r2=904919&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java Sat Jan 30 23:56:17 2010
@@ -1711,7 +1711,7 @@
             if (initialStateMarked())
             {
                 HashMap<String, Object> stateMap = new HashMap<String, Object>(_behaviorsMap.size(), 1);
-                
+                boolean nullDelta = true;
                 for (Map.Entry<String, List<ClientBehavior> > entry : _behaviorsMap.entrySet())
                 {
                     // The list is always an instance of _DeltaList so we can cast to
@@ -1724,13 +1724,19 @@
                         {
                             stateMap.put(entry.getKey(), new _AttachedDeltaWrapper(_behaviorsMap.getClass(),
                                     attachedState));
+                            nullDelta = false;
                         }
                     }
                     else
                     {
                         stateMap.put(entry.getKey(), saveAttachedState(facesContext, holder));
+                        nullDelta = false;
                     }
                 }
+                if (nullDelta)
+                {
+                    return null;
+                }
                 return stateMap;
             }
             else
@@ -1804,7 +1810,7 @@
             if (initialStateMarked())
             {
                 HashMap<Class<? extends SystemEvent>, Object> stateMap = new HashMap<Class<? extends SystemEvent>, Object>(_systemEventListenerClassMap.size(), 1);
-                
+                boolean nullDelta = true;
                 for (Map.Entry<Class<? extends SystemEvent>, List<SystemEventListener> > entry : _systemEventListenerClassMap.entrySet())
                 {
                     // The list is always an instance of _DeltaList so we can cast to
@@ -1817,13 +1823,19 @@
                         {
                             stateMap.put(entry.getKey(), new _AttachedDeltaWrapper(_systemEventListenerClassMap.getClass(),
                                     attachedState));
+                            nullDelta = false;
                         }
                     }
                     else
                     {
                         stateMap.put(entry.getKey(), saveAttachedState(facesContext, holder));
+                        nullDelta = false;
                     }
                 }
+                if (nullDelta)
+                {
+                    return null;
+                }
                 return stateMap;
             }
             else

Modified: myfaces/core/trunk/api/src/main/java/javax/faces/component/behavior/AjaxBehavior.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/behavior/AjaxBehavior.java?rev=904919&r1=904918&r2=904919&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/behavior/AjaxBehavior.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/behavior/AjaxBehavior.java Sat Jan 30 23:56:17 2010
@@ -18,7 +18,14 @@
  */
 package javax.faces.component.behavior;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import javax.el.ValueExpression;
 import javax.faces.context.FacesContext;
@@ -240,7 +247,12 @@
 
 
     @Override
-    public void restoreState(FacesContext facesContext, Object o) {
+    public void restoreState(FacesContext facesContext, Object o)
+    {
+        if (o == null)
+        {
+            return;
+        }
         Object[] values = (Object[]) o;
 
         if (values[0] != null) {
@@ -250,11 +262,27 @@
     }
 
     @Override
-    public Object saveState(FacesContext facesContext) {
-        Object[] values = new Object[2];
-        values[0] = super.saveState(facesContext);
-        values[1] = deltaStateHelper.saveState(facesContext);
-        return values;
+    public Object saveState(FacesContext facesContext)
+    {
+        if (initialStateMarked())
+        {
+            Object parentSaved = super.saveState(facesContext);
+            Object deltaStateHelperSaved = deltaStateHelper.saveState(facesContext);
+            
+            if (parentSaved == null && deltaStateHelperSaved == null)
+            {
+                //No values
+                return null;
+            }   
+            return new Object[]{parentSaved, deltaStateHelperSaved};
+        }
+        else
+        {
+            Object[] values = new Object[2];
+            values[0] = super.saveState(facesContext);
+            values[1] = deltaStateHelper.saveState(facesContext);
+            return values;
+        }
     }
 
     private void assertNull(Object item) {

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java?rev=904919&r1=904918&r2=904919&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java Sat Jan 30 23:56:17 2010
@@ -250,6 +250,12 @@
             outputScript.setId(uid);
             
             parent.getChildren().add(outputScript);
+            
+            if (((AbstractFaceletContext)ctx).isMarkInitialState())
+            {
+                //Call it only if we are using partial state saving
+                outputScript.markInitialState();
+            }            
             facesContext.getAttributes().put(STANDARD_JSF_AJAX_LIBRARY_LOADED, Boolean.TRUE);
         }
     }