org.apache.commons.jexl

## Class ExpressionFactory

- java.lang.Object
- - org.apache.commons.jexl.ExpressionFactory

    public class ExpressionFactory
    extends java.lang.Object

Creates Expression objects. To create a JEXL Expression object, pass valid JEXL syntax to the static createExpression() method:

     String jexl = "array[1]";
     Expression expression = ExpressionFactory.createExpression( jexl );

When an `Expression` object is created, the JEXL syntax is parsed and verified. If the supplied expression is neither an expression nor a reference, an exception is thrown from createException().

Since:
  1.0
Version:
  $Id: ExpressionFactory.java 429169 2006-08-06 11:36:29 -0700 (Sun, 06 Aug 2006) rahul $
Author:
  Geir Magnusson Jr.

### Field Summary

Fields
`protected static ExpressionFactory` `ef` ExpressionFactory is a singleton and this is the private instance fufilling that pattern.
`protected static org.apache.commons.logging.Log` `log` The Log to which all ExpressionFactory messages will be logged.
`protected static org.apache.commons.jexl.parser.Parser` `parser` The singleton ExpressionFactory also holds a single instance of `Parser`.

### Method Summary

Methods
`static Expression` `createExpression(java.lang.String expression)` Creates an Expression from a String containing valid JEXL syntax.
`protected Expression` `createNewExpression(java.lang.String expression)` Creates a new Expression based on the expression string.
`protected static ExpressionFactory` `getInstance()` Returns the single instance of ExpressionFactory.

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

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

### Field Detail

#### log

    protected static org.apache.commons.logging.Log log

The Log to which all ExpressionFactory messages will be logged.

#### parser

    protected static org.apache.commons.jexl.parser.Parser parser

The singleton ExpressionFactory also holds a single instance of `Parser`. When parsing expressions, ExpressionFactory synchronizes on Parser.

#### ef

    protected static ExpressionFactory ef

ExpressionFactory is a singleton and this is the private instance fufilling that pattern.

### Method Detail

#### getInstance

    protected static ExpressionFactory getInstance()

Returns the single instance of ExpressionFactory.

Returns:
  the instance of ExpressionFactory.

#### createExpression

    public static Expression createExpression(java.lang.String expression)
                                       throws java.lang.Exception

Creates an Expression from a String containing valid JEXL syntax. This method parses the expression which must contain either a reference or an expression.

Parameters:
  `expression` - A String containing valid JEXL syntax
Returns:
  An Expression object which can be evaluated with a JexlContext
Throws:
  `java.lang.Exception` - An exception can be thrown if there is a problem parsing this expression, or if the expression is neither an expression or a reference.

#### createNewExpression

    protected Expression createNewExpression(java.lang.String expression)
                                      throws java.lang.Exception

Creates a new Expression based on the expression string.

Parameters:
  `expression` - valid Jexl expression
Returns:
  Expression
Throws:
  `java.lang.Exception` - for a variety of reasons - mostly malformed Jexl expression