Class InterpolationFilterReader

java.lang.Object
java.io.Reader
java.io.FilterReader
org.codehaus.plexus.util.InterpolationFilterReader
All Implemented Interfaces:
Closeable, AutoCloseable, Readable

public class InterpolationFilterReader extends FilterReader
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:
  • 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

      public InterpolationFilterReader(Reader in, Map<String,Object> variables)
      Construct a Reader using the default interpolation delimiter tokens "${" and "}".
      Parameters:
      in - a Reader to be wrapped for interpolation.
      variables - name/value pairs to be interpolated into the character stream.
  • Method Details

    • skip

      public long skip(long n) throws IOException
      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 class FilterReader
      Parameters:
      n - The number of characters to skip
      Returns:
      the number of characters actually skipped
      Throws:
      IllegalArgumentException - If n is negative.
      IOException - If an I/O error occurs
    • read

      public int read(char[] cbuf, int off, int len) throws IOException
      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 class FilterReader
      Parameters:
      cbuf - Destination buffer to write characters to. Must not be null.
      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

      public int read() throws IOException
      Returns the next character in the filtered stream, replacing tokens from the original stream.
      Overrides:
      read in class FilterReader
      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