diff options
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/validator/SingleNodeTypeValidator.java')
-rw-r--r-- | javaparser-core/src/main/java/com/github/javaparser/ast/validator/SingleNodeTypeValidator.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/SingleNodeTypeValidator.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/SingleNodeTypeValidator.java new file mode 100644 index 000000000..169849489 --- /dev/null +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/SingleNodeTypeValidator.java @@ -0,0 +1,24 @@ +package com.github.javaparser.ast.validator; + +import com.github.javaparser.ast.Node; + +/** + * Runs a validator on all nodes of a certain type. + */ +public class SingleNodeTypeValidator<N extends Node> implements Validator { + private final Class<N> type; + private final TypedValidator<N> validator; + + public SingleNodeTypeValidator(Class<N> type, TypedValidator<N> validator) { + this.type = type; + this.validator = validator; + } + + @Override + public void accept(Node node, ProblemReporter problemReporter) { + if (type.isInstance(node)) { + validator.accept(type.cast(node), problemReporter); + } + node.findAll(type).forEach(n -> validator.accept(n, problemReporter)); + } +} |