Lines 99-118
Link Here
|
99 |
* Gets an ExpressionEvaluator from the cache, or seeds the cache |
99 |
* Gets an ExpressionEvaluator from the cache, or seeds the cache |
100 |
* if we haven't seen a particular ExpressionEvaluator before. |
100 |
* if we haven't seen a particular ExpressionEvaluator before. |
101 |
*/ |
101 |
*/ |
102 |
public static synchronized |
102 |
public static ExpressionEvaluator getEvaluatorByName(String name) throws JspException |
103 |
ExpressionEvaluator getEvaluatorByName(String name) |
103 |
{ |
104 |
throws JspException { |
104 |
Object oEvaluator = nameMap.get(name); |
|
|
105 |
if (oEvaluator != null) |
106 |
return ((ExpressionEvaluator) oEvaluator); |
105 |
try { |
107 |
try { |
106 |
|
108 |
synchronized (nameMap) |
107 |
Object oEvaluator = nameMap.get(name); |
109 |
{ |
108 |
if (oEvaluator == null) { |
110 |
oEvaluator = nameMap.get(name); |
109 |
ExpressionEvaluator e = (ExpressionEvaluator) |
111 |
if (oEvaluator != null) |
110 |
Class.forName(name).newInstance(); |
112 |
return ((ExpressionEvaluator) oEvaluator); |
111 |
nameMap.put(name, e); |
113 |
ExpressionEvaluator e = (ExpressionEvaluator) Class.forName(name).newInstance(); |
112 |
return (e); |
114 |
nameMap.put(name, e); |
113 |
} else |
115 |
oEvaluator = e; |
|
|
116 |
} |
114 |
return ((ExpressionEvaluator) oEvaluator); |
117 |
return ((ExpressionEvaluator) oEvaluator); |
115 |
|
|
|
116 |
} catch (ClassCastException ex) { |
118 |
} catch (ClassCastException ex) { |
117 |
// just to display a better error message |
119 |
// just to display a better error message |
118 |
throw new JspException("invalid ExpressionEvaluator: " + |
120 |
throw new JspException("invalid ExpressionEvaluator: " + |