Package br.com.caelum.stella.validation

Source Code of br.com.caelum.stella.validation.AbstractValidator

package br.com.caelum.stella.validation;

import java.util.ArrayList;
import java.util.List;

import br.com.caelum.stella.MessageProducer;
import br.com.caelum.stella.SimpleMessageProducer;
import br.com.caelum.stella.ValidationMessage;

abstract class AbstractValidator<T> implements Validator<T> {
    private final MessageProducer messageProducer;
   
    public AbstractValidator() {
        this.messageProducer = new SimpleMessageProducer();
    }

    public AbstractValidator(MessageProducer messageProducer) {
        this.messageProducer = messageProducer;
    }

    protected List<ValidationMessage> generateValidationMessages(
            List<InvalidValue> invalidValues) {
        List<ValidationMessage> messages = new ArrayList<ValidationMessage>();
        for (InvalidValue invalidValue : invalidValues) {
            ValidationMessage message = messageProducer
                    .getMessage(invalidValue);
            messages.add(message);
        }
        return messages;
    }

    public List<ValidationMessage> invalidMessagesFor(T value) {
        List<InvalidValue> invalidValues = getInvalidValues(value);
        List<ValidationMessage> messages = generateValidationMessages(invalidValues);
        return messages;
    }

    public void assertValid(T value) {
        List<InvalidValue> errors = getInvalidValues(value);
        if (!errors.isEmpty()) {
            throw new InvalidStateException(generateValidationMessages(errors));
        }
    }

    protected abstract List<InvalidValue> getInvalidValues(T value);

}
TOP

Related Classes of br.com.caelum.stella.validation.AbstractValidator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.