freemarker.ext.util
Class TemplateBufferedWriter

java.lang.Object
  extended by java.io.Writer
      extended by freemarker.ext.util.TemplateBufferedWriter
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable, java.lang.Appendable

public final class TemplateBufferedWriter
extends java.io.Writer

Implements a simple, non-synchronized character buffer as a Writer. Since FM-Classic's write methods are all synchronous, we can get away with unsynchronized calls. Sychronization of the underlying Writer is left to the wrapped Writer itself.

Since:
1.8
Version:
$Id: TemplateBufferedWriter.java 1101 2013-04-01 04:17:32Z run2000 $
Author:
Nicholas Cull

Field Summary
 
Fields inherited from class java.io.Writer
lock
 
Constructor Summary
TemplateBufferedWriter(java.io.Writer parentWriter)
          Constructor that takes a Writer as a destination for the buffered output.
TemplateBufferedWriter(java.io.Writer parentWriter, int bufferSize)
          Constructor that takes a Writer as a destination for the buffered output, along with a size of the buffer to be used.
 
Method Summary
 void close()
          Close the stream, flushing it first.
 void flush()
          Flush the stream.
 void flushBuffer()
          Flush the buffer.
 void write(char[] cbuf)
          Write an array of characters.
 void write(char[] cbuf, int off, int len)
          Write a portion of an array of characters.
 void write(int c)
          Write a single character.
 void write(java.lang.String str)
          Write a string.
 void write(java.lang.String str, int off, int len)
          Write a portion of a string.
 
Methods inherited from class java.io.Writer
append, append, append
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TemplateBufferedWriter

public TemplateBufferedWriter(java.io.Writer parentWriter)
Constructor that takes a Writer as a destination for the buffered output.

Parameters:
parentWriter - the Writer that the buffered content should be written to

TemplateBufferedWriter

public TemplateBufferedWriter(java.io.Writer parentWriter,
                              int bufferSize)
Constructor that takes a Writer as a destination for the buffered output, along with a size of the buffer to be used.

Parameters:
parentWriter - the Writer to which the buffered content should be written
bufferSize - the size of the buffer
Method Detail

write

public void write(char[] cbuf,
                  int off,
                  int len)
           throws java.io.IOException
Write a portion of an array of characters.

Specified by:
write in class java.io.Writer
Parameters:
cbuf - Array of characters
off - Offset from which to start writing characters
len - Number of characters to write
Throws:
java.io.IOException - If an I/O error occurs

write

public void write(int c)
           throws java.io.IOException
Write a single character. The character to be written is contained in the 16 low-order bits of the given integer value; the 16 high-order bits are ignored.

Overrides:
write in class java.io.Writer
Parameters:
c - int specifying a character to be written.
Throws:
java.io.IOException - If an I/O error occurs

write

public void write(char[] cbuf)
           throws java.io.IOException
Write an array of characters.

Overrides:
write in class java.io.Writer
Parameters:
cbuf - Array of characters to be written
Throws:
java.io.IOException - If an I/O error occurs

write

public void write(java.lang.String str)
           throws java.io.IOException
Write a string.

Overrides:
write in class java.io.Writer
Parameters:
str - String to be written
Throws:
java.io.IOException - If an I/O error occurs

write

public void write(java.lang.String str,
                  int off,
                  int len)
           throws java.io.IOException
Write a portion of a string.

Overrides:
write in class java.io.Writer
Parameters:
str - A String
off - Offset from which to start writing characters
len - Number of characters to write
Throws:
java.io.IOException - If an I/O error occurs

flush

public void flush()
           throws java.io.IOException
Flush the stream. If the stream has saved any characters from the various write() methods in a buffer, write them immediately to their intended destination. Then, if that destination is another character or byte stream, flush it. Thus one flush() invocation will flush all the buffers in a chain of Writers and OutputStreams.

Specified by:
flush in interface java.io.Flushable
Specified by:
flush in class java.io.Writer
Throws:
java.io.IOException - If an I/O error occurs

flushBuffer

public void flushBuffer()
                 throws java.io.IOException
Flush the buffer. If the buffer has saved any characters from the various write() methods, write them immediately to their intended destination.

Throws:
java.io.IOException - If an I/O error occurs

close

public void close()
           throws java.io.IOException
Close the stream, flushing it first. Once a stream has been closed, further write() or flush() invocations will cause an IOException to be thrown. Closing a previously-closed stream, however, has no effect.

Specified by:
close in interface java.io.Closeable
Specified by:
close in class java.io.Writer
Throws:
java.io.IOException - If an I/O error occurs