You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2007/03/28 19:23:11 UTC

svn commit: r523417 - /myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java

Author: weber
Date: Wed Mar 28 10:23:11 2007
New Revision: 523417

URL: http://svn.apache.org/viewvc?view=rev&rev=523417
Log:
TOBAGO-312 (Integrate handling of ajax requests into standard lifecycle)
  bugfix in creating new jsf state

Modified:
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java?view=diff&rev=523417&r1=523416&r2=523417
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxResponseRenderer.java Wed Mar 28 10:23:11 2007
@@ -18,6 +18,8 @@
  */
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import org.apache.myfaces.tobago.util.RequestUtils;
 import org.apache.myfaces.tobago.util.ResponseUtils;
@@ -43,6 +45,8 @@
 
 public class AjaxResponseRenderer {
 
+  private static final Log LOG = LogFactory.getLog(AjaxResponseRenderer.class);
+
   public static final String CODE_SUCCESS = "<status code=\"200\"/>";
   public static final String CODE_NOT_MODIFIED = "<status code=\"304\"/>";
   public static final String CODE_RELOAD_REQUIRED = "<status code=\"309\"/>";
@@ -58,6 +62,10 @@
     UIViewRoot incommingViewRoot = (UIViewRoot)
         facesContext.getExternalContext().getRequestMap().get(VIEW_ROOT_KEY);
     if (viewRoot != incommingViewRoot) {
+      if (LOG.isDebugEnabled()) {
+        LOG.debug("requesting full page reload because of navigation to "
+            + viewRoot.getViewId() + " from " + incommingViewRoot.getViewId());
+      }
       //noinspection unchecked
       facesContext.getExternalContext().getSessionMap().put(VIEW_ROOT_KEY, viewRoot);
       writeResponseReload(facesContext, renderKit);
@@ -70,7 +78,11 @@
         responseParts.add(content);
         ResponseWriter contentWriter = renderKit.createResponseWriter(content, null, null);
         facesContext.setResponseWriter(contentWriter);
-        ((AjaxComponent) ajaxComponents.get(i)).encodeAjax(facesContext);
+        AjaxComponent ajaxComponent = ((AjaxComponent) ajaxComponents.get(i));
+        if (LOG.isDebugEnabled()) {
+          LOG.debug("write ajax response for " + ajaxComponent);
+        }
+        ajaxComponent.encodeAjax(facesContext);
       }
 
       String state = saveState(facesContext, renderKit);
@@ -97,6 +109,7 @@
     facesContext.setResponseWriter(stateWriter);
     stateWriter.startElement(HtmlConstants.SCRIPT, null);
     stateWriter.writeAttribute(HtmlAttributes.TYPE, "text/javascript", null);
+    stateWriter.flush();
     stateWriter.write("Tobago.replaceJsfState(\"");
     stateWriter.write(encodeState(state));
     stateWriter.write("\");");
@@ -147,6 +160,13 @@
       // TODO surround by javascript parsable token
       buffer.append(writeState(facesContext, renderKit, jsfState));
     }
+
+    if (LOG.isTraceEnabled()) {
+      LOG.trace("\nresponse follows ##############################################################\n"
+          + buffer
+          + "\nend response    ##############################################################");
+    }
+
 
     buffer.insert(0, Integer.toHexString(buffer.length()) + "\r\n");
     buffer.append("\r\n" + 0 + "\r\n\r\n");