aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-core/src/main/java/com/github/javaparser/ast/validator/SingleNodeTypeValidator.java
diff options
context:
space:
mode:
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.java24
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));
+ }
+}