package com.idega.servlet.filter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
public class CacheResponseWrapper
extends HttpServletResponseWrapper {
protected HttpServletResponse origResponse = null;
protected ServletOutputStream stream = null;
protected PrintWriter writer = null;
protected OutputStream cache = null;
public CacheResponseWrapper(HttpServletResponse response,
OutputStream cache) {
super(response);
this.origResponse = response;
this.cache = cache;
}
public ServletOutputStream createOutputStream()
throws IOException {
return (new CacheResponseStream(this.origResponse, this.cache));
}
public void flushBuffer() throws IOException {
this.stream.flush();
}
public ServletOutputStream getOutputStream()
throws IOException {
if (this.writer != null) {
throw new IllegalStateException(
"getWriter() has already been called!");
}
if (this.stream == null) {
this.stream = createOutputStream();
}
return (this.stream);
}
public PrintWriter getWriter() throws IOException {
if (this.writer != null) {
return (this.writer);
}
if (this.stream != null) {
throw new IllegalStateException(
"getOutputStream() has already been called!");
}
this.stream = createOutputStream();
this.writer = new PrintWriter(new OutputStreamWriter(this.stream, "UTF-8"));
return (this.writer);
}
}