Author: kkolinko
Date: Fri Apr 25 14:33:08 2014
New Revision: 1590040

URL: http://svn.apache.org/r1590040
Log:
Followup to r1590036 
1) simplify
2) add 'synchronized', as web applications may start in parallel

Modified:
    tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java

Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java?rev=1590040&r1=1590039&r2=1590040&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java Fri 
Apr 25 14:33:08 2014
@@ -85,38 +85,23 @@ public final class TldConfig  implements
      * Create (if necessary) and return a Digester configured to process the
      * tld.
      */
-    private static Digester createTldDigester(boolean validation,
+    private synchronized static Digester createTldDigester(boolean validation,
             boolean blockExternal) {
-        
-        Digester digester = null;
-        if (!validation && !blockExternal) {
-            if (tldDigesters[0] == null) {
-                tldDigesters[0] = DigesterFactory.newDigester(validation,
-                        true, new TldRuleSet(), blockExternal);
-                tldDigesters[0].getParser();
-            }
-            digester = tldDigesters[0];
-        } else if (!validation && blockExternal) {
-            if (tldDigesters[1] == null) {
-                tldDigesters[1] = DigesterFactory.newDigester(validation,
-                        true, new TldRuleSet(), blockExternal);
-                tldDigesters[1].getParser();
-            }
-            digester = tldDigesters[1];
-        } else if (validation && !blockExternal) {
-            if (tldDigesters[2] == null) {
-                tldDigesters[2] = DigesterFactory.newDigester(validation,
-                        true, new TldRuleSet(), blockExternal);
-                tldDigesters[2].getParser();
-            }
-            digester = tldDigesters[2];
-        } else {
-            if (tldDigesters[3] == null) {
-                tldDigesters[3] = DigesterFactory.newDigester(validation,
-                        true, new TldRuleSet(), blockExternal);
-                tldDigesters[3].getParser();
-            }
-            digester = tldDigesters[3];
+
+        Digester digester;
+        int cacheIndex = 0;
+        if (validation) {
+            cacheIndex += 1;
+        }
+        if (blockExternal) {
+            cacheIndex += 2;
+        }
+        digester = tldDigesters[cacheIndex];
+        if (digester == null) {
+            digester = DigesterFactory.newDigester(validation,
+                    true, new TldRuleSet(), blockExternal);
+            digester.getParser();
+            tldDigesters[cacheIndex] = digester;
         }
         return digester;
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to