org.apache.commons.jexl
Class ExpressionFactory

java.lang.Object
  extended by 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 18:36:29Z rahul $
Author:
Geir Magnusson Jr.

Field Summary
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 Parser parser
          The singleton ExpressionFactory also holds a single instance of Parser.
 
Constructor Summary
private ExpressionFactory()
          Private constructor, the single instance is always obtained with a call to getInstance().
 
Method Summary
private  java.lang.String cleanExpression(java.lang.String expression)
          Trims the expression and adds a semi-colon if missing.
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 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.

Constructor Detail

ExpressionFactory

private ExpressionFactory()
Private constructor, the single instance is always obtained with a call to getInstance().

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

cleanExpression

private java.lang.String cleanExpression(java.lang.String expression)
Trims the expression and adds a semi-colon if missing.

Parameters:
expression - to clean
Returns:
trimmed expression ending in a semi-colon