package br.com.caelum.stella.validation; import java.util.List; import br.com.caelum.stella.ValidationMessage; /** * <p> * Interface que os validadores do Stella devem implementar.</p> * <p> * {@link Validator#invalidMessagesFor(Object)} devolve os problemas de validação * associado ao objeto.</p> * <p> * {@link Validator#assertValid(Object)} valida o objeto e lança uma exception no caso * inválido. * * </p> * * @author Fabio Kung * @author Leonardo Bessa * @param <T> * tipo de objeto a ser validado */ public interface Validator<T> { /** * @param object * objeto que se deseja validar * @throws InvalidStateException se o parametro não for válido, * contendo a lista de ValidationMessage */ void assertValid(T object); /** * @param object Objeto a ser validado. * @return as mensagens de de validação relativas ao paremetro object */ List<ValidationMessage> invalidMessagesFor(T object); /** * @param object objeto que se deseja avaliar * @return <code>true</code> se o objeto é elegível para a validação por * este validador, e <code>false</code> caso contrário */ boolean isEligible(T object); /** * @return um objeto aleatório válido de acordo com as regras de validação deste validador */ T generateRandomValid(); }