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

      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`

- - ### Field Summary

    - ### Fields inherited from class java.io.FilterReader

      `in`

    - ### Fields inherited from class java.io.Reader

      `lock`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `InterpolationFilterReader(Reader in, Map<?,Object> variables, String beginToken, String endToken)` Construct 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
    Modifier and Type | Method and Description
    --- | ---
    `int` | `read()` Returns the next character in the filtered stream, replacing tokens from the original stream.
    `int` | `read(char[] cbuf, int off, int len)` Reads characters into a portion of an array.
    `long` | `skip(long n)` Skips characters.

    - ### Methods inherited from class java.io.FilterReader

      `close, mark, markSupported, ready, reset`

    - ### Methods inherited from class java.io.Reader

      `read, read`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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

Copyright © 2015. All rights reserved.