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);


Reply via email to