You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-dev@jakarta.apache.org by ho...@apache.org on 2004/06/12 02:39:35 UTC
cvs commit: jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/support ExpressionEvaluatorManager.java
horwat 2004/06/11 17:39:34
Modified: standard/src/org/apache/taglibs/standard/lang/support Tag:
STANDARD_1_0_BRANCH ExpressionEvaluatorManager.java
Log:
Bugzilla #25967
Removed synchronization on getEvaluatorByName() method. Now synchronizing on nameMap and allowing reads to occur without blocking. Should be a performance improvement.
Ported to JSTL 1.0.x.
Submitted by Tony Perkins & Richard Kraft
Revision Changes Path
No revision
No revision
1.6.2.3 +12 -7 jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/support/ExpressionEvaluatorManager.java
Index: ExpressionEvaluatorManager.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/support/ExpressionEvaluatorManager.java,v
retrieving revision 1.6.2.2
retrieving revision 1.6.2.3
diff -u -r1.6.2.2 -r1.6.2.3
--- ExpressionEvaluatorManager.java 28 Feb 2004 06:08:10 -0000 1.6.2.2
+++ ExpressionEvaluatorManager.java 12 Jun 2004 00:39:34 -0000 1.6.2.3
@@ -99,20 +99,25 @@
* Gets an ExpressionEvaluator from the cache, or seeds the cache
* if we haven't seen a particular ExpressionEvaluator before.
*/
- public static synchronized
+ public static
ExpressionEvaluator getEvaluatorByName(String name)
throws JspException {
- try {
- Object oEvaluator = nameMap.get(name);
- if (oEvaluator == null) {
+ 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);
- } else
- return ((ExpressionEvaluator) oEvaluator);
-
+ }
} catch (ClassCastException ex) {
// just to display a better error message
throw new JspException("invalid ExpressionEvaluator: " +
---------------------------------------------------------------------
To unsubscribe, e-mail: taglibs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: taglibs-dev-help@jakarta.apache.org