1 16 17 package org.apache.taglibs.standard.lang.support; 18 19 import java.util.HashMap ; 20 21 import javax.servlet.jsp.JspException ; 22 import javax.servlet.jsp.PageContext ; 23 import javax.servlet.jsp.tagext.Tag ; 24 25 import org.apache.taglibs.standard.lang.jstl.Coercions; 26 import org.apache.taglibs.standard.lang.jstl.ELException; 27 import org.apache.taglibs.standard.lang.jstl.Logger; 28 29 40 public class ExpressionEvaluatorManager { 41 42 45 public static final String EVALUATOR_CLASS = 46 "org.apache.taglibs.standard.lang.jstl.Evaluator"; 47 50 53 private static HashMap nameMap = new HashMap (); 54 private static Logger logger = new Logger(System.out); 55 56 59 63 public static Object evaluate(String attributeName, 64 String expression, 65 Class expectedType, 66 Tag tag, 67 PageContext pageContext) 68 throws JspException 69 { 70 71 ExpressionEvaluator target = getEvaluatorByName(EVALUATOR_CLASS); 73 74 return (target.evaluate( 76 attributeName, expression, expectedType, tag, pageContext)); 77 } 78 79 83 public static Object evaluate(String attributeName, 84 String expression, 85 Class expectedType, 86 PageContext pageContext) 87 throws JspException 88 { 89 90 ExpressionEvaluator target = getEvaluatorByName(EVALUATOR_CLASS); 92 93 return (target.evaluate( 95 attributeName, expression, expectedType, null, pageContext)); 96 } 97 98 102 public static 103 ExpressionEvaluator getEvaluatorByName(String name) 104 throws JspException { 105 106 Object oEvaluator = nameMap.get(name); 107 if (oEvaluator != null) { 108 return ((ExpressionEvaluator) oEvaluator); 109 } 110 try { 111 synchronized (nameMap) { 112 oEvaluator = nameMap.get(name); 113 if (oEvaluator != null) { 114 return ((ExpressionEvaluator) oEvaluator); 115 } 116 ExpressionEvaluator e = (ExpressionEvaluator) 117 Class.forName(name).newInstance(); 118 nameMap.put(name, e); 119 return (e); 120 } 121 } catch (ClassCastException ex) { 122 throw new JspException ("invalid ExpressionEvaluator: " + 124 ex.toString(), ex); 125 } catch (ClassNotFoundException ex) { 126 throw new JspException ("couldn't find ExpressionEvaluator: " + 127 ex.toString(), ex); 128 } catch (IllegalAccessException ex) { 129 throw new JspException ("couldn't access ExpressionEvaluator: " + 130 ex.toString(), ex); 131 } catch (InstantiationException ex) { 132 throw new JspException ( 133 "couldn't instantiate ExpressionEvaluator: " + 134 ex.toString(), ex); 135 } 136 } 137 138 139 public static Object coerce(Object value, Class classe) 140 throws JspException { 141 try { 142 return Coercions.coerce(value, classe, logger); 144 } catch (ELException ex) { 145 throw new JspException (ex); 146 } 147 } 148 149 } 150 | Popular Tags |