package railo.runtime.writer;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.Writer;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import railo.commons.lang.CharBuffer;
/**
* implementation of the BodyContent
*/
public class BodyContentImpl extends BodyContent {
CharBuffer charBuffer=new CharBuffer(128);
JspWriter enclosingWriter;
/**
* default constructor
* @param jspWriter
*/
public BodyContentImpl(JspWriter jspWriter) {
super(jspWriter);
enclosingWriter=jspWriter;
}
/**
* initialize the BodyContent with the enclosing jsp writer
* @param jspWriter
*/
public void init(JspWriter jspWriter) {
enclosingWriter=jspWriter;
clearBuffer();
}
/**
* @see javax.servlet.jsp.tagext.BodyContent#getReader()
*/
public Reader getReader() {
return new StringReader(charBuffer.toString());
}
/**
* @see javax.servlet.jsp.tagext.BodyContent#getString()
*/
public String getString() {
return charBuffer.toString();
}
/**
* @see javax.servlet.jsp.tagext.BodyContent#writeOut(java.io.Writer)
*/
public void writeOut(Writer writer) throws IOException {
charBuffer.writeOut(writer);
}
/**
* @see javax.servlet.jsp.JspWriter#newLine()
*/
public void newLine() {
println();
}
/**
* @see javax.servlet.jsp.JspWriter#print(boolean)
*/
public void print(boolean arg) {
print(arg?"true":"false");
}
/**
* @see javax.servlet.jsp.JspWriter#print(char)
*/
public void print(char arg) {
charBuffer.append(String.valueOf(arg));
}
/**
* @see javax.servlet.jsp.JspWriter#print(int)
*/
public void print(int arg) {
charBuffer.append(String.valueOf(arg));
}
/**
* @see javax.servlet.jsp.JspWriter#print(long)
*/
public void print(long arg) {
charBuffer.append(String.valueOf(arg));
}
/**
* @see javax.servlet.jsp.JspWriter#print(float)
*/
public void print(float arg) {
charBuffer.append(String.valueOf(arg));
}
/**
* @see javax.servlet.jsp.JspWriter#print(double)
*/
public void print(double arg) {
charBuffer.append(String.valueOf(arg));
}
/**
* @see javax.servlet.jsp.JspWriter#print(char[])
*/
public void print(char[] arg) {
charBuffer.append(arg);
}
/**
* @see javax.servlet.jsp.JspWriter#print(java.lang.String)
*/
public void print(String arg) {
charBuffer.append(arg);
}
/**
* @see javax.servlet.jsp.JspWriter#print(java.lang.Object)
*/
public void print(Object arg) {
charBuffer.append(String.valueOf(arg));
}
/**
* @see javax.servlet.jsp.JspWriter#println()
*/
public void println() {
charBuffer.append("\n");
}
/**
* @see javax.servlet.jsp.JspWriter#println(boolean)
*/
public void println(boolean arg) {
print(arg);
println();
}
/**
* @see javax.servlet.jsp.JspWriter#println(char)
*/
public void println(char arg) {
print(arg);
println();
}
/**
* @see javax.servlet.jsp.JspWriter#println(int)
*/
public void println(int arg) {
print(arg);
println();
}
/**
* @see javax.servlet.jsp.JspWriter#println(long)
*/
public void println(long arg) {
print(arg);
println();
}
/**
* @see javax.servlet.jsp.JspWriter#println(float)
*/
public void println(float arg) {
print(arg);
println();
}
/**
* @see javax.servlet.jsp.JspWriter#println(double)
*/
public void println(double arg) {
print(arg);
println();
}
/**
* @see javax.servlet.jsp.JspWriter#println(char[])
*/
public void println(char[] arg) {
print(arg);
println();
}
/**
* @see javax.servlet.jsp.JspWriter#println(java.lang.String)
*/
public void println(String arg) {
print(arg);
println();
}
/**
* @see javax.servlet.jsp.JspWriter#println(java.lang.Object)
*/
public void println(Object arg) {
print(arg);
println();
}
/**
* @throws IOException
* @see javax.servlet.jsp.JspWriter#clear()
*/
public void clear() throws IOException {
charBuffer.clear();
enclosingWriter.clear();
}
/**
* @see javax.servlet.jsp.JspWriter#clearBuffer()
*/
public void clearBuffer() {
charBuffer.clear();
}
/**
* @see java.io.Writer#flush()
*/
public void flush() throws IOException {
enclosingWriter.write(charBuffer.toCharArray());
charBuffer.clear();
}
/**
* @see java.io.Writer#close()
*/
public void close() throws IOException {
flush();
enclosingWriter.close();
}
/**
* @see javax.servlet.jsp.JspWriter#getRemaining()
*/
public int getRemaining() {
return bufferSize-charBuffer.size();
}
/**
* @see java.io.Writer#write(char[], int, int)
*/
public void write(char[] cbuf, int off, int len) {
charBuffer.append(cbuf,off,len);
}
/**
* @see java.io.Writer#write(char[])
*/
public void write(char[] cbuf) {
charBuffer.append(cbuf);
}
/**
* @see java.io.Writer#write(int)
*/
public void write(int c) {
print(c);
}
/**
* @see java.io.Writer#write(java.lang.String, int, int)
*/
public void write(String str, int off, int len) {
charBuffer.append(str,off,len);
}
/**
* @see java.io.Writer#write(java.lang.String)
*/
public void write(String str) {
charBuffer.append(str);
}
/**
* @see java.lang.Object#toString()
*/
public String toString() {
return charBuffer.toString();
}
/**
* @see javax.servlet.jsp.tagext.BodyContent#clearBody()
*/
public void clearBody() {
charBuffer.clear();
}
/**
* @see javax.servlet.jsp.tagext.BodyContent#getEnclosingWriter()
*/
public JspWriter getEnclosingWriter() {
return enclosingWriter;
}
/**
* returns the inner char buffer
* @return intern CharBuffer
*/
public CharBuffer getCharBuffer() {
return charBuffer;
}
/**
* sets the inner Charbuffer
* @param charBuffer
*/
public void setCharBuffer(CharBuffer charBuffer) {
this.charBuffer=charBuffer;
}
/**
* @see javax.servlet.jsp.JspWriter#getBufferSize()
*/
public int getBufferSize() {
return charBuffer.size();
}
/**
* @see javax.servlet.jsp.JspWriter#isAutoFlush()
*/
public boolean isAutoFlush() {
return super.isAutoFlush();
}
/**
* @see java.io.Writer#append(java.lang.CharSequence)
*/
public Writer append(CharSequence csq) throws IOException {
write(csq.toString());
return this;
}
/**
* @see java.io.Writer#append(java.lang.CharSequence, int, int)
*/
public Writer append(CharSequence csq, int start, int end) throws IOException {
write(csq.subSequence(start, end).toString());
return this;
}
/**
* @see java.io.Writer#append(char)
*/
public Writer append(char c) throws IOException {
write(c);
return this;
}
}