You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2010/10/23 21:59:30 UTC

svn commit: r1026672 - /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java

Author: lukaszlenart
Date: Sat Oct 23 19:59:30 2010
New Revision: 1026672

URL: http://svn.apache.org/viewvc?rev=1026672&view=rev
Log:
Solved WW-3461 - reduced lock scope

Modified:
    struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java

Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java?rev=1026672&r1=1026671&r2=1026672&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java Sat Oct 23 19:59:30 2010
@@ -61,23 +61,25 @@ public class AnnotationActionValidatorMa
         this.validatorFileParser = parser;
     }
 
-    public synchronized List<Validator> getValidators(Class clazz, String context) {
+    public List<Validator> getValidators(Class clazz, String context) {
         return getValidators(clazz, context, null);
     }
 
-    public synchronized List<Validator> getValidators(Class clazz, String context, String method) {
+    public List<Validator> getValidators(Class clazz, String context, String method) {
         final String validatorKey = buildValidatorKey(clazz);
-
-        if (validatorCache.containsKey(validatorKey)) {
-            if (FileManager.isReloadingConfigs()) {
-                validatorCache.put(validatorKey, buildValidatorConfigs(clazz, context, true, null));
+        final List<ValidatorConfig> cfgs;
+        synchronized (validatorCache) {
+            if (validatorCache.containsKey(validatorKey)) {
+                if (FileManager.isReloadingConfigs()) {
+                    validatorCache.put(validatorKey, buildValidatorConfigs(clazz, context, true, null));
+                }
+            } else {
+                validatorCache.put(validatorKey, buildValidatorConfigs(clazz, context, false, null));
             }
-        } else {
-            validatorCache.put(validatorKey, buildValidatorConfigs(clazz, context, false, null));
-        }
 
-        // get the set of validator configs
-        List<ValidatorConfig> cfgs = validatorCache.get(validatorKey);
+            // get the set of validator configs
+            cfgs = new ArrayList<ValidatorConfig>(validatorCache.get(validatorKey));
+        }
 
         ValueStack stack = ActionContext.getContext().getValueStack();
 
@@ -87,8 +89,8 @@ public class AnnotationActionValidatorMa
             if (method == null || method.equals(cfg.getParams().get("methodName"))) {
                 Validator validator = validatorFactory.getValidator(
                         new ValidatorConfig.Builder(cfg)
-                            .removeParam("methodName")
-                            .build());
+                                .removeParam("methodName")
+                                .build());
                 validator.setValidatorType(cfg.getType());
                 validator.setValueStack(stack);
                 validators.add(validator);