You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2007/05/18 06:53:19 UTC
svn commit: r539257 -
/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java
Author: matzew
Date: Thu May 17 21:53:18 2007
New Revision: 539257
URL: http://svn.apache.org/viewvc?view=rev&rev=539257
Log:
MYFACES-1621 ViewResponseWrapper does not wrapped the OutputStreams
Modified:
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java
Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java?view=diff&rev=539257&r1=539256&r2=539257
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/jsp/ViewResponseWrapper.java Thu May 17 21:53:18 2007
@@ -3,9 +3,11 @@
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.PrintWriter;
+import java.io.ByteArrayOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
+import javax.servlet.ServletOutputStream;
/**
* @author Bruno Aranda (latest modification by $Author$)
@@ -16,6 +18,7 @@
private PrintWriter _writer;
private CharArrayWriter _charArrayWriter;
private int _status = HttpServletResponse.SC_OK;
+ private WrappedServletOutputStream _byteArrayWriter;
public ViewResponseWrapper(HttpServletResponse httpServletResponse)
{
@@ -56,16 +59,31 @@
}
public void flushToWrappedResponse() throws IOException
- {
- _charArrayWriter.writeTo(getResponse().getWriter());
- _charArrayWriter.reset();
- _writer.flush();
-
+ { if (_charArrayWriter != null) {
+ _charArrayWriter.writeTo(getResponse().getWriter());
+ _charArrayWriter.reset();
+ _writer.flush();
+ } else if (_byteArrayWriter != null) {
+ getResponse().getOutputStream().write(_byteArrayWriter.toByteArray());
+ _byteArrayWriter.reset();
+ _byteArrayWriter.flush();
+ }
+
+ }
+
+ @Override
+ public ServletOutputStream getOutputStream() throws IOException {
+ if (_charArrayWriter != null ) throw new IllegalStateException();
+ if (_byteArrayWriter == null ) {
+ _byteArrayWriter = new WrappedServletOutputStream();
+ }
+ return _byteArrayWriter;
}
@Override
public PrintWriter getWriter() throws IOException
{
+ if (_byteArrayWriter != null ) throw new IllegalStateException();
if (_writer == null)
{
_charArrayWriter = new CharArrayWriter(4096);
@@ -73,7 +91,8 @@
}
return _writer;
}
-
+
+ @Override
public void reset()
{
if (_charArrayWriter != null)
@@ -92,4 +111,25 @@
return null;
}
-}
\ No newline at end of file
+ static class WrappedServletOutputStream extends ServletOutputStream {
+ private ByteArrayOutputStream _byteArrayOutputStream;
+
+
+ public WrappedServletOutputStream() {
+ _byteArrayOutputStream = new ByteArrayOutputStream(1024);
+ }
+
+ public void write(int i) throws IOException {
+ _byteArrayOutputStream.write(i);
+ }
+
+ public byte[] toByteArray() {
+ return _byteArrayOutputStream.toByteArray();
+ }
+
+ public void reset() {
+ _byteArrayOutputStream.reset();
+ }
+
+ }
+}