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{ private Visitor validator; public JavaClassBaseVisitor(boolean propagate){ super(ClassBase.class, propagate); } public JavaClassBaseVisitor annotationFilter(Visitor visitor){ this.validator = visitor; return this; } @Override public VisitorBag visitElement(ClassBase element){ VisitorBag bag = new VisitorBag(); if(this.validator != null){ List 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; } }