peer-at-code-parser-java/src/dev/peerat/parser/java/visitor/JavaClassBaseVisitor.java

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(){
super(ClassBase.class);
}
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;
}
}