/*
* XFormsFilter: BufferedHttpServletResponseWrapper
* Copyright (C) 2006 Matthijs Wensveen <m.wensveen@func.nl>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: XFormsFilter.java 4565 2006-10-12 12:42:18 +0000 (Thu, 12 Oct 2006) deliriumsky $
*/
package uk.gov.devonline.www.xforms;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
/**
* @author Matthijs Wensveen <m.wensveen@func.nl>
*/
public class BufferedHttpServletResponseWrapper extends HttpServletResponseWrapper
{
private ByteArrayOutputStream output;
private BufferedServletOutputStream servletOutputStream;
private int contentLength;
/** GenericResponseWrapper constructor
*
* @param response HttpServletResponse
*/
public BufferedHttpServletResponseWrapper(HttpServletResponse response) {
super(response);
output = new ByteArrayOutputStream();
servletOutputStream = new BufferedServletOutputStream(output);
}
/**
* getData get the data that would be written to the response as array of bytes
* @return byte[] array of bytes
*/
public byte[] getData() {
return output.toByteArray();
}
/**
* getData get the data that would be written to the response as String
* @return String String with output
*/
public String getDataAsString() {
return output.toString();
}
/** getOutputStream
* overriden method to capture the output written to the ServlertOutputStream
*/
public ServletOutputStream getOutputStream() {
return servletOutputStream;
}
public void setContentLength(int length) {
this.contentLength = length;
super.setContentLength(length);
}
public int getContentLength() {
return contentLength;
}
/** getWriter get the PrintWriter to write data to
* @return PrintWriter
*/
public PrintWriter getWriter() {
return new PrintWriter(getOutputStream(), true);
}
}