You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by at...@apache.org on 2010/04/23 10:48:48 UTC

svn commit: r937193 - /portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletResponseWrapper.java

Author: ate
Date: Fri Apr 23 08:48:48 2010
New Revision: 937193

URL: http://svn.apache.org/viewvc?rev=937193&view=rev
Log:
PLUTO-591: HttpServletPortletResponseWrapper incorrectly assumes MimeResponse.getPortletOutputStream() is upcastable to ServletOutputStream
See: https://issues.apache.org/jira/browse/PLUTO-591
Issue reported by Rossen Stoyanchev, thanks!

Modified:
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletResponseWrapper.java

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletResponseWrapper.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletResponseWrapper.java?rev=937193&r1=937192&r2=937193&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletResponseWrapper.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletResponseWrapper.java Fri Apr 23 08:48:48 2010
@@ -17,6 +17,7 @@
 package org.apache.pluto.container.impl;
 
 import java.io.IOException;
+import java.io.OutputStream;
 import java.io.PrintWriter;
 import java.util.Locale;
 
@@ -44,6 +45,8 @@ public class HttpServletPortletResponseW
     private final MimeResponse mimeResponse;
     private final String lifecyclePhase;
     private boolean included;
+    private OutputStream outputStream;
+    private ServletOutputStream servletOutputStream;
     
     public HttpServletPortletResponseWrapper(HttpServletResponse response, PortletRequest portletRequest, PortletResponse portletResponse, boolean included)
     {
@@ -231,7 +234,26 @@ public class HttpServletPortletResponseW
     @Override
     public ServletOutputStream getOutputStream() throws IOException
     {
-        return mimeResponse != null ? (ServletOutputStream)mimeResponse.getPortletOutputStream() : DummyServletOutputStream.getInstance();
+    	if (servletOutputStream == null)
+    	{
+        	outputStream = mimeResponse != null ? mimeResponse.getPortletOutputStream() : DummyServletOutputStream.getInstance();
+        	if (outputStream instanceof ServletOutputStream)
+        	{
+        		servletOutputStream = (ServletOutputStream)outputStream;
+        	}
+        	else
+        	{
+        		servletOutputStream = new ServletOutputStream()
+        		{
+					@Override
+					public void write(int b) throws IOException 
+					{
+						outputStream.write(b);
+					}
+        		};
+        	}
+    	}
+    	return servletOutputStream;
     }
 
     @Override