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";