001 package org.springframework.binding.validation.support; 002 003 import org.springframework.binding.validation.RichValidator; 004 import org.springframework.binding.validation.ValidationResults; 005 import org.springframework.richclient.util.Assert; 006 007 /** 008 * This {@link RichValidator} allows combining several {@link RichValidator}s. 009 * Eg when using a validator for Hibernate (validation available on persistent 010 * object through annotations), you might want to add a RulesValidator for more 011 * specific rules or just to expand its features. 012 * 013 * @author Jan Hoskens 014 * 015 */ 016 public class CompositeRichValidator implements RichValidator { 017 018 private RichValidator[] validators; 019 020 /** 021 * Convenient creation of {@link CompositeRichValidator} using two 022 * validators. 023 */ 024 public CompositeRichValidator(RichValidator validator1, RichValidator validator2) { 025 this(new RichValidator[] { validator1, validator2 }); 026 } 027 028 /** 029 * Create a {@link CompositeRichValidator} that combines all the results 030 * from the given validators. 031 */ 032 public CompositeRichValidator(RichValidator[] validators) { 033 Assert.notNull(validators); 034 this.validators = validators; 035 } 036 037 public ValidationResults validate(Object object, String property) { 038 DefaultValidationResults results = new DefaultValidationResults(); 039 for (int i = 0; i < validators.length; ++i) { 040 results.addAllMessages(validators[i].validate(object, property)); 041 } 042 return results; 043 } 044 045 public ValidationResults validate(Object object) { 046 DefaultValidationResults results = new DefaultValidationResults(); 047 for (int i = 0; i < validators.length; ++i) { 048 results.addAllMessages(validators[i].validate(object)); 049 } 050 return results; 051 } 052 053 }