/** * A PrintWriter that does not print anything but writes everything to a stringbuffer that can then be fetched as an InputStream.<br> * You construct it with an output stream , e.g. the real stream to the browser that you can then later use for output. * This object is used by passed it into IWContext as the default output writer with iwc.setWriter(StringBufferWriter). * @author <a href="mailto:eiki@idega.is>Eirikur Hrafnsson</a> */ package com.idega.servlet.util; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; public class StringBufferWriter extends PrintWriter { private OutputStream underlying; private StringBuffer buffer; private String newLine = "\n"; public StringBufferWriter(OutputStream underlying) { super(underlying); this.underlying = underlying; this.buffer = new StringBuffer(); } public void print(boolean b) { print(String.valueOf(b)); } public void print(char c) { print(String.valueOf(c)); } public void print(char[] s) { print(String.valueOf(s)); } public void print(double d) { print(String.valueOf(d)); } public void print(float f) { print(String.valueOf(f)); } public void print(int i) { print(String.valueOf(i)); } public void print(long l) { print(String.valueOf(l)); } public void print(Object o) { print(String.valueOf(o)); } public void print(String s) { //underlying.print(s); this.buffer.append(s); } public void println() { //underlying.println(); this.buffer.append(this.newLine); } public void println(boolean b) { println(String.valueOf(b)); } public void println(char c) { println(String.valueOf(c)); } public void println(char[] s) { println(String.valueOf(s)); } public void println(double d) { println(String.valueOf(d)); } public void println(float f) { println(String.valueOf(f)); } public void println(int i) { println(String.valueOf(i)); } public void println(long l) { println(String.valueOf(l)); } public void println(Object o) { println(String.valueOf(o)); } public void println(String s) { print(s); println(); } public void setError() { super.setError(); } public void write(char[] buf) { print(buf); } public InputStream getInputStream(){ return new ByteArrayInputStream(this.buffer.toString().getBytes()); } public OutputStream getOutputStream(){ return this.underlying; } public void write(char[] buf, int off, int len) { char[] newarray = new char[len]; System.arraycopy(buf, off, newarray, 0, len); write(newarray); } public void write(int c) { print(c); } public void write(String s) { print(s); } public void write(String s, int off, int len) { write(s.substring(off, off + len)); } }