Class 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:
    s
    • Constructor Detail

      • 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 Detail

      • 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