package com.github.bjuvensjo.rsimulator.recorder; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; /** * A HttpServletResponseWrapper which gets its ServletOutputStream from a ByteArrayPrintWriter * * @author Anders Bälter */ public class RecorderServletResponseWrapper extends HttpServletResponseWrapper { private ByteArrayPrintWriter pw = new ByteArrayPrintWriter(); private int httpStatus; public RecorderServletResponseWrapper(HttpServletResponse response) { super(response); } @Override public ServletOutputStream getOutputStream() throws IOException { return pw.getStream(); } @Override public PrintWriter getWriter() throws IOException { return pw.getWriter(); } @Override public void sendError(int sc) throws IOException { httpStatus = sc; super.sendError(sc); } @Override public void sendError(int sc, String msg) throws IOException { httpStatus = sc; super.sendError(sc, msg); } @Override public void setStatus(int sc) { httpStatus = sc; super.setStatus(sc); } public int getStatus() { return httpStatus; } public String getResponseAsString(String encoding) throws UnsupportedEncodingException { return pw.toString(encoding); } public byte[] getBytes() { return pw.getBytes(); } }