Class ExprLookup

java.lang.Object
org.apache.commons.configuration2.interpol.ExprLookup
All Implemented Interfaces:
Lookup

public class ExprLookup extends Object implements 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
  • Field Details

    • CLASS

      private static final String CLASS
      Prefix to identify a Java Class object
      See Also:
    • DEFAULT_PREFIX

      private static final String DEFAULT_PREFIX
      The default prefix for subordinate lookup expressions
      See Also:
    • DEFAULT_SUFFIX

      private static final String DEFAULT_SUFFIX
      The default suffix for subordinate lookup expressions
      See Also:
    • interpolator

      private ConfigurationInterpolator interpolator
      The ConfigurationInterpolator used by this object.
    • substitutor

      private org.apache.commons.text.StringSubstitutor substitutor
      The StringSubstitutor for performing replace operations.
    • logger

      private ConfigurationLogger logger
      The logger used by this instance.
    • engine

      private final org.apache.commons.jexl3.JexlEngine engine
      The engine.
    • variables

      private ExprLookup.Variables variables
      The variables maintained by this object.
    • prefixMatcher

      private String prefixMatcher
      The String to use to start subordinate lookup expressions
    • suffixMatcher

      private String 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

      public ExprLookup(ExprLookup.Variables list)
      Constructor for use by applications.
      Parameters:
      list - The list of objects to be accessible in expressions.
    • ExprLookup

      public ExprLookup(ExprLookup.Variables list, String prefix, String suffix)
      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 new JexlContext and initializes it with the variables managed by this Lookup object.
      Returns:
      the newly created context
    • getInterpolator

      public ConfigurationInterpolator getInterpolator()
      Gets the ConfigurationInterpolator used by this object.
      Returns:
      the ConfigurationInterpolator
      Since:
      2.0
    • getLogger

      public ConfigurationLogger getLogger()
      Gets the logger used by this object.
      Returns:
      the Log
      Since:
      2.0
    • getVariables

      public ExprLookup.Variables 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

      private void installSubstitutor(ConfigurationInterpolator ip)
      Creates a StringSubstitutor object which uses the passed in ConfigurationInterpolator as lookup object.
      Parameters:
      ip - the ConfigurationInterpolator to be used
    • lookup

      public String lookup(String var)
      Evaluates the expression.
      Specified by:
      lookup in interface Lookup
      Parameters:
      var - The expression.
      Returns:
      The String result of the expression.
    • setInterpolator

      public void setInterpolator(ConfigurationInterpolator interpolator)
      Sets the ConfigurationInterpolator to be used by this object.
      Parameters:
      interpolator - the ConfigurationInterpolator (may be null)
      Since:
      2.0
    • setLogger

      public void setLogger(ConfigurationLogger logger)
      Sets the logger to be used by this object. If no logger is passed in, no log output is generated.
      Parameters:
      logger - the Log
      Since:
      2.0
    • setVariablePrefixMatcher

      public void setVariablePrefixMatcher(String prefix)
      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

      public void setVariables(ExprLookup.Variables list)
      Add the Variables that will be accessible within expressions.
      Parameters:
      list - The list of Variables.
    • setVariableSuffixMatcher

      public void setVariableSuffixMatcher(String suffix)
      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.