peer-at-code-parser-java/src/dev/peerat/parser/java/visitor/JavaClassBaseVisitor.java
2025-04-27 21:59:00 +02:00

42 lines
1 KiB
Java

package dev.peerat.parser.java.visitor;
import java.util.List;
import dev.peerat.parser.java.Annotation;
import dev.peerat.parser.java.ClassBase;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.visitor.Visitor;
import dev.peerat.parser.visitor.VisitorBag;
public class JavaClassBaseVisitor extends JavaVisitor<ClassBase>{
private Visitor<JavaElement> validator;
public JavaClassBaseVisitor(boolean propagate){
super(ClassBase.class, propagate);
}
public JavaClassBaseVisitor annotationFilter(Visitor<JavaElement> visitor){
this.validator = visitor;
return this;
}
@Override
public VisitorBag visitElement(ClassBase element){
VisitorBag bag = new VisitorBag();
if(this.validator != null){
List<Annotation> annotations = element.getAnnotations();
if(annotations == null) return bag;
for(Annotation annotation : annotations){
VisitorBag vbag = this.validator.visit(annotation);
bag.merge(vbag);
if(!vbag.isValidated()) return bag; //check fail TODO
}
}
bag.compute(element);
return bag;
}
}