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