Package org.zkoss.xel.util

## Class Evaluators

- java.lang.Object
- - org.zkoss.xel.util.Evaluators

-     public class Evaluators
      extends java.lang.Object

  It maps a name with an evaluator implementation.
  Since:
    3.0.0
  Author:
    tomyeh

- - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static java.lang.String` | `add​(java.lang.String name, java.lang.String evalcls)` | Adds an evaluator (a.k.a., the expression factory, `ExpressionFactory`).
    `static java.lang.String` | `add​(Element config)` | Adds an evaluator based on the XML declaration.
    `static boolean` | `exists​(java.lang.String name)` | Tests whether the evaluator (a.k.a., the expression factory) for the specified evaluator name exists.
    `static java.lang.Class<? extends ExpressionFactory>` | `getEvaluatorClass​(java.lang.String name)` | Returns the implementation for the specified evaluator name.
    `static java.lang.Object` | `resolveVariable​(VariableResolver resolver, java.lang.String name)` | Resolves the variable based on the specified resolver.
    `static java.lang.Object` | `resolveVariable​(XelContext ctx, java.lang.Object base, java.lang.Object name)` | Resolves the variable based on the specified context.
    `static java.lang.Object` | `resolveVariable​(XelContext ctx, VariableResolver resolver, java.lang.Object base, java.lang.Object name)` | Resolves the variable based on the the specified context and variable resolver.

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

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

- - ### Method Detail

    - #### getEvaluatorClass

          public static final java.lang.Class<? extends ExpressionFactory> getEvaluatorClass​(java.lang.String name)

      Returns the implementation for the specified evaluator name.
      Parameters:
        `name` - the name of the evaluator, say, MVEL.
      Throws:
        `SystemException` - if not found or the class not found.

    - #### exists

          public static final boolean exists​(java.lang.String name)

      Tests whether the evaluator (a.k.a., the expression factory) for the specified evaluator name exists.
      Parameters:
        `name` - the name of the evaluator, say, MVEL.

    - #### add

          public static final java.lang.String add​(java.lang.String name,
                                                   java.lang.String evalcls)

      Adds an evaluator (a.k.a., the expression factory, `ExpressionFactory`).
      Parameters:
        `name` - the name of the evaluator, say, MVEL. It is case insensitive.
        `evalcls` - the class name of the evaluator, a.k.a., the expression factory (`ExpressionFactory`).
      Returns:
        the previous class name, or null if not defined yet

    - #### add

          public static final java.lang.String add​(Element config)

      Adds an evaluator based on the XML declaration. The evaluator is also known as the expression factory, `ExpressionFactory`.

          <xel-config>
            <evaluator-name>SuperEL</evaluator-name><!-- case insensitive --!>
            <evaluator-class>my.MySuperEvaluator</evaluator-class>
          </xel-config>

      Parameters:
        `config` - the XML element called zscript-config
      Returns:
        the previous class, or null if not defined yet

    - #### resolveVariable

          public static java.lang.Object resolveVariable​(XelContext ctx,
                                                         VariableResolver resolver,
                                                         java.lang.Object base,
                                                         java.lang.Object name)

      Resolves the variable based on the the specified context and variable resolver.
      Since:
        5.0.0

    - #### resolveVariable

          public static java.lang.Object resolveVariable​(XelContext ctx,
                                                         java.lang.Object base,
                                                         java.lang.Object name)

      Resolves the variable based on the specified context. If the variable resolver (`XelContext.getVariableResolver()` is an instance of `VariableResolverX`, then `VariableResolverX.resolveVariable(XelContext,Object,Object)` will be invoked.
      Parameters:
        `ctx` - the context. If null, null will be returned.
      Since:
        5.0.0

    - #### resolveVariable

          public static java.lang.Object resolveVariable​(VariableResolver resolver,
                                                         java.lang.String name)

      Resolves the variable based on the specified resolver. If the resolver is an instance of `VariableResolverX`, then `VariableResolverX.resolveVariable(XelContext,Object,Object)` will be invoked.

      Notice that it is always better to invoke `resolveVariable(XelContext,Object,Object)` if `XelContext` is available.

      Parameters:
        `resolver` - the variable resolver. If null, null will be returned.
      Since:
        5.0.0