You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ms...@apache.org on 2010/03/30 21:19:14 UTC

svn commit: r929231 - in /myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main: java/org/apache/myfaces/trinidadinternal/config/xmlHttp/ java/org/apache/myfaces/trinidadinternal/context/ java/org/apache/myfaces/trinidadinternal/renderkit/core/ ...

Author: mstarets
Date: Tue Mar 30 19:19:14 2010
New Revision: 929231

URL: http://svn.apache.org/viewvc?rev=929231&view=rev
Log:
Make sure that the response is replaced for all ajax requests. Also changed XmlHttpConfigurator to write out the new error format

Modified:
    myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/xmlHttp/XmlHttpConfigurator.java
    myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/PartialViewContextImpl.java
    myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderKit.java
    myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PartialPageUtils.java
    myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Page.js

Modified: myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/xmlHttp/XmlHttpConfigurator.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/xmlHttp/XmlHttpConfigurator.java?rev=929231&r1=929230&r2=929231&view=diff
==============================================================================
--- myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/xmlHttp/XmlHttpConfigurator.java (original)
+++ myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/xmlHttp/XmlHttpConfigurator.java Tue Mar 30 19:19:14 2010
@@ -90,9 +90,6 @@ public class XmlHttpConfigurator extends
   {
     XmlResponseWriter rw = new XmlResponseWriter(writer, "UTF-8");
     rw.startDocument();
-    // Add another PI indicating that this is a rich response
-    // FIXME: this code is duplicated in PPRResponseWriter - fix that
-    rw.write("<?Tr-XHR-Response-Type ?>\n");
     rw.startElement("redirect", null);
     rw.writeText(url, null);
     rw.endElement("redirect");
@@ -115,12 +112,15 @@ public class XmlHttpConfigurator extends
     PrintWriter writer = response.getWriter();
     XmlResponseWriter rw = new XmlResponseWriter(writer, "UTF-8");
     rw.startDocument();
-    // Add another PI indicating that this is a rich response
-    // FIXME: this code is duplicated in PPRResponseWriter - fix that
-    rw.write("<?Tr-XHR-Response-Type ?>\n");
     rw.startElement("error", null);
-    rw.writeAttribute("status", HttpServletResponse.SC_INTERNAL_SERVER_ERROR, null);
+    rw.startElement("error-name", null);
+    rw.writeText(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, null);
+    rw.endElement("error-name");
+    rw.startElement("error-message", null);
+    rw.startCDATA();
     rw.writeText(_getExceptionString(t) + _PLEASE_SEE_ERROR_LOG + error, null);
+    rw.endCDATA();
+    rw.endElement("error-message");
     rw.endElement("error");
     rw.endDocument();
     rw.close();

Modified: myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/PartialViewContextImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/PartialViewContextImpl.java?rev=929231&r1=929230&r2=929231&view=diff
==============================================================================
--- myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/PartialViewContextImpl.java (original)
+++ myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/PartialViewContextImpl.java Tue Mar 30 19:19:14 2010
@@ -20,7 +20,6 @@ package org.apache.myfaces.trinidadinter
 
 import java.io.IOException;
 
-import java.io.UnsupportedEncodingException;
 import java.io.Writer;
 
 import java.util.Collection;
@@ -43,7 +42,6 @@ import javax.faces.context.PartialViewCo
 import javax.faces.context.ResponseWriter;
 import javax.faces.event.PhaseId;
 
-import org.apache.myfaces.trinidad.component.UIXComponent;
 
 import javax.faces.component.visit.VisitCallback;
 import javax.faces.component.visit.VisitContext;
@@ -56,10 +54,10 @@ import org.apache.myfaces.trinidad.compo
 import org.apache.myfaces.trinidad.context.PartialPageContext;
 import org.apache.myfaces.trinidad.context.RenderingContext;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
-import org.apache.myfaces.trinidadinternal.io.XhtmlResponseWriter;
 import org.apache.myfaces.trinidadinternal.renderkit.core.ppr.PPRResponseWriter;
 import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.PartialPageUtils;
 import org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderKit;
+import org.apache.myfaces.trinidadinternal.renderkit.core.ppr.XmlResponseWriter;
 
 public class PartialViewContextImpl
   extends PartialViewContext
@@ -80,7 +78,7 @@ public class PartialViewContextImpl
       else
         _requestType = ReqType.AJAX;
     }
-    else if (CoreRenderKit.isPartialRequest(extContext))
+    else if (CoreRenderKit.isLegacyPartialRequest(extContext))
     {
       _requestType = ReqType.AJAX_LEGACY;
     }
@@ -234,14 +232,7 @@ public class PartialViewContextImpl
       }
       else
       {
-        try
-        {
-          responseWriter = new XhtmlResponseWriter(out, "text/xml", encoding);
-        }
-        catch(UnsupportedEncodingException e)
-        {
-          _LOG.severe(e);
-        }
+        responseWriter = new XmlResponseWriter(out, encoding); 
       }
       
       return new PartialResponseWriter(responseWriter);

Modified: myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderKit.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderKit.java?rev=929231&r1=929230&r2=929231&view=diff
==============================================================================
--- myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderKit.java (original)
+++ myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderKit.java Tue Mar 30 19:19:14 2010
@@ -143,27 +143,43 @@ public class CoreRenderKit extends Rende
     return "org.apache.myfaces.trinidad.core.desktop";
   }
 
-  static public boolean isAjaxRequest(ExternalContext ec)
+  static public boolean isLegacyAjaxRequest(ExternalContext ec)
   {
     return "true".equals(ec.getRequestHeaderMap().get(_PPR_REQUEST_HEADER));
   }
 
-  static public boolean isPartialRequest(Map<String, String[]> parameters)
+  static public boolean isLegacyPartialRequest(Map<String, String[]> parameters)
   {
-    String[] array = parameters.get(_PPR_REQUEST_HEADER);
-    if ((array == null) || (array.length != 1))
-      return false;
-    return "true".equals(array[0]);
+    return _checkParameter(parameters, _PPR_REQUEST_HEADER, "true");
   }
 
-  static public boolean isPartialRequest(ExternalContext ec)
+  static public boolean isLegacyPartialRequest(ExternalContext ec)
   {
     // A partial request could be an AJAX request, or it could
     // be an IFRAME-postback to handle file upload
-    return isAjaxRequest(ec) ||
+    return isLegacyAjaxRequest(ec) ||
            "true".equals(ec.getRequestParameterMap().get(_PPR_REQUEST_HEADER));    
   }
   
+  static public boolean isPartialRequest(Map<String, String[]> parameters)
+  {
+    if (isLegacyPartialRequest(parameters))
+    {
+      return true;
+    }
+    // Check for the jsf:ajax requests too
+    return _checkParameter(parameters, _FACES_REQUEST, _PARTIAL_AJAX);
+  }
+  
+  static public boolean isPartialRequest(ExternalContext ec)
+  {
+    if (isLegacyPartialRequest(ec))
+    {
+      return true;
+    }
+    return _PARTIAL_AJAX.equals(ec.getRequestHeaderMap().get(_FACES_REQUEST));
+  }
+  
   public CoreRenderKit()
   {
     _modifyBasicHTMLRenderKit();
@@ -350,7 +366,7 @@ public class CoreRenderKit extends Rende
     FacesContext context) throws IOException
   {
     ExternalContext ec = context.getExternalContext();
-    if (context.getPartialViewContext().isAjaxRequest())
+    if (isPartialRequest(ec))
     {
       Map<String, Object> requestMap = ec.getRequestMap();
 
@@ -794,6 +810,14 @@ public class CoreRenderKit extends Rende
     // Default to HTML if we couldn't find anything directly applicable
     return _HTML_MIME_TYPE;
   }
+  
+  private static boolean _checkParameter(Map<String, String[]> parameters, String name, String value)
+  {
+    String[] array = parameters.get(name);
+    if ((array == null) || (array.length != 1))
+      return false;
+    return value.equals(array[0]);
+  }
 
   private static final String _XHTML_MIME_TYPE = "application/xhtml+xml";
   private static final String _APPLICATION_XML_MIME_TYPE = "application/xml";
@@ -806,6 +830,8 @@ public class CoreRenderKit extends Rende
   static private final String _SCRIPT_LIST_KEY =
     "org.apache.myfaces.trinidadinternal.renderkit.ScriptList";
   static private final String _PPR_REQUEST_HEADER = "Tr-XHR-Message";
+  private static final String _FACES_REQUEST = "Faces-Request";
+  private static final String _PARTIAL_AJAX = "partial/ajax";
 
   static private final String _USE_DIALOG_POPUP_INIT_PARAM =
     "org.apache.myfaces.trinidad.ENABLE_LIGHTWEIGHT_DIALOGS";

Modified: myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PartialPageUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PartialPageUtils.java?rev=929231&r1=929230&r2=929231&view=diff
==============================================================================
--- myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PartialPageUtils.java (original)
+++ myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PartialPageUtils.java Tue Mar 30 19:19:14 2010
@@ -118,6 +118,12 @@ public final class PartialPageUtils
     return false;
   }
 
+  /**
+   * This method delegates to the RequestContext.isPartialRequest() with the 
+   * exception that JSF Ajax render="@all" requests are reported as non-partial
+   * @param context
+   * @return
+   */
   public static boolean isPartialRequest(FacesContext context)
   {
     RequestContext rc = RequestContext.getCurrentInstance();

Modified: myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Page.js
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Page.js?rev=929231&r1=929230&r2=929231&view=diff
==============================================================================
--- myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Page.js (original)
+++ myfaces/trinidad/branches/jsf2_ajax.3/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Page.js Tue Mar 30 19:19:14 2010
@@ -272,7 +272,7 @@ TrPage.prototype._handlePprResponse = fu
           }
           break;
         case "error":
-          var nodeText = TrPage._getTextContent(childNode.nextSibling.firstChild);
+          var nodeText = TrPage._getTextContent(childNode.firstChild.nextSibling);
           // This should not happen - there should always be an error message
           if (nodeText == null)
             nodeText = "Unknown error during PPR";