Class MultiDelimiterInterpolatorFilterReader
- java.lang.Object
-
- java.io.Reader
-
- java.io.FilterReader
-
- org.codehaus.plexus.interpolation.multi.MultiDelimiterInterpolatorFilterReader
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,java.lang.Readable
public class MultiDelimiterInterpolatorFilterReader extends java.io.FilterReader
A FilterReader implementation, that works with Interpolator interface instead of it's own interpolation implementation. This implementation is heavily based on org.codehaus.plexus.util.InterpolationFilterReader.
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
beginToken
private DelimiterSpecification
currentSpec
static java.lang.String
DEFAULT_BEGIN_TOKEN
Default begin token.static java.lang.String
DEFAULT_END_TOKEN
Default end token.private java.util.LinkedHashSet<DelimiterSpecification>
delimiters
private java.lang.String
endToken
private java.lang.String
escapeString
private boolean
interpolateWithPrefixPattern
true by default to preserve backward compprivate Interpolator
interpolator
Interpolator used to interpolateprivate java.lang.String
originalBeginToken
private boolean
preserveEscapeString
if true escapeString will be preserved \{foo} -> \{foo}private int
previousIndex
Index into previous dataprivate RecursionInterceptor
recursionInterceptor
private java.lang.String
replaceData
replacement text from a tokenprivate int
replaceIndex
Index into replacement dataprivate boolean
useEscape
-
Constructor Summary
Constructors Constructor Description MultiDelimiterInterpolatorFilterReader(java.io.Reader in, Interpolator interpolator)
this constructor use default begin token ${ and default end token }MultiDelimiterInterpolatorFilterReader(java.io.Reader in, Interpolator interpolator, RecursionInterceptor ri)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MultiDelimiterInterpolatorFilterReader
addDelimiterSpec(java.lang.String delimiterSpec)
java.lang.String
getEscapeString()
RecursionInterceptor
getRecursionInterceptor()
boolean
isInterpolateWithPrefixPattern()
boolean
isPreserveEscapeString()
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.boolean
removeDelimiterSpec(java.lang.String delimiterSpec)
private boolean
reselectDelimiterSpec(int ch)
MultiDelimiterInterpolatorFilterReader
setDelimiterSpecs(java.util.LinkedHashSet<java.lang.String> specs)
void
setEscapeString(java.lang.String escapeString)
void
setInterpolateWithPrefixPattern(boolean interpolateWithPrefixPattern)
void
setPreserveEscapeString(boolean preserveEscapeString)
MultiDelimiterInterpolatorFilterReader
setRecursionInterceptor(RecursionInterceptor recursionInterceptor)
long
skip(long n)
Skips characters.
-
-
-
Field Detail
-
interpolator
private Interpolator interpolator
Interpolator used to interpolate
-
recursionInterceptor
private RecursionInterceptor recursionInterceptor
- Since:
- 1.12
-
replaceData
private java.lang.String replaceData
replacement text from a token
-
replaceIndex
private int replaceIndex
Index into replacement data
-
previousIndex
private int previousIndex
Index into previous data
-
DEFAULT_BEGIN_TOKEN
public static final java.lang.String DEFAULT_BEGIN_TOKEN
Default begin token.- See Also:
- Constant Field Values
-
DEFAULT_END_TOKEN
public static final java.lang.String DEFAULT_END_TOKEN
Default end token.- See Also:
- Constant Field Values
-
interpolateWithPrefixPattern
private boolean interpolateWithPrefixPattern
true by default to preserve backward comp
-
escapeString
private java.lang.String escapeString
-
useEscape
private boolean useEscape
-
preserveEscapeString
private boolean preserveEscapeString
if true escapeString will be preserved \{foo} -> \{foo}
-
delimiters
private java.util.LinkedHashSet<DelimiterSpecification> delimiters
-
currentSpec
private DelimiterSpecification currentSpec
-
beginToken
private java.lang.String beginToken
-
originalBeginToken
private java.lang.String originalBeginToken
-
endToken
private java.lang.String endToken
-
-
Constructor Detail
-
MultiDelimiterInterpolatorFilterReader
public MultiDelimiterInterpolatorFilterReader(java.io.Reader in, Interpolator interpolator)
this constructor use default begin token ${ and default end token }- Parameters:
in
- reader to useinterpolator
- interpolator instance to use
-
MultiDelimiterInterpolatorFilterReader
public MultiDelimiterInterpolatorFilterReader(java.io.Reader in, Interpolator interpolator, RecursionInterceptor ri)
- Parameters:
in
- reader to useinterpolator
- interpolator instance to useri
- TheRecursionInterceptor
to use to prevent recursive expressions.- Since:
- 1.12
-
-
Method Detail
-
addDelimiterSpec
public MultiDelimiterInterpolatorFilterReader addDelimiterSpec(java.lang.String delimiterSpec)
-
removeDelimiterSpec
public boolean removeDelimiterSpec(java.lang.String delimiterSpec)
-
setDelimiterSpecs
public MultiDelimiterInterpolatorFilterReader setDelimiterSpecs(java.util.LinkedHashSet<java.lang.String> specs)
-
skip
public long skip(long n) throws java.io.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 classjava.io.FilterReader
- Parameters:
n
- The number of characters to skip- Returns:
- the number of characters actually skipped
- Throws:
java.lang.IllegalArgumentException
- Ifn
is negative.java.io.IOException
- If an I/O error occurs
-
read
public int read(char[] cbuf, int off, int len) throws java.io.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 classjava.io.FilterReader
- 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:
java.io.IOException
- If an I/O error occurs
-
read
public int read() throws java.io.IOException
Returns the next character in the filtered stream, replacing tokens from the original stream.- Overrides:
read
in classjava.io.FilterReader
- Returns:
- the next character in the resulting stream, or -1 if the end of the resulting stream has been reached
- Throws:
java.io.IOException
- if the underlying stream throws an IOException during reading
-
reselectDelimiterSpec
private boolean reselectDelimiterSpec(int ch)
-
isInterpolateWithPrefixPattern
public boolean isInterpolateWithPrefixPattern()
-
setInterpolateWithPrefixPattern
public void setInterpolateWithPrefixPattern(boolean interpolateWithPrefixPattern)
-
getEscapeString
public java.lang.String getEscapeString()
-
setEscapeString
public void setEscapeString(java.lang.String escapeString)
-
isPreserveEscapeString
public boolean isPreserveEscapeString()
-
setPreserveEscapeString
public void setPreserveEscapeString(boolean preserveEscapeString)
-
getRecursionInterceptor
public RecursionInterceptor getRecursionInterceptor()
-
setRecursionInterceptor
public MultiDelimiterInterpolatorFilterReader setRecursionInterceptor(RecursionInterceptor recursionInterceptor)
-
-