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