X-Git-Url: https://juplo.de/gitweb/?p=percentcodec;a=blobdiff_plain;f=test%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Ftest%2FLoggingHttpServletResponseWrapper.java;fp=test%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Ftest%2FLoggingHttpServletResponseWrapper.java;h=0000000000000000000000000000000000000000;hp=075e6a790b43c8e18c8bf19d95dfdffd2681067e;hb=a6e0e65cce68acb20abc6ca935471611a740c342;hpb=1d395c6002486d485bde0d5dc713886d70bd3f8a diff --git a/test/src/main/java/de/halbekunst/juplo/test/LoggingHttpServletResponseWrapper.java b/test/src/main/java/de/halbekunst/juplo/test/LoggingHttpServletResponseWrapper.java deleted file mode 100644 index 075e6a79..00000000 --- a/test/src/main/java/de/halbekunst/juplo/test/LoggingHttpServletResponseWrapper.java +++ /dev/null @@ -1,359 +0,0 @@ -package de.halbekunst.juplo.test; - -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.util.Collection; -import java.util.Date; -import java.util.Locale; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author kai - */ -public class LoggingHttpServletResponseWrapper implements HttpServletResponse { - - private final static Logger log = LoggerFactory.getLogger(LoggingHttpServletResponseWrapper.class); - - public final static int DEFAULT_BUFFER_SIZE = 1024; - - private static long count = 0; - - private final Long no; - private final HttpServletResponse response; - private CountingServletOutputStream out; - private ServletOutputStream stream; - private PrintWriter writer; - private int buffer = DEFAULT_BUFFER_SIZE; - private boolean committed = false; - - - LoggingHttpServletResponseWrapper(String name, HttpServletResponse response) { - no = ++count; - log.debug("New request {}: {}", no, name); - this.response = response; - } - - - public long close() throws IOException { - if (out == null) { - return -1l; - } - else { - if (writer != null) - writer.close(); - else - stream.close(); - long result = out.count; - out = null; - buffer = DEFAULT_BUFFER_SIZE; - return result; - } - } - - @Override - public void flushBuffer() throws IOException { - log.debug("{} -- flushing buffer", no); - committed = true; - response.flushBuffer(); - } - - @Override - public int getBufferSize() { - log.trace("{} -- getting buffer size: {}", no, buffer); - return buffer; - } - - @Override - public boolean isCommitted() { - Boolean result = committed || response.isCommitted(); - log.trace("{} -- commited? {}", no, result); - return result; - } - - @Override - public void reset() { - log.debug("{} -- reset!", no); - if (committed) - throw new IllegalStateException("call to reset() after response has been commited!"); - if (out != null) - out.count = 0; - response.reset(); - } - - @Override - public void resetBuffer() { - log.debug("{} -- resetting buffer", no); - if (committed) - throw new IllegalStateException("call to resetBuffer() after response has been commited!"); - if (out != null) - out.count = 0; - response.resetBuffer(); - } - - @Override - public void setBufferSize(int size) { - log.debug("{} -- setting buffer size to {}", no, size); - if (out != null && out.count > 0) - throw new IllegalStateException("call to setBuffer() after content has been written!"); - response.setBufferSize(size); - buffer = size; - } - - @Override - public ServletOutputStream getOutputStream() throws IOException { - log.debug("{} -- getting output stream", no); - - if (writer != null) - throw new IllegalStateException("ServletOutputStream and PrintWriter cannot be requested both!"); - - if (stream == null) { - log.debug("{} -- creating new servlet output stream", no); - out = new CountingServletOutputStream(response.getOutputStream()); - stream = out; - } - - return stream; - } - - @Override - public PrintWriter getWriter() throws IOException { - log.debug("{} -- getting print writer", no); - - if (stream != null) - throw new IllegalStateException("ServletOutputStream and PrintWriter cannot be requested both!"); - - if (writer == null) { - log.debug("{} -- creating new print writer", no); - out = new CountingServletOutputStream(response.getOutputStream()); - OutputStreamWriter streamWriter = new OutputStreamWriter(out, response.getCharacterEncoding()); - writer = new PrintWriter(streamWriter); - } - - return writer; - } - - @Override - public void addCookie(Cookie cookie) { - log.debug("{} -- adding cookie: {}", no, cookie); - response.addCookie(cookie); - } - - @Override - public boolean containsHeader(String name) { - Boolean result = response.containsHeader(name); - log.trace("{} -- contains header {}? {}", new Object[] { no, name, result }); - return result; - } - - @Override - public String encodeURL(String url) { - log.trace("{} -- encoding url {}", no, url); - return response.encodeURL(url); - } - - @Override - public String encodeRedirectURL(String url) { - log.trace("{} -- encoding redirect url {}", no, url); - return response.encodeRedirectURL(url); - } - - @Override - public String encodeUrl(String url) { - log.trace("{} -- encoding url {}", no, url); - return response.encodeUrl(url); - } - - @Override - public String encodeRedirectUrl(String url) { - log.trace("{} -- encoding redirect url {}", no, url); - return response.encodeRedirectUrl(url); - } - - @Override - public void sendError(int sc, String msg) throws IOException { - log.debug("{} -- sending error: {}. {}", new Object[] { no, sc, msg }); - response.sendError(sc, msg); - } - - @Override - public void sendError(int sc) throws IOException { - log.debug("{} -- sending error: {}", no, sc); - } - - @Override - public void sendRedirect(String location) throws IOException { - log.debug("{} -- sending redirect: {}", no, location); - response.sendRedirect(location); - } - - @Override - public void setDateHeader(String name, long date) { - log.debug("{} -- setting date header {} to {}", new Object[] { no, name, new Date(date) }); - response.setDateHeader(name, date); - } - - @Override - public void addDateHeader(String name, long date) { - log.debug("{} -- adding date header {}: {}", new Object[] { no, name, new Date(date) }); - response.addDateHeader(name, date); - } - - @Override - public void setHeader(String name, String value) { - log.debug("{} -- setting header {} to {}", new Object[] { no, name, value }); - response.setHeader(name, value); - } - - @Override - public void addHeader(String name, String value) { - log.debug("{} -- adding header {}: {}", new Object[] { no, name, value }); - response.addHeader(name, value); - } - - @Override - public void setIntHeader(String name, int value) { - log.debug("{} -- seting int header {} to {}", new Object[] { no, name, value }); - response.setIntHeader(name, value); - } - - @Override - public void addIntHeader(String name, int value) { - log.debug("{} -- adding int header {}: {}", new Object[] { no, name, value }); - response.addIntHeader(name, value); - } - - @Override - public void setStatus(int sc) { - log.debug("{} -- setting status to {}", no, sc); - response.setStatus(sc); - } - - @Override - public void setStatus(int sc, String sm) { - log.debug("{} -- setting status to {} (message: {})", new Object[] { no, sc, sm }); - response.setStatus(sc, sm); - } - - @Override - public String getCharacterEncoding() { - String result = response.getCharacterEncoding(); - log.trace("{} -- character encoding: {}", no, result); - return result; - } - - @Override - public String getContentType() { - String result = response.getContentType(); - log.trace("{} -- content type: {}", no, result); - return result; - } - - @Override - public void setCharacterEncoding(String charset) { - log.debug("{} -- setting character encoding to {}", no, charset); - response.setCharacterEncoding(charset); - } - - @Override - public void setContentLength(int len) { - log.debug("{} -- setting content length to {}", no, len); - response.setContentLength(len); - } - - @Override - public void setContentType(String type) { - log.debug("{} -- setting content type to {}", no, type); - response.setContentType(type); - } - - @Override - public void setLocale(Locale loc) { - log.debug("{} -- setting locale to {}", no, loc); - response.setLocale(loc); - } - - @Override - public Locale getLocale() { - Locale locale = response.getLocale(); - log.trace("{} -- locale: {}", no, locale); - return locale; - } - - @Override - public int getStatus() { - Integer status = response.getStatus(); - log.trace("{} -- status: {}", no, status); - return status; - } - - @Override - public String getHeader(String name) { - String value = response.getHeader(name); - log.trace("{} -- header \"{}\": {}", new Object[] { no, name, value }); - return value; - } - - @Override - public Collection getHeaders(String name) { - Collection values = response.getHeaders(name); - if (log.isTraceEnabled()) { - StringBuilder builder = new StringBuilder(); - builder.append(no); - builder.append(" -- headers \""); - builder.append(name); - builder.append("\":"); - for (String value : values) { - builder.append(' '); - builder.append(value); - } - log.trace(builder.toString()); - } - return values; - } - - @Override - public Collection getHeaderNames() { - Collection values = response.getHeaderNames(); - if (log.isTraceEnabled()) { - StringBuilder builder = new StringBuilder(); - builder.append(no); - builder.append(" -- header-names:"); - for (String value : values) { - builder.append(' '); - builder.append(value); - } - log.trace(builder.toString()); - } - return values; - } - - - class CountingServletOutputStream extends ServletOutputStream { - - private ServletOutputStream out; - long count = 0l; - - - CountingServletOutputStream(ServletOutputStream out) { - this.out = out; - } - - - @Override - public void write(int i) throws IOException { - count++; - /** Simulate commit, when count is getting bigger then buffer */ - if (count == buffer + 1) { - log.info("{} -- simulating commit because buffer overflow! buffer: {}, count: {}", new Object[] { no, buffer, count }); - committed = true; - } - log.trace("{} -- writing byte {}: {}", new Object[] { no, count, (char)i }); - out.write(i); - } - } -}