package com.googlecode.totallylazy.validations; import com.googlecode.totallylazy.predicates.Predicate; import static com.googlecode.totallylazy.validations.ValidationResult.constructors.pass; public class ConditionalValidator<T> extends LogicalValidator<T>{ private final Predicate<? super T> predicate; private final Validator<? super T> validator; private ConditionalValidator(Validator<? super T> validator, Predicate<? super T> predicate) { this.validator = validator; this.predicate = predicate; } @Override public ValidationResult validate(T instance) { if(predicate.matches(instance)) return validator.validate(instance); return pass(); } public static class constructors{ public static <T> ConditionalValidator<T> conditionalValidator(Validator<? super T> validator, Predicate<? super T> predicate){ return new ConditionalValidator<T>(validator, predicate); } } }