J2ee 1.3 implementation of BufferedResponseWrapper. Need to extend HttpServletResponseWrapper for Weblogic
compatibility.
| Method from org.displaytag.filter.BufferedResponseWrapper13Impl Detail: |
public void addDateHeader(String name,
long date) {
if (!ArrayUtils.contains(FILTERED_HEADERS, StringUtils.lowerCase(name)))
{
((HttpServletResponse) getResponse()).addDateHeader(name, date);
}
}
|
public void addHeader(String name,
String value) {
// if the "magic parameter" is set, a table tag is going to call getOutputStream()
if (TableTagParameters.PARAMETER_EXPORTING.equals(name))
{
log.debug("Magic header received, real response is now accessible");
state = true;
}
else
{
if (!ArrayUtils.contains(FILTERED_HEADERS, StringUtils.lowerCase(name)))
{
((HttpServletResponse) getResponse()).addHeader(name, value);
}
}
}
|
public void addIntHeader(String name,
int value) {
if (!ArrayUtils.contains(FILTERED_HEADERS, StringUtils.lowerCase(name)))
{
((HttpServletResponse) getResponse()).addIntHeader(name, value);
}
}
|
public void flushBuffer() throws IOException {
if (outputWriter != null)
{
this.outputWriter.flush();
this.servletOutputStream.outputStream.reset();
}
}
Flush the buffer, not the response. |
public String getContentAsString() {
return this.outputWriter.toString() + this.servletOutputStream.toString();
}
|
public String getContentType() {
return this.contentType;
}
|
public ServletOutputStream getOutputStream() throws IOException {
if (state && !outRequested)
{
log.debug("getOutputStream() returned");
// ok, exporting in progress, discard old data and go on streaming
this.servletOutputStream.reset();
this.outputWriter.reset();
this.outRequested = true;
return ((HttpServletResponse) getResponse()).getOutputStream();
}
return this.servletOutputStream;
}
|
public PrintWriter getWriter() throws IOException {
if (state && !outRequested)
{
log.debug("getWriter() returned");
// ok, exporting in progress, discard old data and go on streaming
this.servletOutputStream.reset();
this.outputWriter.reset();
this.outRequested = true;
return ((HttpServletResponse) getResponse()).getWriter();
}
return new PrintWriter(this.outputWriter);
}
|
public boolean isOutRequested() {
return this.outRequested;
}
|
public void setContentType(String theContentType) {
if (state)
{
log.debug("Allowing content type");
if (this.contentType != null && // content type has been set before
this.contentType.indexOf("charset") > -1) // and it specified charset
{
// so copy the charset
String charset = this.contentType.substring(this.contentType.indexOf("charset"));
if (log.isDebugEnabled())
{
log.debug("Adding charset: [" + charset + "]");
}
getResponse().setContentType(StringUtils.substringBefore(theContentType, "charset") + '=" + charset);
}
else
{
getResponse().setContentType(theContentType);
}
}
this.contentType = theContentType;
}
The content type is NOT set on the wrapped response. You must set it manually. Overrides any previously set
value. |
public void setDateHeader(String name,
long date) {
if (!ArrayUtils.contains(FILTERED_HEADERS, StringUtils.lowerCase(name)))
{
((HttpServletResponse) getResponse()).setDateHeader(name, date);
}
}
|
public void setHeader(String name,
String value) {
if (!ArrayUtils.contains(FILTERED_HEADERS, StringUtils.lowerCase(name)))
{
((HttpServletResponse) getResponse()).setHeader(name, value);
}
}
|
public void setIntHeader(String name,
int value) {
if (!ArrayUtils.contains(FILTERED_HEADERS, StringUtils.lowerCase(name)))
{
((HttpServletResponse) getResponse()).setIntHeader(name, value);
}
}
|