001 package railo.runtime.writer; 002 003 import java.io.IOException; 004 import java.io.Reader; 005 import java.io.StringReader; 006 import java.io.Writer; 007 008 import javax.servlet.jsp.JspWriter; 009 import javax.servlet.jsp.tagext.BodyContent; 010 011 import railo.commons.lang.CharBuffer; 012 013 014 /** 015 * implementation of the BodyContent 016 */ 017 public class BodyContentImpl extends BodyContent { 018 019 CharBuffer charBuffer=new CharBuffer(128); 020 JspWriter enclosingWriter; 021 022 /** 023 * default constructor 024 * @param jspWriter 025 */ 026 public BodyContentImpl(JspWriter jspWriter) { 027 super(jspWriter); 028 enclosingWriter=jspWriter; 029 030 } 031 032 /** 033 * initialize the BodyContent with the enclosing jsp writer 034 * @param jspWriter 035 */ 036 public void init(JspWriter jspWriter) { 037 enclosingWriter=jspWriter; 038 clearBuffer(); 039 040 } 041 042 /** 043 * @see javax.servlet.jsp.tagext.BodyContent#getReader() 044 */ 045 public Reader getReader() { 046 return new StringReader(charBuffer.toString()); 047 } 048 049 /** 050 * @see javax.servlet.jsp.tagext.BodyContent#getString() 051 */ 052 public String getString() { 053 return charBuffer.toString(); 054 } 055 056 /** 057 * @see javax.servlet.jsp.tagext.BodyContent#writeOut(java.io.Writer) 058 */ 059 public void writeOut(Writer writer) throws IOException { 060 charBuffer.writeOut(writer); 061 } 062 063 /** 064 * @see javax.servlet.jsp.JspWriter#newLine() 065 */ 066 public void newLine() { 067 println(); 068 } 069 070 /** 071 * @see javax.servlet.jsp.JspWriter#print(boolean) 072 */ 073 public void print(boolean arg) { 074 print(arg?"true":"false"); 075 } 076 077 /** 078 * @see javax.servlet.jsp.JspWriter#print(char) 079 */ 080 public void print(char arg) { 081 charBuffer.append(String.valueOf(arg)); 082 } 083 084 /** 085 * @see javax.servlet.jsp.JspWriter#print(int) 086 */ 087 public void print(int arg) { 088 charBuffer.append(String.valueOf(arg)); 089 } 090 091 /** 092 * @see javax.servlet.jsp.JspWriter#print(long) 093 */ 094 public void print(long arg) { 095 charBuffer.append(String.valueOf(arg)); 096 } 097 098 /** 099 * @see javax.servlet.jsp.JspWriter#print(float) 100 */ 101 public void print(float arg) { 102 charBuffer.append(String.valueOf(arg)); 103 } 104 105 /** 106 * @see javax.servlet.jsp.JspWriter#print(double) 107 */ 108 public void print(double arg) { 109 charBuffer.append(String.valueOf(arg)); 110 } 111 112 /** 113 * @see javax.servlet.jsp.JspWriter#print(char[]) 114 */ 115 public void print(char[] arg) { 116 charBuffer.append(arg); 117 } 118 119 /** 120 * @see javax.servlet.jsp.JspWriter#print(java.lang.String) 121 */ 122 public void print(String arg) { 123 charBuffer.append(arg); 124 } 125 126 /** 127 * @see javax.servlet.jsp.JspWriter#print(java.lang.Object) 128 */ 129 public void print(Object arg) { 130 charBuffer.append(String.valueOf(arg)); 131 } 132 133 /** 134 * @see javax.servlet.jsp.JspWriter#println() 135 */ 136 public void println() { 137 charBuffer.append("\n"); 138 } 139 140 /** 141 * @see javax.servlet.jsp.JspWriter#println(boolean) 142 */ 143 public void println(boolean arg) { 144 print(arg); 145 println(); 146 } 147 148 /** 149 * @see javax.servlet.jsp.JspWriter#println(char) 150 */ 151 public void println(char arg) { 152 print(arg); 153 println(); 154 } 155 156 /** 157 * @see javax.servlet.jsp.JspWriter#println(int) 158 */ 159 public void println(int arg) { 160 print(arg); 161 println(); 162 } 163 164 /** 165 * @see javax.servlet.jsp.JspWriter#println(long) 166 */ 167 public void println(long arg) { 168 print(arg); 169 println(); 170 } 171 172 /** 173 * @see javax.servlet.jsp.JspWriter#println(float) 174 */ 175 public void println(float arg) { 176 print(arg); 177 println(); 178 } 179 180 /** 181 * @see javax.servlet.jsp.JspWriter#println(double) 182 */ 183 public void println(double arg) { 184 print(arg); 185 println(); 186 } 187 188 /** 189 * @see javax.servlet.jsp.JspWriter#println(char[]) 190 */ 191 public void println(char[] arg) { 192 print(arg); 193 println(); 194 } 195 196 /** 197 * @see javax.servlet.jsp.JspWriter#println(java.lang.String) 198 */ 199 public void println(String arg) { 200 print(arg); 201 println(); 202 } 203 204 /** 205 * @see javax.servlet.jsp.JspWriter#println(java.lang.Object) 206 */ 207 public void println(Object arg) { 208 print(arg); 209 println(); 210 } 211 212 /** 213 * @throws IOException 214 * @see javax.servlet.jsp.JspWriter#clear() 215 */ 216 public void clear() throws IOException { 217 charBuffer.clear(); 218 enclosingWriter.clear(); 219 } 220 221 /** 222 * @see javax.servlet.jsp.JspWriter#clearBuffer() 223 */ 224 public void clearBuffer() { 225 charBuffer.clear(); 226 } 227 228 /** 229 * @see java.io.Writer#flush() 230 */ 231 public void flush() throws IOException { 232 enclosingWriter.write(charBuffer.toCharArray()); 233 charBuffer.clear(); 234 } 235 236 /** 237 * @see java.io.Writer#close() 238 */ 239 public void close() throws IOException { 240 flush(); 241 enclosingWriter.close(); 242 } 243 244 /** 245 * @see javax.servlet.jsp.JspWriter#getRemaining() 246 */ 247 public int getRemaining() { 248 return bufferSize-charBuffer.size(); 249 } 250 251 /** 252 * @see java.io.Writer#write(char[], int, int) 253 */ 254 public void write(char[] cbuf, int off, int len) { 255 charBuffer.append(cbuf,off,len); 256 } 257 258 /** 259 * @see java.io.Writer#write(char[]) 260 */ 261 public void write(char[] cbuf) { 262 charBuffer.append(cbuf); 263 } 264 265 /** 266 * @see java.io.Writer#write(int) 267 */ 268 public void write(int c) { 269 print(c); 270 } 271 272 /** 273 * @see java.io.Writer#write(java.lang.String, int, int) 274 */ 275 public void write(String str, int off, int len) { 276 charBuffer.append(str,off,len); 277 } 278 279 /** 280 * @see java.io.Writer#write(java.lang.String) 281 */ 282 public void write(String str) { 283 charBuffer.append(str); 284 } 285 286 /** 287 * @see java.lang.Object#toString() 288 */ 289 public String toString() { 290 return charBuffer.toString(); 291 } 292 293 /** 294 * @see javax.servlet.jsp.tagext.BodyContent#clearBody() 295 */ 296 public void clearBody() { 297 charBuffer.clear(); 298 } 299 300 /** 301 * @see javax.servlet.jsp.tagext.BodyContent#getEnclosingWriter() 302 */ 303 public JspWriter getEnclosingWriter() { 304 return enclosingWriter; 305 } 306 307 /** 308 * returns the inner char buffer 309 * @return intern CharBuffer 310 */ 311 public CharBuffer getCharBuffer() { 312 return charBuffer; 313 } 314 315 /** 316 * sets the inner Charbuffer 317 * @param charBuffer 318 */ 319 public void setCharBuffer(CharBuffer charBuffer) { 320 this.charBuffer=charBuffer; 321 } 322 323 /** 324 * @see javax.servlet.jsp.JspWriter#getBufferSize() 325 */ 326 public int getBufferSize() { 327 return charBuffer.size(); 328 } 329 330 /** 331 * @see javax.servlet.jsp.JspWriter#isAutoFlush() 332 */ 333 public boolean isAutoFlush() { 334 return super.isAutoFlush(); 335 } 336 337 /** 338 * @see java.io.Writer#append(java.lang.CharSequence) 339 */ 340 public Writer append(CharSequence csq) throws IOException { 341 write(csq.toString()); 342 return this; 343 } 344 345 /** 346 * @see java.io.Writer#append(java.lang.CharSequence, int, int) 347 */ 348 public Writer append(CharSequence csq, int start, int end) throws IOException { 349 write(csq.subSequence(start, end).toString()); 350 return this; 351 } 352 353 /** 354 * @see java.io.Writer#append(char) 355 */ 356 public Writer append(char c) throws IOException { 357 write(c); 358 return this; 359 } 360 361 362 363 364 }