package com.googlecode.totallylazy.validations;
import static com.googlecode.totallylazy.Sequences.sequence;
import static com.googlecode.totallylazy.validations.Validator.functions.validateWith;
public class EveryItemValidator<T> extends LogicalValidator<Iterable<? extends T>> {
private final Validator<? super T> itemValidator;
public EveryItemValidator(Validator<? super T> itemValidator) {this.itemValidator = itemValidator;}
@Override
public ValidationResult validate(Iterable<? extends T> instance) {
return sequence(instance).reduce(validateWith(itemValidator));
}
public static class constructors{
public static <T> EveryItemValidator<T> everyItem(Validator<? super T> itemValidator, Class<T> type){
return everyItem(itemValidator);
}
public static <T> EveryItemValidator<T> everyItem(Validator<? super T> itemValidator){
return new EveryItemValidator<T>(itemValidator);
}
}
}