svn commit: r1687 - logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet

Author: ceki Date: Mon May 5 17:55:10 2008 New Revision: 1687 Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletResponse.java logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletInputStream.java logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletOutputStream.java Log: - refactoring TeeFilter and co Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletResponse.java ============================================================================== --- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletResponse.java (original) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletResponse.java Mon May 5 17:55:10 2008 @@ -11,7 +11,7 @@ public class TeeHttpServletResponse extends HttpServletResponseWrapper { TeeServletOutputStream teeServletOutputStream; - PrintWriter writer; + PrintWriter teeWriter; public TeeHttpServletResponse(HttpServletResponse httpServletResponse) { super(httpServletResponse); @@ -27,17 +27,17 @@ @Override public PrintWriter getWriter() throws IOException { - if (this.writer == null) { - this.writer = new PrintWriter(new OutputStreamWriter(getOutputStream()), + if (this.teeWriter == null) { + this.teeWriter = new PrintWriter(new OutputStreamWriter(getOutputStream()), true); } - return this.writer; + return this.teeWriter; } @Override public void flushBuffer() { - if (this.writer != null) { - this.writer.flush(); + if (this.teeWriter != null) { + this.teeWriter.flush(); } } @@ -45,15 +45,15 @@ // teeServletOutputStream can be null if the getOutputStream method is never // called. if (teeServletOutputStream != null) { - return teeServletOutputStream.getOutputBuffer(); + return teeServletOutputStream.getOutputStreamAsByteArray(); } else { return null; } } void finish() throws IOException { - if (this.writer != null) { - this.writer.close(); + if (this.teeWriter != null) { + this.teeWriter.close(); } if (this.teeServletOutputStream != null) { this.teeServletOutputStream.close(); Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletInputStream.java ============================================================================== --- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletInputStream.java (original) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletInputStream.java Mon May 5 17:55:10 2008 @@ -1,7 +1,6 @@ package ch.qos.logback.access.servlet; import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; @@ -30,12 +29,9 @@ if (len < 0) { in = originalSIS; } else { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); inputBuffer = new byte[len]; - int n = 0; - while ((n = originalSIS.read(inputBuffer, 0, len)) != -1) { - baos.write(inputBuffer, 0, n); - } + int n = originalSIS.read(inputBuffer, 0, len); + assert n == len; this.in = new ByteArrayInputStream(inputBuffer); originalSIS.close(); } Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletOutputStream.java ============================================================================== --- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletOutputStream.java (original) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletOutputStream.java Mon May 5 17:55:10 2008 @@ -9,24 +9,24 @@ public class TeeServletOutputStream extends ServletOutputStream { final ServletOutputStream underlyingStream; - final ByteArrayOutputStream baos; + final ByteArrayOutputStream baosCopy; TeeServletOutputStream(ServletResponse httpServletResponse) throws IOException { // System.out.println("TeeServletOutputStream.constructor() called"); this.underlyingStream = httpServletResponse.getOutputStream(); - baos = new ByteArrayOutputStream(); + baosCopy = new ByteArrayOutputStream(); } - byte[] getOutputBuffer() { - return baos.toByteArray(); + byte[] getOutputStreamAsByteArray() { + return baosCopy.toByteArray(); } @Override public void write(int val) throws IOException { if (underlyingStream != null) { underlyingStream.write(val); - baos.write(val); + baosCopy.write(val); } } @@ -49,31 +49,27 @@ // called"); // System.out.println(new String(byteArray, offset, length)); underlyingStream.write(byteArray, offset, length); - baos.write(byteArray, offset, length); + baosCopy.write(byteArray, offset, length); } + @Override public void close() throws IOException { // System.out.println("CLOSE TeeServletOutputStream.close() called"); // If the servlet accessing the stream is using a writer instead of - // an OutputStream, it will probably call os.close() begore calling - // writer.close. Thus, the undelying output stream will be called + // an OutputStream, it will probably call os.close() before calling + // writer.close. Thus, the underlying output stream will be called // before the data sent to the writer could be flushed. } - public void finish() throws IOException { - flush(); - underlyingStream.close(); - baos.close(); - } + @Override public void flush() throws IOException { if (underlyingStream == null) { return; } // System.out.println("FLUSH TeeServletOutputStream.flush() called"); underlyingStream.flush(); - baos.flush(); + baosCopy.flush(); } - }
participants (1)
-
noreply.ceki@qos.ch