svn commit: r1323 - in logback/trunk/logback-access/src/main/java/ch/qos/logback/access: pattern servlet

Author: ceki Date: Mon Feb 19 15:32:29 2007 New Revision: 1323 Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/pattern/FullResponseConverter.java 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/TeeServletOutputStream.java Log: Minor fixes Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/pattern/FullResponseConverter.java ============================================================================== --- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/pattern/FullResponseConverter.java (original) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/pattern/FullResponseConverter.java Mon Feb 19 15:32:29 2007 @@ -12,8 +12,10 @@ StringBuffer buf = new StringBuffer(); buf.append("HTTP/1.1 "); - buf.append(ae.getStatusCode()); - buf.append(" DO_FIXME"); + int statusCode = ae.getStatusCode(); + buf.append(statusCode); + buf.append(" "); + buf.append(getStatusCodeDescription(statusCode)); buf.append(Layout.LINE_SEP); List<String> hnList = ae.getResponseHeaderNameList(); @@ -29,4 +31,48 @@ return buf.toString(); } + static String getStatusCodeDescription(int sc) { + switch(sc) { + case 200: return "OK"; + case 201: return "Created"; + case 202: return "Accepted"; + case 203: return "Non-Authoritative Information"; + case 204: return "No Content"; + case 205: return "Reset Content"; + case 206: return "Partial Content"; + case 300: return "Multiple Choices"; + case 301: return "Moved Permanently"; + case 302: return "Found"; + case 303: return "See Other"; + case 304: return "Not Modified"; + case 305: return "Use Proxy"; + case 306: return "(Unused)"; + case 307: return "Temporary Redirect"; + case 400: return "Bad Request"; + case 401: return "Unauthorized"; + case 402: return "Payment Required"; + case 403: return "Forbidden"; + case 404: return "Not Found"; + case 405: return "Method Not Allowed"; + case 406: return "Not Acceptable"; + case 407: return "Proxy Authentication Required"; + case 408: return "Request Timeout"; + case 409: return "Conflict"; + case 410: return "Gone"; + case 411: return "Length Required"; + case 412: return "Precondition Failed"; + case 413: return "Request Entity Too Large"; + case 414: return "Request-URI Too Long"; + case 415: return "Unsupported Media Type"; + case 416: return "Requested Range Not Satisfiable"; + case 417: return "Expectation Failed"; + case 500: return "Internal Server Error"; + case 501: return "Not Implemented"; + case 502: return "Bad Gateway"; + case 503: return "Service Unavailable"; + case 504: return "Gateway Timeout"; + case 505: return "HTTP Version Not Supported"; + default: return "NA"; + } + } } 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 Feb 19 15:32:29 2007 @@ -15,44 +15,47 @@ public TeeHttpServletResponse(HttpServletResponse httpServletResponse) { super(httpServletResponse); - //System.out.println("TeeHttpServletResponse.constructor called"); + // System.out.println("TeeHttpServletResponse.constructor called"); } @Override public ServletOutputStream getOutputStream() throws IOException { - //System.out.println("TeeHttpServletResponse.getOutputStream() called"); - if(teeServletOutputStream == null) { - teeServletOutputStream = new TeeServletOutputStream( - this.getResponse()); + if (teeServletOutputStream == null) { + teeServletOutputStream = new TeeServletOutputStream(this.getResponse()); } return teeServletOutputStream; } @Override public PrintWriter getWriter() throws IOException { - //System.out.println("TeeHttpServletResponse.getWriter() called"); + // System.out.println("TeeHttpServletResponse.getWriter() called"); if (this.writer == null) { - this.writer = new PrintWriter(new OutputStreamWriter(getOutputStream()), true); + this.writer = new PrintWriter(new OutputStreamWriter(getOutputStream()), + true); } return this.writer; } @Override public void flushBuffer() { - //System.out.println("TeeHttpServletResponse.flushBuffer() called"); + // System.out.println("TeeHttpServletResponse.flushBuffer() called"); this.writer.flush(); } - + byte[] getOutputBuffer() { - return teeServletOutputStream.getOutputBuffer(); + // teeServletOutputStream can be null if the getOutputStream method is never called. + if (teeServletOutputStream != null) { + return teeServletOutputStream.getOutputBuffer(); + } else { + return null; + } } - - - void finish() throws IOException { - if(this.writer != null) { + + void finish() throws IOException { + if (this.writer != null) { this.writer.close(); } - if(this.teeServletOutputStream != null) { + if (this.teeServletOutputStream != null) { this.teeServletOutputStream.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 Feb 19 15:32:29 2007 @@ -11,60 +11,77 @@ final ServletOutputStream underlyingStream; final ByteArrayOutputStream baos; - - TeeServletOutputStream(ServletResponse httpServletResponse) throws IOException { - //System.out.println("TeeServletOutputStream.constructor() called"); + TeeServletOutputStream(ServletResponse httpServletResponse) + throws IOException { + // System.out.println("TeeServletOutputStream.constructor() called"); this.underlyingStream = httpServletResponse.getOutputStream(); + if (underlyingStream == null) { + System.out.println("XXXXX underlyingStream == null"); + } else { + System.out.println("XXXXX underlyingStream != null"); + } baos = new ByteArrayOutputStream(); } byte[] getOutputBuffer() { return baos.toByteArray(); } - + @Override public void write(int val) throws IOException { - //System.out.println("XXXXXXXXXXXWRITE TeeServletOutputStream.write(int) called"); - underlyingStream.write(val); - baos.write(val); + // System.out.println("XXXXXXXXXXXWRITE TeeServletOutputStream.write(int) + // called"); + if (underlyingStream != null) { + underlyingStream.write(val); + baos.write(val); + } } @Override public void write(byte[] byteArray) throws IOException { - //System.out.println("WRITE TeeServletOutputStream.write(byte[]) called"); + if (underlyingStream == null) { + return; + } + // System.out.println("WRITE TeeServletOutputStream.write(byte[]) called"); write(byteArray, 0, byteArray.length); } @Override public void write(byte byteArray[], int offset, int length) throws IOException { - //System.out.println("WRITE TeeServletOutputStream.write(byte[], int, int) called"); - //System.out.println(new String(byteArray, offset, length)); + if (underlyingStream == null) { + return; + } + // System.out.println("WRITE TeeServletOutputStream.write(byte[], int, int) + // called"); + // System.out.println(new String(byteArray, offset, length)); underlyingStream.write(byteArray, offset, length); baos.write(byteArray, offset, length); } public void close() throws IOException { - // System.out.println("CLOSE TeeServletOutputStream.close() called"); - - // If the servlet accessing the stream is using a writer instead of + // 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 // before the data sent to the writer could be flushed. } public void finish() throws IOException { - //System.out.println("FINISH TeeServletOutputStream.close() called"); + // System.out.println("FINISH TeeServletOutputStream.close() called"); flush(); underlyingStream.close(); baos.close(); } public void flush() throws IOException { - //System.out.println("FLUSH TeeServletOutputStream.flush() called"); + if (underlyingStream == null) { + return; + } + // System.out.println("FLUSH TeeServletOutputStream.flush() called"); underlyingStream.flush(); baos.flush(); } - }
participants (1)
-
noreply.ceki@qos.ch