package edu.ualberta.med.biobank.mvp.presenter.validation;
import com.pietschy.gwt.pectin.client.form.validation.ValidationResult;
import com.pietschy.gwt.pectin.client.form.validation.ValidationResultCollector;
import com.pietschy.gwt.pectin.client.form.validation.ValidationResultImpl;
import com.pietschy.gwt.pectin.client.form.validation.Validator;
import com.pietschy.gwt.pectin.client.form.validation.message.ValidationMessage;
/**
* Remembers the {@link ValidationResult} every time time
* {@link Validator#validate(Object, ValidationResultCollector)} is called.
*
* @author jferland
*
* @param <T>
*/
class CachedValidator<T> implements Validator<T> {
private final Validator<? super T> validator;
private ValidationResultImpl result = new ValidationResultImpl();
CachedValidator(Validator<? super T> validator) {
this.validator = validator;
}
public ValidationResultImpl getValidationResult() {
return result;
}
@Override
public void validate(T value, ValidationResultCollector results) {
ValidationResultImpl result = new ValidationResultImpl();
validator.validate(value, result);
for (ValidationMessage message : result.getMessages()) {
results.add(message);
}
this.result = result;
}
}