Class ExprLookup
java.lang.Object
org.apache.commons.configuration2.interpol.ExprLookup
- All Implemented Interfaces:
Lookup
Lookup that allows expressions to be evaluated.
ExprLookup.Variables vars = new ExprLookup.Variables();
vars.add(new ExprLookup.Variable("String", org.apache.commons.lang.StringUtils.class));
vars.add(new ExprLookup.Variable("Util", new Utility("Hello")));
vars.add(new ExprLookup.Variable("System", "Class:java.lang.System"));
XMLConfiguration config = new XMLConfiguration(TEST_FILE);
config.setLogger(log);
ExprLookup lookup = new ExprLookup(vars);
lookup.setConfiguration(config);
String str = lookup.lookup("'$[element] ' + String.trimToEmpty('$[space.description]')");
In the example above TEST_FILE contains xml that looks like:
<configuration>
<element>value</element>
<space xml:space="preserve">
<description xml:space="default"> Some text </description>
</space>
</configuration>
The result will be "value Some text".
This lookup uses Apache Commons Jexl and requires that the dependency be added to any projects which use this.- Since:
- 1.7
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classThe key and corresponding object that will be made available to the JexlContext for use in expressions.static classList wrapper used to allow the Variables list to be created as beans in DefaultConfigurationBuilder. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final StringPrefix to identify a Java Class objectprivate static final StringThe default prefix for subordinate lookup expressionsprivate static final StringThe default suffix for subordinate lookup expressionsprivate final org.apache.commons.jexl3.JexlEngineThe engine.private ConfigurationInterpolatorThe ConfigurationInterpolator used by this object.private ConfigurationLoggerThe logger used by this instance.private StringThe String to use to start subordinate lookup expressionsprivate org.apache.commons.text.StringSubstitutorThe StringSubstitutor for performing replace operations.private StringThe String to use to terminate subordinate lookup expressionsprivate ExprLookup.VariablesThe variables maintained by this object. -
Constructor Summary
ConstructorsConstructorDescriptionThe default constructor.Constructor for use by applications.ExprLookup(ExprLookup.Variables list, String prefix, String suffix) Constructor for use by applications. -
Method Summary
Modifier and TypeMethodDescriptionprivate org.apache.commons.jexl3.JexlContextCreates a newJexlContextand initializes it with the variables managed by this Lookup object.Gets theConfigurationInterpolatorused by this object.Gets the logger used by this object.Gets the list of Variables that are accessible within expressions.private voidinitializeContext(org.apache.commons.jexl3.JexlContext ctx) Initializes the specified context with the variables managed by this Lookup object.private voidCreates aStringSubstitutorobject which uses the passed inConfigurationInterpolatoras lookup object.Evaluates the expression.voidsetInterpolator(ConfigurationInterpolator interpolator) Sets theConfigurationInterpolatorto be used by this object.voidsetLogger(ConfigurationLogger logger) Sets the logger to be used by this object.voidsetVariablePrefixMatcher(String prefix) Sets the prefix to use to identify subordinate expressions.voidAdd the Variables that will be accessible within expressions.voidsetVariableSuffixMatcher(String suffix) Sets the suffix to use to identify subordinate expressions.
-
Field Details
-
CLASS
Prefix to identify a Java Class object- See Also:
-
DEFAULT_PREFIX
The default prefix for subordinate lookup expressions- See Also:
-
DEFAULT_SUFFIX
The default suffix for subordinate lookup expressions- See Also:
-
interpolator
The ConfigurationInterpolator used by this object. -
substitutor
private org.apache.commons.text.StringSubstitutor substitutorThe StringSubstitutor for performing replace operations. -
logger
The logger used by this instance. -
engine
private final org.apache.commons.jexl3.JexlEngine engineThe engine. -
variables
The variables maintained by this object. -
prefixMatcher
The String to use to start subordinate lookup expressions -
suffixMatcher
The String to use to terminate subordinate lookup expressions
-
-
Constructor Details
-
ExprLookup
public ExprLookup()The default constructor. Will get used when the Lookup is constructed via configuration. -
ExprLookup
Constructor for use by applications.- Parameters:
list- The list of objects to be accessible in expressions.
-
ExprLookup
Constructor for use by applications.- Parameters:
list- The list of objects to be accessible in expressions.prefix- The prefix to use for subordinate lookups.suffix- The suffix to use for subordinate lookups.
-
-
Method Details
-
createContext
private org.apache.commons.jexl3.JexlContext createContext()Creates a newJexlContextand initializes it with the variables managed by this Lookup object.- Returns:
- the newly created context
-
getInterpolator
Gets theConfigurationInterpolatorused by this object.- Returns:
- the
ConfigurationInterpolator - Since:
- 2.0
-
getLogger
Gets the logger used by this object.- Returns:
- the
Log - Since:
- 2.0
-
getVariables
Gets the list of Variables that are accessible within expressions. This method returns a copy of the variables managed by this lookup; so modifying this object has no impact on this lookup.- Returns:
- the List of Variables that are accessible within expressions.
-
initializeContext
private void initializeContext(org.apache.commons.jexl3.JexlContext ctx) Initializes the specified context with the variables managed by this Lookup object.- Parameters:
ctx- the context to be initialized
-
installSubstitutor
Creates aStringSubstitutorobject which uses the passed inConfigurationInterpolatoras lookup object.- Parameters:
ip- theConfigurationInterpolatorto be used
-
lookup
Evaluates the expression. -
setInterpolator
Sets theConfigurationInterpolatorto be used by this object.- Parameters:
interpolator- theConfigurationInterpolator(may be null)- Since:
- 2.0
-
setLogger
Sets the logger to be used by this object. If no logger is passed in, no log output is generated.- Parameters:
logger- theLog- Since:
- 2.0
-
setVariablePrefixMatcher
Sets the prefix to use to identify subordinate expressions. This cannot be the same as the prefix used for the primary expression.- Parameters:
prefix- The String identifying the beginning of the expression.
-
setVariables
Add the Variables that will be accessible within expressions.- Parameters:
list- The list of Variables.
-
setVariableSuffixMatcher
Sets the suffix to use to identify subordinate expressions. This cannot be the same as the suffix used for the primary expression.- Parameters:
suffix- The String identifying the end of the expression.
-