FileDocCategorySizeDatePackage
ExpressionEvaluatorManager.javaAPI DocGlassfish v2 API6628Sat May 05 19:17:50 BST 2007org.apache.taglibs.standard.lang.support

ExpressionEvaluatorManager

public class ExpressionEvaluatorManager extends Object

A conduit to the JSTL EL. Based on...

An implementation of the ExpressionEvaluatorManager called for by the JSTL rev1 draft. This class is responsible for delegating a request for expression evaluating to the particular, "active" ExpressionEvaluator for the given point in the PageContext object passed in.

author
Shawn Bayern

Fields Summary
public static final String
EVALUATOR_CLASS
private static HashMap
nameMap
private static org.apache.taglibs.standard.lang.jstl.Logger
logger
Constructors Summary
Methods Summary
public static java.lang.Objectcoerce(java.lang.Object value, java.lang.Class classe)
Performs a type conversion according to the EL's rules.

	try {
	    // just delegate the call
	    return Coercions.coerce(value, classe, logger);
	} catch (ELException ex) {
	    throw new JspException(ex);
	}
    
public static java.lang.Objectevaluate(java.lang.String attributeName, java.lang.String expression, java.lang.Class expectedType, javax.servlet.jsp.tagext.Tag tag, javax.servlet.jsp.PageContext pageContext)
Invokes the evaluate() method on the "active" ExpressionEvaluator for the given pageContext.


    //*********************************************************************
    // Public static methods

                       
         
                                    
                                    
                                    
                                    
            
    

        // the evaluator we'll use
        ExpressionEvaluator target = getEvaluatorByName(EVALUATOR_CLASS);

        // delegate the call
        return (target.evaluate(
            attributeName, expression, expectedType, tag, pageContext));
    
public static java.lang.Objectevaluate(java.lang.String attributeName, java.lang.String expression, java.lang.Class expectedType, javax.servlet.jsp.PageContext pageContext)
Invokes the evaluate() method on the "active" ExpressionEvaluator for the given pageContext.


        // the evaluator we'll use
        ExpressionEvaluator target = getEvaluatorByName(EVALUATOR_CLASS);

        // delegate the call
        return (target.evaluate(
            attributeName, expression, expectedType, null, pageContext));
    
public static ExpressionEvaluatorgetEvaluatorByName(java.lang.String name)
Gets an ExpressionEvaluator from the cache, or seeds the cache if we haven't seen a particular ExpressionEvaluator before.


        Object oEvaluator = nameMap.get(name);
        if (oEvaluator != null) {
            return ((ExpressionEvaluator) oEvaluator);
        }
        try {
            synchronized (nameMap) {
                oEvaluator = nameMap.get(name);
                if (oEvaluator != null) {
                    return ((ExpressionEvaluator) oEvaluator);
                }
                ExpressionEvaluator e = (ExpressionEvaluator)
                    Class.forName(name).newInstance();
                nameMap.put(name, e);
                return (e);
            }
        } catch (ClassCastException ex) {
            // just to display a better error message
            throw new JspException("invalid ExpressionEvaluator: " +
                ex.toString(), ex);
        } catch (ClassNotFoundException ex) {
            throw new JspException("couldn't find ExpressionEvaluator: " +
                ex.toString(), ex);
        } catch (IllegalAccessException ex) {
            throw new JspException("couldn't access ExpressionEvaluator: " +
                ex.toString(), ex);
        } catch (InstantiationException ex) {
            throw new JspException(
                "couldn't instantiate ExpressionEvaluator: " +
                ex.toString(), ex);
        }