You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by aw...@apache.org on 2007/08/08 01:25:38 UTC
svn commit: r563699 - in
/myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal:
config/xmlHttp/XmlHttpConfigurator.java context/TrinidadPhaseListener.java
webapp/TrinidadFilterImpl.java
Author: awiner
Date: Tue Aug 7 16:25:37 2007
New Revision: 563699
URL: http://svn.apache.org/viewvc?view=rev&rev=563699
Log:
Move XmlHttpConfigurator wrapping to beforePhase() of RESTORE_VIEW to avoid getting a
request parameter too early, and thereby breaking the later call to setCharacterEncoding()
Modified:
myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/xmlHttp/XmlHttpConfigurator.java
myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/TrinidadPhaseListener.java
myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java
Modified: myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/xmlHttp/XmlHttpConfigurator.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/xmlHttp/XmlHttpConfigurator.java?view=diff&rev=563699&r1=563698&r2=563699
==============================================================================
--- myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/xmlHttp/XmlHttpConfigurator.java (original)
+++ myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/xmlHttp/XmlHttpConfigurator.java Tue Aug 7 16:25:37 2007
@@ -53,14 +53,15 @@
{
}
- public static ServletResponse getWrappedServletResponse(ServletResponse response)
- {
- return new XmlHttpServletResponse(response);
- }
-
public static void beginRequest(ExternalContext externalContext)
{
StateManagerImpl.reuseRequestTokenForResponse(externalContext);
+ Object response = externalContext.getResponse();
+ if (response instanceof ServletResponse)
+ {
+ externalContext.setResponse(
+ new XmlHttpServletResponse((ServletResponse) response));
+ }
}
/**
Modified: myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/TrinidadPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/TrinidadPhaseListener.java?view=diff&rev=563699&r1=563698&r2=563699
==============================================================================
--- myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/TrinidadPhaseListener.java (original)
+++ myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/TrinidadPhaseListener.java Tue Aug 7 16:25:37 2007
@@ -18,11 +18,15 @@
*/
package org.apache.myfaces.trinidadinternal.context;
+import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
+import org.apache.myfaces.trinidadinternal.config.xmlHttp.XmlHttpConfigurator;
+import org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderKit;
+
/**
* Performs some trinidad logic and provides some hooks.
*
@@ -76,9 +80,21 @@
if (event.getPhaseId() == PhaseId.RESTORE_VIEW)
{
FacesContext context = event.getFacesContext();
+ ExternalContext ec = context.getExternalContext();
// Assume it's not a postback request
- context.getExternalContext().getRequestMap().put(_POSTBACK_KEY,
- Boolean.FALSE);
+ ec.getRequestMap().put(_POSTBACK_KEY, Boolean.FALSE);
+
+ // And initialize XmlHttp. We wait until beforePhase()
+ // of RESTORE_VIEW, instead of doing this in the filter,
+ // so that we don't get a request parameter before ViewHandler.initView()
+ // has been called: doing that leads to big problems. Note
+ // that with the 1.2_03 RI, this will still be too early,
+ // as it called initView() after beforePhase()
+ if (CoreRenderKit.isPartialRequest(ec))
+ {
+ XmlHttpConfigurator.beginRequest(ec);
+ }
+
}
// If we've reached "apply request values", this is definitely a
// postback (the ViewHandler should have reached the same conclusion too,
Modified: myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java?view=diff&rev=563699&r1=563698&r2=563699
==============================================================================
--- myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java (original)
+++ myfaces/trinidad/branches/1.2.2-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java Tue Aug 7 16:25:37 2007
@@ -106,6 +106,7 @@
_filters = null;
}
+
@SuppressWarnings("unchecked")
public void doFilter(
ServletRequest request,
@@ -128,22 +129,10 @@
Map<String, String[]> addedParams = (Map<String, String[]>) externalContext.getRequestMap().
get(FileUploadConfiguratorImpl._PARAMS);
- boolean isPartialRequest;
if(addedParams != null)
{
FileUploadConfiguratorImpl.apply(externalContext);
request = new UploadRequestWrapper((HttpServletRequest)request, addedParams);
- isPartialRequest = CoreRenderKit.isPartialRequest(addedParams);
- }
- else
- {
- isPartialRequest = CoreRenderKit.isPartialRequest(externalContext);
- }
-
- if (isPartialRequest)
- {
- XmlHttpConfigurator.beginRequest(externalContext);
- response = XmlHttpConfigurator.getWrappedServletResponse(response);
}
try
@@ -151,8 +140,19 @@
_doFilterImpl(request, response, chain);
}
+ // For PPR errors, handle the request specially
catch (Throwable t)
{
+ boolean isPartialRequest;
+ if (addedParams != null)
+ {
+ isPartialRequest = CoreRenderKit.isPartialRequest(addedParams);
+ }
+ else
+ {
+ isPartialRequest = CoreRenderKit.isPartialRequest(externalContext);
+ }
+
if (isPartialRequest)
{
XmlHttpConfigurator.handleError(externalContext, t);