Author: lukaszlenart
Date: Sun Mar  6 13:24:17 2011
New Revision: 1078465

URL: http://svn.apache.org/viewvc?rev=1078465&view=rev
Log:
Solves WW-3461 - additional synchronize block is not needed as the 
validatorCache is already synchronized map

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=1078465&r1=1078464&r2=1078465&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
 Sun Mar  6 13:24:17 2011
@@ -28,7 +28,14 @@ import com.opensymphony.xwork2.validator
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
 
 /**
  * AnnotationActionValidatorManager is the entry point into XWork's 
annotations-based validator framework.
@@ -68,19 +75,18 @@ public class AnnotationActionValidatorMa
     public List<Validator> getValidators(Class clazz, String context, String 
method) {
         final String validatorKey = buildValidatorKey(clazz);
         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));
-            }
 
-            // get the set of validator configs
-            cfgs = new 
ArrayList<ValidatorConfig>(validatorCache.get(validatorKey));
+        if (validatorCache.containsKey(validatorKey)) {
+            if (FileManager.isReloadingConfigs()) {
+                validatorCache.put(validatorKey, buildValidatorConfigs(clazz, 
context, true, null));
+            }
+        } else {
+            validatorCache.put(validatorKey, buildValidatorConfigs(clazz, 
context, false, null));
         }
 
+        // get the set of validator configs
+        cfgs = new 
ArrayList<ValidatorConfig>(validatorCache.get(validatorKey));
+
         ValueStack stack = ActionContext.getContext().getValueStack();
 
         // create clean instances of the validators for the caller's use
@@ -117,7 +123,7 @@ public class AnnotationActionValidatorMa
         List<Validator> validators = getValidators(object.getClass(), context, 
method);
         Set<String> shortcircuitedFields = null;
 
-        for (final Validator validator: validators) {
+        for (final Validator validator : validators) {
             try {
                 validator.setValidatorContext(validatorContext);
 
@@ -141,8 +147,7 @@ public class AnnotationActionValidatorMa
                     }
                 }
 
-                if (validator instanceof ShortCircuitableValidator && 
((ShortCircuitableValidator) validator).isShortCircuit())
-                {
+                if (validator instanceof ShortCircuitableValidator && 
((ShortCircuitableValidator) validator).isShortCircuit()) {
                     // get number of existing errors
                     List<String> errs = null;
 
@@ -197,7 +202,7 @@ public class AnnotationActionValidatorMa
 
                 validator.validate(object);
             } finally {
-                validator.setValidatorContext( null );
+                validator.setValidatorContext(null);
             }
 
         }
@@ -206,7 +211,7 @@ public class AnnotationActionValidatorMa
     /**
      * Builds a key for validators - used when caching validators.
      *
-     * @param clazz   the action.
+     * @param clazz the action.
      * @return a validator key which is the class name plus context.
      */
     protected static String buildValidatorKey(Class clazz) {
@@ -224,7 +229,7 @@ public class AnnotationActionValidatorMa
         return sb.toString();
     }
 
-    private  List<ValidatorConfig> buildAliasValidatorConfigs(Class aClass, 
String context, boolean checkFile) {
+    private List<ValidatorConfig> buildAliasValidatorConfigs(Class aClass, 
String context, boolean checkFile) {
         String fileName = aClass.getName().replace('.', '/') + "-" + 
context.replace('/', '-') + VALIDATION_CONFIG_SUFFIX;
 
         return loadFile(fileName, aClass, checkFile);
@@ -371,11 +376,10 @@ public class AnnotationActionValidatorMa
     }
 
 
-
     /**
      * An {@link com.opensymphony.xwork2.validator.ValidatorContext} wrapper 
that
      * returns the full field name
-     * {@link 
com.opensymphony.xwork2.validator.AbstractActionValidatorManager.InternalValidatorContextWrapper#getFullFieldName(String)}
+     * {@link 
AnnotationActionValidatorManager.InternalValidatorContextWrapper#getFullFieldName(String)}
      * by consulting it's parent if its an {@link 
com.opensymphony.xwork2.validator.validators.VisitorFieldValidator.AppendingValidatorContext}.
      * <p/>
      * Eg. if we have nested Visitor
@@ -396,6 +400,7 @@ public class AnnotationActionValidatorMa
          * Get the full field name by consulting the parent, so that when we 
are using nested visitors (
          * visitor nested inside visitor etc.) we still get the full field 
name including its parents.
          * See XW-571 for more details.
+         *
          * @param field
          * @return String
          */
@@ -408,5 +413,5 @@ public class AnnotationActionValidatorMa
             return validatorContext.getFullFieldName(field);
         }
 
-    }    
+    }
 }


Reply via email to