/* ELFactory.java
Purpose:
Description:
History:
Wed Jul 20 09:21:11 2011, Created by henrichen
Copyright (C) 2011 Potix Corporation. All Rights Reserved.
{{IS_RIGHT
}}IS_RIGHT
*/
package org.zkoss.xel.zel;
import org.zkoss.xel.Expression;
import org.zkoss.xel.ExpressionFactory;
import org.zkoss.xel.XelContext;
import org.zkoss.xel.XelException;
import org.zkoss.zel.ELContext;
/**
* An XEL ExpressionFactory implementation based on ZEL ExpressionFactory.
*
* @author henrichen
* @since 6.0.0
*/
public class ELFactory implements ExpressionFactory {
protected final org.zkoss.zel.ExpressionFactory _expf;
public ELFactory() {
_expf = newExpressionFactory();
}
//ExpressionFactory//
public boolean isSupported(int feature) {
return feature == FEATURE_FUNCTION;
}
public Expression parseExpression(XelContext xelc, String expression,
Class expectedType)
throws XelException {
return new ELXelExpression(
_expf.createValueExpression(
newELContext(xelc), expression, expectedType));
}
public Object evaluate(XelContext xelc, String expression,
Class expectedType)
throws XelException {
final ELContext ctx = newELContext(xelc);
return _expf.createValueExpression(
ctx, expression, expectedType).getValue(ctx);
}
protected ELContext newELContext(XelContext xelc) {
return new XelELContext(xelc);
}
/** Returns the EL expression factory.
* <p>Default: Use org.zkoss.zel.impl.ExpressionFactoryImpl.
* <p>You might override it to use a different implementation.
*/
protected org.zkoss.zel.ExpressionFactory newExpressionFactory() {
return new org.zkoss.zel.impl.ExpressionFactoryImpl();
}
}