You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2007/08/12 14:53:55 UTC

svn commit: r565058 - /myfaces/core/branches/1_2_1/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java

Author: mmarinschek
Date: Sun Aug 12 05:53:54 2007
New Revision: 565058

URL: http://svn.apache.org/viewvc?view=rev&rev=565058
Log:
fix for https://issues.apache.org/jira/browse/MYFACES-1701: Thanks to Bernhard Huemer for this patch

Modified:
    myfaces/core/branches/1_2_1/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java

Modified: myfaces/core/branches/1_2_1/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1_2_1/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java?view=diff&rev=565058&r1=565057&r2=565058
==============================================================================
--- myfaces/core/branches/1_2_1/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java (original)
+++ myfaces/core/branches/1_2_1/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java Sun Aug 12 05:53:54 2007
@@ -117,47 +117,71 @@
         }
     }
 
-
-    public Object getTreeStructureToRestore(FacesContext facesContext, String viewId) {
-        Map reqParamMap = facesContext.getExternalContext().getRequestParameterMap();
-
-        Object encodedState = reqParamMap.get(STANDARD_STATE_SAVING_PARAM);
-
-        if(encodedState==null)
+    @Override
+    public Object getState(FacesContext facesContext, String viewId) {
+        Object[] savedState = getSavedState(facesContext);
+        if (savedState == null) {
             return null;
+        }
+        
+        return new Object[] { savedState[TREE_PARAM], savedState[STATE_PARAM] };
+    }
 
-        Object[] savedState = (Object[]) StateUtils.reconstruct((String) encodedState, facesContext.getExternalContext());
-
-        String restoredViewId = (String) savedState[VIEWID_PARAM];
-
-        if (restoredViewId == null || !restoredViewId.equals(viewId)) {
-            //no saved state or state of different viewId
-            if (log.isTraceEnabled()) log.trace("No saved state or state of a different viewId"+restoredViewId);
+    @Override
+    public Object getTreeStructureToRestore(FacesContext facesContext, String viewId) {
+        // Although this method won't be called anymore, 
+        // it has been kept for backward compatibility.
+        Object[] savedState = getSavedState(facesContext);
+        if (savedState == null) {
             return null;
         }
 
         return savedState[TREE_PARAM];
     }
 
+    @Override
     public Object getComponentStateToRestore(FacesContext facesContext) {
-        Map reqParamMap = facesContext.getExternalContext().getRequestParameterMap();
-
-        Object encodedState = reqParamMap.get(STANDARD_STATE_SAVING_PARAM);
-
-        if(encodedState==null)
+        // Although this method won't be called anymore, 
+        // it has been kept for backward compatibility.
+        Object[] savedState = getSavedState(facesContext);
+        if (savedState == null) {
             return null;
+        }
 
-        Object[] savedState = (Object[]) StateUtils.reconstruct((String) encodedState, facesContext.getExternalContext());
+        return savedState[STATE_PARAM];
+    }
+    
+    /**
+     * Reconstructs the state from the "javax.faces.ViewState" request parameter.
+     * 
+     * @param facesContext the current FacesContext
+     * 
+     * @return the reconstructed state, or <code>null</code> 
+     *          if there was no saved state
+     */
+    private Object[] getSavedState(FacesContext facesContext) {
+        Object encodedState = 
+            facesContext.getExternalContext().
+                getRequestParameterMap().get(STANDARD_STATE_SAVING_PARAM);
+        if(encodedState==null) { 
+            return null;
+        }
+        
+        Object[] savedState = (Object[]) StateUtils.reconstruct(
+                (String) encodedState, facesContext.getExternalContext());
 
         String restoredViewId = (String) savedState[VIEWID_PARAM];
 
         if (restoredViewId == null) {
-            //no saved state or state of different viewId
-            if (log.isTraceEnabled()) log.trace("No saved state or state of a different viewId: "+restoredViewId);
+            // no saved state or state of different viewId
+            if (log.isTraceEnabled()) {
+                log.trace("No saved state or state of a different viewId: " + restoredViewId);
+            }
+            
             return null;
         }
-
-        return savedState[STATE_PARAM];
+        
+        return savedState;
     }
 
 
@@ -172,4 +196,5 @@
                 .getRequestParameterMap().containsKey(ResponseStateManager.VIEW_STATE_PARAM);
     }
 }
+