/**
* Licensed under the Artistic License; you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://displaytag.sourceforge.net/license.html
*
* THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
package org.displaytag.tags.el;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import org.apache.commons.lang.BooleanUtils;
import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;
/**
* Utility class to help with the evaluation of JSTL Expression Language. It mainly encapsulates the calls to
* ExpressionEvaluationManager to ease the use of this class.
* @author Tim McCune
* @author Fabrizio Giustina
* @version $Revision: 956 $ ($Author: fgiust $)
*/
public class ExpressionEvaluator
{
/**
* page context.
*/
private PageContext pageContext;
/**
* tag.
*/
private Tag tag;
/**
* Creates a new ExpressionEvaluator for the given tag and pagecontext.
* @param sourceTag tag where the expression has to be evaluated
* @param context the page context
*/
public ExpressionEvaluator(Tag sourceTag, PageContext context)
{
this.tag = sourceTag;
this.pageContext = context;
}
/**
* Evaluate expression in attrValue.
* @param attrName attribute name
* @param attrValue attribute value
* @return evaluate expression of attrValue, null if attrValue is null.
* @param returnClass class the returned object is instance of
* @throws JspException exception thrown by ExpressionEvaluatorManager
*/
public Object eval(String attrName, String attrValue, Class returnClass) throws JspException
{
return attrValue != null ? ExpressionEvaluatorManager.evaluate(
attrName,
attrValue,
returnClass,
this.tag,
this.pageContext) : null;
}
/**
* Evaluate expression in attrValueas as a String.
* @param attrName attribute name
* @param attrValue attribute value
* @return evaluate expression of attrValue, null if attrValue is null.
* @throws JspException exception thrown by ExpressionEvaluatorManager
*/
public String evalString(String attrName, String attrValue) throws JspException
{
return (String) eval(attrName, attrValue, String.class);
}
/**
* Evaluate expression in attrValueas as a boolean.
* @param attrName attribute name
* @param attrValue attribute value
* @return evaluate expression of attrValue, false if attrValue is null.
* @throws JspException exception thrown by ExpressionEvaluatorManager
*/
public boolean evalBoolean(String attrName, String attrValue) throws JspException
{
return BooleanUtils.toBoolean((Boolean) eval(attrName, attrValue, Boolean.class));
}
/**
* Evaluate expression in attrValueas as a long.
* @param attrName attribute name
* @param attrValue attribute value
* @return evaluate expression of attrValue, -1 if attrValue is null.
* @throws JspException exception thrown by ExpressionEvaluatorManager
*/
public long evalLong(String attrName, String attrValue) throws JspException
{
Long rtn = (Long) eval(attrName, attrValue, Long.class);
if (rtn != null)
{
return rtn.longValue();
}
return -1L;
}
/**
* Evaluate expression in attrValueas as a int.
* @param attrName attribute name
* @param attrValue attribute value
* @return evaluate expression of attrValue, -1 if attrValue is null.
* @throws JspException exception thrown by ExpressionEvaluatorManager
*/
public int evalInt(String attrName, String attrValue) throws JspException
{
Integer rtn = (Integer) eval(attrName, attrValue, Integer.class);
if (rtn != null)
{
return rtn.intValue();
}
return -1;
}
}