public class WindowsCmdVariableSubstituter extends AbstractVariableSubstituter
The WindowsCmdVariableSubstituter class implements the VariableSubstituter interface and provides an inline variable substitution capability using a syntax that's reminiscent of the Microsoft Windows cmd.exe command interpreter. This syntax assumes that variable references are surrounded by "%" characters. For example, given the string (variables in bold):
file:%user.home%/profiles/%PLATFORM%/config.txt
and the variable values:
user.home=/home/bmc PLATFORM=freebsd
a WindowsCmdVariableSubstituter will produce the result string (substitutions noted in bold):
Notes and Caveatsfile:/home/bmc/profiles/freebsd/config.txt
It's also possible to configure a WindowsCmdVariableSubstituter
to throw a UndefinedVariableException
, rather than substituting
a blank, if a variable is undefined and a default value is not specified.
See the AbstractVariableSubstituter.setAbortOnUndefinedVariable(boolean)
method.
UnixShellVariableSubstituter
,
VariableDereferencer
,
VariableSubstituter
,
String
Constructor and Description |
---|
WindowsCmdVariableSubstituter()
Default constructor.
|
Modifier and Type | Method and Description |
---|---|
java.lang.String |
substitute(java.lang.String s,
VariableDereferencer deref,
VariableNameChecker nameChecker,
java.lang.Object context)
Substitute all variable references in the supplied string, using
a Unix Bourne Shell-style variable syntax.
|
getAbortOnSyntaxError, getAbortOnUndefinedVariable, legalVariableCharacter, setAbortOnSyntaxError, setAbortOnUndefinedVariable, substitute, substitute
public WindowsCmdVariableSubstituter()
public java.lang.String substitute(java.lang.String s, VariableDereferencer deref, VariableNameChecker nameChecker, java.lang.Object context) throws VariableSyntaxException, UndefinedVariableException, VariableSubstitutionException
Substitute all variable references in the supplied string, using
a Unix Bourne Shell-style variable syntax. This method uses a
supplied VariableDereferencer object to resolve variable
values. Note that this method throws no exceptions. Syntax errors in
the variable references are silently ignored. Variables that have no
value are substituted as the empty string. If the
nameChecker parameter is not null, this method calls its
VariableNameChecker.legalVariableCharacter(char)
method to
determine whether a given character is a legal part of a variable
name. If nameChecker is null, then this method assumes
that variable names may consist solely of alphanumeric characters and
underscores.
substitute
in interface VariableSubstituter
substitute
in class AbstractVariableSubstituter
s
- the string containing possible variable referencesderef
- the VariableDereferencer object
to use to resolve the variables' values.nameChecker
- the VariableNameChecker object to be
used to check for legal variable name characters,
or nullcontext
- an optional context object, passed through
unmodified to the deref object's
VariableDereferencer.getVariableValue(java.lang.String, java.lang.Object)
method. This object can be anything at all (and,
in fact, may be null if you don't care.) It's
primarily useful for passing context information
from the caller to the
VariableDereferencer.VariableSubstitutionException
- substitution errorVariableSyntaxException
- syntax error, and
AbstractVariableSubstituter.getAbortOnSyntaxError()
returns trueUndefinedVariableException
- undefined variable, and
AbstractVariableSubstituter.getAbortOnUndefinedVariable()
returns trueAbstractVariableSubstituter.substitute(String,VariableDereferencer,Object)
,
VariableDereferencer.getVariableValue(String,Object)