You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ki...@apache.org on 2017/11/21 09:48:03 UTC

svn commit: r1815895 - /commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/Field.java

Author: kinow
Date: Tue Nov 21 09:48:03 2017
New Revision: 1815895

URL: http://svn.apache.org/viewvc?rev=1815895&view=rev
Log:
VALIDATOR-434 synchronize when iterating a list created with Collections.synchronizedList, as per javadocs. Thanks to GitHub user @emopers!

This closes #4


Modified:
    commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/Field.java

Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/Field.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/Field.java?rev=1815895&r1=1815894&r2=1815895&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/Field.java (original)
+++ commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/Field.java Tue Nov 21 09:48:03 2017
@@ -907,22 +907,24 @@ public class Field implements Cloneable,
 
         for (int fieldNumber = 0; fieldNumber < numberOfFieldsToValidate; fieldNumber++) {
 
-            Iterator<String> dependencies = this.dependencyList.iterator();
             ValidatorResults results = new ValidatorResults();
-            while (dependencies.hasNext()) {
-                String depend = dependencies.next();
+            synchronized(dependencyList) {
+                Iterator<String> dependencies = this.dependencyList.iterator();
+                while (dependencies.hasNext()) {
+                    String depend = dependencies.next();
 
-                ValidatorAction action = actions.get(depend);
-                if (action == null) {
-                    this.handleMissingAction(depend);
-                }
+                    ValidatorAction action = actions.get(depend);
+                    if (action == null) {
+                        this.handleMissingAction(depend);
+                    }
 
-                boolean good =
-                    validateForRule(action, results, actions, params, fieldNumber);
+                    boolean good =
+                        validateForRule(action, results, actions, params, fieldNumber);
 
-                if (!good) {
-                    allResults.merge(results);
-                    return allResults;
+                    if (!good) {
+                        allResults.merge(results);
+                        return allResults;
+                    }
                 }
             }
             allResults.merge(results);