
dev.ditsche.validator.validation.ValidationArray Maven / Gradle / Ivy
package dev.ditsche.validator.validation;
import dev.ditsche.validator.error.ErrorBag;
import dev.ditsche.validator.error.ValidationException;
import dev.ditsche.validator.rule.Rule;
import dev.ditsche.validator.rule.RuleResult;
import dev.ditsche.validator.rule.ruleset.RequiredRule;
import lombok.Getter;
import java.util.List;
/**
* @author Tobias Dittmann
*/
public class ValidationArray implements Validatable {
@Getter
private String field;
private boolean optional;
@Getter
private List rules;
@Getter
private List childRules;
@Getter
private List validatables;
public ValidationArray(String field, List rules, List childRules, List validatables) {
this(field, rules, childRules, validatables, false);
}
public ValidationArray(String field, List rules, List childRules, List validatables, boolean optional) {
this.field = field;
this.rules = rules;
this.childRules = childRules;
this.validatables = validatables;
this.optional = optional;
}
@Override
public ValidationResult validate(String parent, Object object, boolean abortEarly) {
ErrorBag errorBag = new ErrorBag();
boolean changed = false;
if(optional && !(new RequiredRule().test(object).isPassed()))
return new ValidationResult(errorBag, object, false);
for(Rule rule : rules) {
RuleResult ruleResult = rule.test(object);
if(!ruleResult.isPassed()) {
errorBag.add(parent + field, rule.getType(), rule.message(field));
if(abortEarly)
throw new ValidationException(errorBag);
} else if(ruleResult.isChanged()) {
changed = true;
object = ruleResult.getValue();
}
}
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy