org.zkoss.bind.sys.BindEvaluatorX Maven / Gradle / Ivy
/* EvaluatorExt.java
Purpose:
Description:
History:
Jul 29, 2011 9:11:31 AM, Created by henrichen
Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.bind.sys;
import org.zkoss.bind.BindContext;
import org.zkoss.xel.ExpressionX;
import org.zkoss.xel.ValueReference;
import org.zkoss.xel.XelException;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.xel.Evaluator;
/**
* An extension of {@link Evaluator} to have more control to handle Binding via EL.
*
* With {@link BindEvaluatorX}, you are allow to parse a Method expression or set value into property
* resolved by the provided expression.
* @author henrichen
* @since 6.0.0
*/
public interface BindEvaluatorX extends Evaluator {
/**
* Prepares the expressionX.
*
* @param expression the expression to be prepared for being evaluated
* later.
* @param expectedType the expected type of the result of the evaluation
*/
public ExpressionX parseExpressionX(BindContext ctx, String expression, Class> expectedType) throws XelException;
/**
* Sets the specified value to the property resolved from the specified expression.
*
* @param ctx the scoped bind context of this operation
* @param comp the scoped component context of this operation
* @param expression the expression that will resolve a property
* @param value the value to be set into the resolved property
*/
public void setValue(BindContext ctx, Component comp, ExpressionX expression, Object value) throws XelException;
/**
* Sets the specified value to the property resolved from the specified expression.
*
* @param ctx the scoped bind context of this operation
* @param comp the scoped component context of this operation
* @param expression the expression that will resolve a property
*/
public Object getValue(BindContext ctx, Component comp, ExpressionX expression) throws XelException;
/**
* Returns the result type of the specified expression.
*
* @param ctx BindContext
* @param comp evaluation context
* @param expression the expression that will resolve a property
*/
public Class> getType(BindContext ctx, Component comp, ExpressionX expression) throws XelException;
/**
* Returns the result reference of the specified expression.
*
* @param ctx BindContext
* @param comp evaluation context
* @param expression the expression that will resolve a property
*/
public ValueReference getValueReference(BindContext ctx, Component comp, ExpressionX expression)
throws XelException;
/**
* Returns whether the specified expression a read only expression.
* @param ctx BindContext
* @param comp evaluation context
* @param expression the expression that will resolve a property
* @return whether the specified expression a read only expression.
* @throws XelException
*/
public boolean isReadOnly(BindContext ctx, Component comp, ExpressionX expression) throws XelException;
}