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/06/24 18:33:28 UTC

svn commit: r957611 - /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/ErrorPageWriter.java

Author: lu4242
Date: Thu Jun 24 16:33:27 2010
New Revision: 957611

URL: http://svn.apache.org/viewvc?rev=957611&view=rev
Log:
MYFACES-2770 Improve <ui:debug> with information about the saved state (thanks to Marius Petoi for provide this patch)

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/ErrorPageWriter.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/ErrorPageWriter.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/ErrorPageWriter.java?rev=957611&r1=957610&r2=957611&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/ErrorPageWriter.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/ErrorPageWriter.java Thu Jun 24 16:33:27 2010
@@ -70,6 +70,7 @@ import javax.servlet.http.HttpServletRes
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
 import org.apache.myfaces.shared_impl.renderkit.html.HtmlResponseWriterImpl;
 import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared_impl.util.StateUtils;
 import org.apache.myfaces.shared_impl.webapp.webxml.WebXml;
 import org.apache.myfaces.view.facelets.component.UIRepeat;
 
@@ -276,7 +277,14 @@ public final class ErrorPageWriter
             {
                 if (view != null)
                 {
-                    _writeComponent(writer, view, _getErrorId(e));
+                    Object[] state = (Object[])faces.getApplication().getStateManager().saveView(faces);
+                    Map<String, Object> states = null;
+                    if (state[1] != null && state[1] instanceof Object[])
+                    {
+                        states = (Map<String, Object>) state[1];
+                    }
+
+                    _writeComponent(faces, writer, faces.getViewRoot(), null, states);
                 }
             }
             else if ("vars".equals(ERROR_PARTS[i]))
@@ -317,7 +325,14 @@ public final class ErrorPageWriter
             }
             else if ("tree".equals(DEBUG_PARTS[i]))
             {
-                _writeComponent(writer, faces.getViewRoot(), null);
+                Object[] state = (Object[])faces.getApplication().getStateManager().saveView(faces);
+                Map<String, Object> states = null;
+                if (state[1] != null)
+                {
+                    states = (Map<String, Object>) state[1];
+                }
+
+                _writeComponent(faces, writer, faces.getViewRoot(), null, states);
             }
             else if ("extendedtree".equals(DEBUG_PARTS[i]))
             {
@@ -608,7 +623,7 @@ public final class ErrorPageWriter
         writer.write("</tbody></table>");
     }
 
-    private static void _writeComponent(Writer writer, UIComponent c, List<String> highlightId) throws IOException
+    private static void _writeComponent(FacesContext faces, Writer writer, UIComponent c, List<String> highlightId, Map<String, Object> states) throws IOException
     {
         writer.write("<dl><dt");
         if (_isText(c))
@@ -630,7 +645,18 @@ public final class ErrorPageWriter
 
         boolean hasChildren = c.getChildCount() > 0 || c.getFacets().size() > 0;
 
+        int stateSize = 0;
+        if (states != null) 
+        {
+            Object state = states.get(c.getClientId());
+            if (state != null)
+            {
+                byte[] stateBytes = StateUtils.getAsByteArray(state, faces.getExternalContext());
+                stateSize = stateBytes.length;
+            }
+        }
         _writeStart(writer, c, hasChildren, true);
+        writer.write(" - State size:" + stateSize + " bytes");
         writer.write("</dt>");
         if (hasChildren)
         {
@@ -642,7 +668,7 @@ public final class ErrorPageWriter
                     writer.write("<span>");
                     writer.write(entry.getKey());
                     writer.write("</span>");
-                    _writeComponent(writer, entry.getValue(), highlightId);
+                    _writeComponent(faces, writer, entry.getValue(), highlightId, states);
                     writer.write("</dd>");
                 }
             }
@@ -651,7 +677,7 @@ public final class ErrorPageWriter
                 for (UIComponent child : c.getChildren())
                 {
                     writer.write("<dd>");
-                    _writeComponent(writer, child, highlightId);
+                    _writeComponent(faces, writer, child, highlightId, states);
                     writer.write("</dd>");
                 }
             }