Package com.bc.ceres.util
Class TemplateReader
- java.lang.Object
-
- java.io.Reader
-
- java.io.FilterReader
-
- com.bc.ceres.util.TemplateReader
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Readable
public class TemplateReader extends FilterReader
A template reader replaces any occurences of${key}
or$key
in the underlying stream with the string representations of any non-null value returned by a given resolver for that key.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
TemplateReader.Resolver
-
Field Summary
-
Fields inherited from class java.io.FilterReader
in
-
-
Constructor Summary
Constructors Constructor Description TemplateReader(Reader in, TemplateReader.Resolver resolver)
Constructs a template reader for the given reader stream and the given resolver.TemplateReader(Reader in, Map map)
Constructs a template reader for the given reader stream and a resolver given by aMap
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Close the stream.char
getKeyIndicator()
Gets the key indicator.void
mark(int readAheadLimit)
Mark the present position in the stream.boolean
markSupported()
Tell whether this stream supports the mark() operation.int
read()
Read a single character.int
read(char[] cbuf)
Read characters into an array.int
read(char[] cbuf, int off, int len)
Read characters into a portion of an array.int
read(CharBuffer target)
Attempts to read characters into the specified character buffer.String
readAll()
Reads all content.boolean
ready()
Tell whether this stream is ready to be read.void
reset()
Reset the stream.void
setKeyIndicator(char keyIndicator)
Sets the key indicator.long
skip(long n)
Skip characters.-
Methods inherited from class java.io.Reader
nullReader, transferTo
-
-
-
-
Constructor Detail
-
TemplateReader
public TemplateReader(Reader in, Map map)
Constructs a template reader for the given reader stream and a resolver given by aMap
.- Parameters:
in
- the underlying readermap
- the map to serve as resolver
-
TemplateReader
public TemplateReader(Reader in, TemplateReader.Resolver resolver)
Constructs a template reader for the given reader stream and the given resolver.- Parameters:
in
- the underlying readerresolver
- the resolver
-
-
Method Detail
-
getKeyIndicator
public char getKeyIndicator()
Gets the key indicator.- Returns:
- the key indicator, defaults to '$'.
-
setKeyIndicator
public void setKeyIndicator(char keyIndicator)
Sets the key indicator.- Parameters:
keyIndicator
- the key indicator, must not be a digit, letter or whitespace.
-
readAll
public String readAll() throws IOException
Reads all content.- Returns:
- the content
- Throws:
IOException
- if an I/O error occurs
-
read
public int read() throws IOException
Read a single character.- Overrides:
read
in classFilterReader
- Throws:
IOException
- If an I/O error occurs
-
read
public int read(char[] cbuf) throws IOException
Read characters into an array. This method will block until some input is available, an I/O error occurs, or the end of the stream is reached.- Overrides:
read
in classReader
- Parameters:
cbuf
- Destination buffer- Returns:
- The number of characters read, or -1 if the end of the stream has been reached
- Throws:
IOException
- If an I/O error occurs
-
read
public int read(char[] cbuf, int off, int len) throws IOException
Read characters into a portion of an array.- Overrides:
read
in classFilterReader
- Throws:
IOException
- If an I/O error occurs
-
read
public int read(CharBuffer target) throws IOException
Attempts to read characters into the specified character buffer. The buffer is used as a repository of characters as-is: the only changes made are the results of a put operation. No flipping or rewinding of the buffer is performed.- Specified by:
read
in interfaceReadable
- Overrides:
read
in classReader
- Parameters:
target
- the buffer to read characters into- Returns:
- The number of characters added to the buffer, or -1 if this source of characters is at its end
- Throws:
IOException
- if an I/O error occursNullPointerException
- if target is nullReadOnlyBufferException
- if target is a read only buffer
-
skip
public long skip(long n) throws IOException
Skip characters.- Overrides:
skip
in classFilterReader
- Throws:
IOException
- If an I/O error occurs
-
ready
public boolean ready() throws IOException
Tell whether this stream is ready to be read.- Overrides:
ready
in classFilterReader
- Throws:
IOException
- If an I/O error occurs
-
markSupported
public boolean markSupported()
Tell whether this stream supports the mark() operation.- Overrides:
markSupported
in classFilterReader
-
mark
public void mark(int readAheadLimit) throws IOException
Mark the present position in the stream.- Overrides:
mark
in classFilterReader
- Throws:
IOException
- If an I/O error occurs
-
reset
public void reset() throws IOException
Reset the stream.- Overrides:
reset
in classFilterReader
- Throws:
IOException
- If an I/O error occurs
-
close
public void close() throws IOException
Close the stream.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classFilterReader
- Throws:
IOException
- If an I/O error occurs
-
-