Not all of the indexedListProperty collection elements are validated
--------------------------------------------------------------------

                 Key: VALIDATOR-245
                 URL: https://issues.apache.org/jira/browse/VALIDATOR-245
             Project: Commons Validator
          Issue Type: Improvement
          Components: Framework
    Affects Versions: 1.3.1 Release, 1.3.0 Release
            Reporter: Edmund Ward
            Priority: Minor


When the Field class method  "validate(Map params, Map actions)" validates an 
indexedListProperty it will return as soon as it finds an element in the 
collection that fails validation. If other fields in the collection are invalid 
too the user will only find out once they have corrected the first invalid 
field. If the method were to validate all the fields in the collection (which 
it will do anyway when all the elements are valid) the user would find all the 
invalid fields the first time the bean is validated.

My proposed modification involves simply commenting out a couple of lines in 
the Field class method "validate(Map params, Map actions)" 

eg.

 public ValidatorResults validate(Map params, Map actions)
     throws ValidatorException {
     
     if (this.getDepends() == null) {
         return new ValidatorResults();
     }

     ValidatorResults allResults = new ValidatorResults();

     Object bean = params.get(Validator.BEAN_PARAM);
     int numberOfFieldsToValidate =
        this.isIndexed() ? this.getIndexedPropertySize(bean) : 1;

     for (int fieldNumber = 0; fieldNumber < numberOfFieldsToValidate; 
fieldNumber++) {
            
         Iterator dependencies = this.dependencyList.iterator();
         ValidatorResults results = new ValidatorResults();
         while (dependencies.hasNext()) {
             String depend = (String) dependencies.next();

             ValidatorAction action = (ValidatorAction) actions.get(depend);
             if (action == null) {
                 this.handleMissingAction(depend);
             }

             boolean good =
                 validateForRule(action, results, actions, params, fieldNumber);

             if (!good) {
                 allResults.merge(results);
                 //return allResults;
             }
         }
         //allResults.merge(results);
     }
        
     return allResults;
 }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to