42 lines
1 KiB
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(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;
|
|
}
|
|
|
|
}
|