Package org.apache.commons.configuration2.interpol

## 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

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `ExprLookup.Variable` | The key and corresponding object that will be made available to the JexlContext for use in expressions.
    `static class` | `ExprLookup.Variables` | List wrapper used to allow the Variables list to be created as beans in DefaultConfigurationBuilder.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ExprLookup()` | The default constructor.
    `ExprLookup​(ExprLookup.Variables list)` | Constructor for use by applications.
    `ExprLookup​(ExprLookup.Variables list, String prefix, String suffix)` | Constructor for use by applications.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `ConfigurationInterpolator` | `getInterpolator()` | Gets the `ConfigurationInterpolator` used by this object.
    `ConfigurationLogger` | `getLogger()` | Gets the logger used by this object.
    `ExprLookup.Variables` | `getVariables()` | Gets the list of Variables that are accessible within expressions.
    `String` | `lookup​(String var)` | Evaluates the expression.
    `void` | `setInterpolator​(ConfigurationInterpolator interpolator)` | Sets the `ConfigurationInterpolator` to be used by this object.
    `void` | `setLogger​(ConfigurationLogger logger)` | Sets the logger to be used by this object.
    `void` | `setVariablePrefixMatcher​(String prefix)` | Set the prefix to use to identify subordinate expressions.
    `void` | `setVariables​(ExprLookup.Variables list)` | Add the Variables that will be accessible within expressions.
    `void` | `setVariableSuffixMatcher​(String suffix)` | Set the suffix to use to identify subordinate expressions.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### 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 Detail

    - #### setVariablePrefixMatcher

          public void setVariablePrefixMatcher​(String prefix)

      Set 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.

    - #### setVariableSuffixMatcher

          public void setVariableSuffixMatcher​(String suffix)

      Set 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.

    - #### setVariables

          public void setVariables​(ExprLookup.Variables list)

      Add the Variables that will be accessible within expressions.
      Parameters:
        `list` - The list of Variables.

    - #### 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.

    - #### getLogger

          public ConfigurationLogger getLogger()

      Gets the logger used by this object.
      Returns:
        the `Log`
      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

    - #### getInterpolator

          public ConfigurationInterpolator getInterpolator()

      Gets the `ConfigurationInterpolator` used by this object.
      Returns:
        the `ConfigurationInterpolator`
      Since:
        2.0

    - #### 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

    - #### 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.