|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.clapper.util.text.AbstractVariableSubstituter
org.clapper.util.text.UnixShellVariableSubstituter
public class UnixShellVariableSubstituter
The UnixShellVariableSubstituter class implements the VariableSubstituter interface and provides an inline variable substitution capability using a simplified Unix Bourne (or GNU bash) shell variable syntax. This syntax recognizes the "$var", "${var}" and "${var?default} sequences as variable references. For example, given the string (variables in bold):
file:$user.home/profiles/$PLATFORM/${cfg?config}.txt
and the variable values:
user.home=/home/bmc PLATFORM=freebsd
a UnixShellVariableSubstituter 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 UnixShellVariableSubstituter
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.
WindowsCmdVariableSubstituter,
VariableDereferencer,
VariableSubstituter,
String| Field Summary | |
|---|---|
static java.lang.String |
VARIABLE_METACHARACTERS
List of metacharacters that are used to introduce a variable reference. |
| Constructor Summary | |
|---|---|
UnixShellVariableSubstituter()
Default constructor. |
|
| Method Summary | |
|---|---|
boolean |
getHonorEscapes()
Get the value of the flag that controls whether or not the substitute() method will honor backslash escapes within variable references. |
static boolean |
isVariableMetacharacter(char c)
Determine whether a character is one of the variable metacharacters (i.e., the characters that identify a variable reference). |
void |
setHonorEscapes(boolean enable)
Set the value of the flag that controls whether or not the substitute() method will honor backslash escapes within variable references. |
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. |
java.lang.String |
substitute(java.lang.String s,
VariableDereferencer deref,
VariableNameChecker nameChecker,
java.lang.Object context,
boolean allowEscapes)
Deprecated. As of version 2.3; please use setHonorEscapes(boolean) |
| Methods inherited from class org.clapper.util.text.AbstractVariableSubstituter |
|---|
getAbortOnSyntaxError, getAbortOnUndefinedVariable, legalVariableCharacter, setAbortOnSyntaxError, setAbortOnUndefinedVariable, substitute, substitute |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final java.lang.String VARIABLE_METACHARACTERS
| Constructor Detail |
|---|
public UnixShellVariableSubstituter()
| Method Detail |
|---|
public boolean getHonorEscapes()
setHonorEscapes(boolean)public void setHonorEscapes(boolean enable)
enable - true if backslash escapes should be honored,
false if not.getHonorEscapes()
public java.lang.String substitute(java.lang.String s,
VariableDereferencer deref,
VariableNameChecker nameChecker,
java.lang.Object context,
boolean allowEscapes)
throws VariableSyntaxException,
UndefinedVariableException,
VariableSubstitutionException
setHonorEscapes(boolean)
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,
underscores and periods. This syntax is sufficient to substitute
variables from System.properties, for instance.
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.
UndefinedVariableException - undefined variable, and
AbstractVariableSubstituter.getAbortOnUndefinedVariable()
returns true
VariableSyntaxException - syntax error, and
AbstractVariableSubstituter.getAbortOnSyntaxError()
returns true
VariableSubstitutionException - substitution errorAbstractVariableSubstituter.substitute(String,VariableDereferencer,Object),
VariableDereferencer.getVariableValue(String,Object)
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,
underscores and periods. This syntax is sufficient to substitute
variables from System.properties, for instance.
substitute in interface VariableSubstitutersubstitute in class AbstractVariableSubstituters - 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.
UndefinedVariableException - undefined variable, and
AbstractVariableSubstituter.getAbortOnUndefinedVariable()
returns true
VariableSyntaxException - syntax error, and
AbstractVariableSubstituter.getAbortOnSyntaxError()
returns true
VariableSubstitutionException - substitution errorAbstractVariableSubstituter.substitute(String,VariableDereferencer,Object),
VariableDereferencer.getVariableValue(String,Object)public static boolean isVariableMetacharacter(char c)
c - the character to test
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||