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 }