1package com.github.javaparser.ast.validator;
2
3import com.github.javaparser.ast.Node;
4
5import java.util.ArrayList;
6import java.util.Arrays;
7import java.util.List;
8
9/**
10 * A validator that will call a collection of validators.
11 */
12public class Validators implements Validator {
13    private final List<Validator> validators = new ArrayList<>();
14
15    public Validators(Validator... validators) {
16        this.validators.addAll(Arrays.asList(validators));
17    }
18
19    public List<Validator> getValidators() {
20        return validators;
21    }
22
23    public Validators remove(Validator validator) {
24        if (!validators.remove(validator)) {
25            throw new AssertionError("Trying to remove a validator that isn't there.");
26        }
27        return this;
28    }
29
30    public Validators replace(Validator oldValidator, Validator newValidator) {
31        remove(oldValidator);
32        add(newValidator);
33        return this;
34    }
35
36    public Validators add(Validator newValidator) {
37        validators.add(newValidator);
38        return this;
39    }
40
41    @Override
42    public void accept(Node node, ProblemReporter problemReporter) {
43        validators.forEach(v -> v.accept(node, problemReporter));
44    }
45}
46