package de.axone.web;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Collection;
import java.util.Locale;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
public class BufferedHttpServletResponse implements HttpServletResponse {
ByteArrayOutputStream outS;
private StringWriter out;
private PrintWriter printer;
@Override
public void addCookie( Cookie arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public void addDateHeader( String arg0, long arg1 ) {
throw new UnsupportedOperationException();
}
@Override
public void addHeader( String arg0, String arg1 ) {
throw new UnsupportedOperationException();
}
@Override
public void addIntHeader( String arg0, int arg1 ) {
throw new UnsupportedOperationException();
}
@Override
public boolean containsHeader( String arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public String encodeRedirectURL( String arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public String encodeRedirectUrl( String arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public String encodeURL( String arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public String encodeUrl( String arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public void sendError( int arg0 ) throws IOException {
throw new UnsupportedOperationException();
}
@Override
public void sendError( int arg0, String arg1 ) throws IOException {
throw new UnsupportedOperationException();
}
@Override
public void sendRedirect( String arg0 ) throws IOException {
throw new UnsupportedOperationException();
}
@Override
public void setDateHeader( String arg0, long arg1 ) {
throw new UnsupportedOperationException();
}
@Override
public void setHeader( String arg0, String arg1 ) {
throw new UnsupportedOperationException();
}
@Override
public void setIntHeader( String arg0, int arg1 ) {
throw new UnsupportedOperationException();
}
@Override
public void setStatus( int arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public void setStatus( int arg0, String arg1 ) {
throw new UnsupportedOperationException();
}
@Override
public void flushBuffer() throws IOException {
throw new UnsupportedOperationException();
}
@Override
public int getBufferSize() {
throw new UnsupportedOperationException();
}
@Override
public String getCharacterEncoding() {
throw new UnsupportedOperationException();
}
@Override
public String getContentType() {
throw new UnsupportedOperationException();
}
@Override
public Locale getLocale() {
throw new UnsupportedOperationException();
}
@Override
public synchronized ServletOutputStream getOutputStream() throws IOException {
if( out != null ) throw new IllegalStateException( "Already using Writer" );
if( outS == null ) outS = new ByteArrayOutputStream();
return new ServletOutputStream() {
@Override
public void write( int b ) throws IOException {
outS.write( b );
}
};
}
@Override
public synchronized PrintWriter getWriter() throws IOException {
if( outS != null ) throw new IllegalStateException( "Already using OutputStream" );
if( printer == null ){
out = new StringWriter();
printer = new PrintWriter( out );
}
return printer;
}
@Override
public boolean isCommitted() {
throw new UnsupportedOperationException();
}
@Override
public void reset() {
throw new UnsupportedOperationException();
}
@Override
public void resetBuffer() {
throw new UnsupportedOperationException();
}
@Override
public void setBufferSize( int arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public void setCharacterEncoding( String arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public void setContentLength( int arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public void setContentType( String arg0 ) {
throw new UnsupportedOperationException();
}
@Override
public void setLocale( Locale arg0 ) {
throw new UnsupportedOperationException();
}
public synchronized StringBuffer getBuffer(){
return out.getBuffer();
}
public ByteArrayOutputStream getByteArray(){
return outS;
}
/* Since 3.0 */
@Override
public int getStatus() {
throw new UnsupportedOperationException();
}
@Override
public String getHeader( String name ) {
throw new UnsupportedOperationException();
}
@Override
public Collection<String> getHeaders( String name ) {
throw new UnsupportedOperationException();
}
@Override
public Collection<String> getHeaderNames() {
throw new UnsupportedOperationException();
}
}