You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2019/06/20 11:24:34 UTC

[myfaces] branch master updated: fixed reponsewriter wrapping

This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git


The following commit(s) were added to refs/heads/master by this push:
     new ba8ce0e  fixed reponsewriter wrapping
ba8ce0e is described below

commit ba8ce0efaff15d65335b4ffc15cb003dff8b42b4
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Thu Jun 20 13:24:29 2019 +0200

    fixed reponsewriter wrapping
---
 .../myfaces/push/HtmlBufferResponseWriterWrapper.java      |  4 +++-
 .../apache/myfaces/push/WebsocketComponentRenderer.java    | 14 ++++++++++----
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/impl/src/main/java/org/apache/myfaces/push/HtmlBufferResponseWriterWrapper.java b/impl/src/main/java/org/apache/myfaces/push/HtmlBufferResponseWriterWrapper.java
index c9dc901..065c002 100644
--- a/impl/src/main/java/org/apache/myfaces/push/HtmlBufferResponseWriterWrapper.java
+++ b/impl/src/main/java/org/apache/myfaces/push/HtmlBufferResponseWriterWrapper.java
@@ -23,7 +23,8 @@ import javax.faces.context.ResponseWriter;
 import java.io.*;
 import org.apache.myfaces.renderkit.html.HtmlResponseWriterImpl;
 
-/**A buffer for content which should not directly be rendered to the page.
+/**
+ * A buffer for content which should not directly be rendered to the page.
  *
  * @author Sylvain Vieujot (latest modification by $Author: grantsmith $)
  * @version $Revision: 169649 $ $Date: 2005-05-11 17:47:12 +0200 (Wed, 11 May 2005) $
@@ -95,6 +96,7 @@ public class HtmlBufferResponseWriterWrapper extends HtmlResponseWriterImpl
      *
      * @return The content of the buffered and wrapped writer.
      */
+    @Override
     public String toString()
     {
         wrapperWriter.flush();
diff --git a/impl/src/main/java/org/apache/myfaces/push/WebsocketComponentRenderer.java b/impl/src/main/java/org/apache/myfaces/push/WebsocketComponentRenderer.java
index d2a21fc..9ae6918 100644
--- a/impl/src/main/java/org/apache/myfaces/push/WebsocketComponentRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/push/WebsocketComponentRenderer.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import javax.enterprise.inject.spi.BeanManager;
+import javax.faces.FacesWrapper;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIWebsocket;
 import javax.faces.component.behavior.ClientBehavior;
@@ -216,13 +217,18 @@ public class WebsocketComponentRenderer extends Renderer implements ComponentSys
         
         if (!facesContext.getPartialViewContext().isAjaxRequest())
         {
-            HtmlBufferResponseWriterWrapper buffwriter = (HtmlBufferResponseWriterWrapper) 
-                    facesContext.getResponseWriter();
+            ResponseWriter responseWriter = facesContext.getResponseWriter();
+            while (!(responseWriter instanceof HtmlBufferResponseWriterWrapper)
+                    && responseWriter instanceof FacesWrapper)
+            {
+                responseWriter = (ResponseWriter) ((FacesWrapper) responseWriter).getWrapped();
+            }
+
             init.getUIWebsocketMarkupList().add(writer.toString());
-            facesContext.setResponseWriter(buffwriter.getInitialWriter());
+            facesContext.setResponseWriter(((HtmlBufferResponseWriterWrapper) responseWriter).getInitialWriter());
         }
     }
-    
+
     private String getBehaviorScripts(FacesContext facesContext, UIWebsocket component)
     {
         Map<String, List<ClientBehavior>> clientBehaviorsByEvent = component.getClientBehaviors();