Package org.codehaus.plexus.util
Class InterpolationFilterReader
java.lang.Object
java.io.Reader
java.io.FilterReader
org.codehaus.plexus.util.InterpolationFilterReader
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Readable
A FilterReader which interpolates keyword values into a character stream. Keywords are recognized when enclosed
between starting and ending delimiter strings. The keywords themselves, and their values, are fetched from a Map
supplied to the constructor.
When a possible keyword token is recognized (by detecting the starting and ending token delimiters):
- if the enclosed string is found in the keyword Map, the delimiters and the keyword are effectively replaced by the keyword's value;
- if the enclosed string is found in the keyword Map, but its value has zero length, then the token (delimiters and keyword) is effectively removed from the character stream;
- if the enclosed string is not found in the keyword Map, then no substitution is made; the token text is passed through unaltered.
- See Also:
-
Field Summary
Fields inherited from class java.io.FilterReader
in
-
Constructor Summary
ConstructorDescriptionConstruct a Reader to interpolate values enclosed between the given delimiter tokens.InterpolationFilterReader
(Reader in, Map<String, Object> variables) Construct a Reader using the default interpolation delimiter tokens "${" and "}". -
Method Summary
Methods inherited from class java.io.FilterReader
close, mark, markSupported, ready, reset
-
Constructor Details
-
InterpolationFilterReader
public InterpolationFilterReader(Reader in, Map<?, Object> variables, String beginToken, String endToken) Construct a Reader to interpolate values enclosed between the given delimiter tokens.- Parameters:
in
- a Reader to be wrapped for interpolation.variables
- name/value pairs to be interpolated into the character stream.beginToken
- an interpolation target begins with this.endToken
- an interpolation target ends with this.
-
InterpolationFilterReader
-
-
Method Details
-
skip
Skips characters. This method will block until some characters are available, an I/O error occurs, or the end of the stream is reached.- Overrides:
skip
in classFilterReader
- Parameters:
n
- The number of characters to skip- Returns:
- the number of characters actually skipped
- Throws:
IllegalArgumentException
- Ifn
is negative.IOException
- If an I/O error occurs
-
read
Reads characters into a portion of 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 classFilterReader
- Parameters:
cbuf
- Destination buffer to write characters to. Must not benull
.off
- Offset at which to start storing characters.len
- Maximum number of characters to read.- 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
Returns the next character in the filtered stream, replacing tokens from the original stream.- Overrides:
read
in classFilterReader
- Returns:
- the next character in the resulting stream, or -1 if the end of the resulting stream has been reached
- Throws:
IOException
- if the underlying stream throws an IOException during reading
-