package com.googlecode.totallylazy.validations; import com.googlecode.totallylazy.functions.Function1; import static com.googlecode.totallylazy.Callers.call; public class MapAndValidate<T, R> extends LogicalValidator<T> { private final Function1<? super T, ? extends R> map; private final Validator<? super R> validator; public MapAndValidate(Function1<? super T, ? extends R> map, Validator<? super R> validator) { this.map = map; this.validator = validator; } @Override public ValidationResult validate(T instance) { R value = call(map, instance); return validator.validate(value); } public static class constructors{ public static <T,R> MapAndValidate<T, R> mapAndValidate(Function1<? super T, ? extends R> map, Validator<? super R> validator) { return new MapAndValidate<T, R>(map, validator); } } }