blob: 9ab2bf32eb470885fc6f052844c41f04b4a15fa0 [file] [log] [blame]
package com.github.javaparser.generator.core.node;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.github.javaparser.ast.body.MethodDeclaration;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;
import com.github.javaparser.generator.NodeGenerator;
import com.github.javaparser.metamodel.BaseNodeMetaModel;
import com.github.javaparser.utils.SourceRoot;
import static com.github.javaparser.JavaParser.parseBodyDeclaration;
public class AcceptGenerator extends NodeGenerator {
private final MethodDeclaration genericAccept;
private final MethodDeclaration voidAccept;
public AcceptGenerator(SourceRoot sourceRoot) {
super(sourceRoot);
genericAccept = parseBodyDeclaration("@Override public <R, A> R accept(final GenericVisitor<R, A> v, final A arg) { return v.visit(this, arg); }").asMethodDeclaration();
voidAccept = parseBodyDeclaration("@Override public <A> void accept(final VoidVisitor<A> v, final A arg) { v.visit(this, arg); }").asMethodDeclaration();
}
@Override
protected void generateNode(BaseNodeMetaModel nodeMetaModel, CompilationUnit nodeCu, ClassOrInterfaceDeclaration nodeCoid) {
if(nodeMetaModel.isAbstract()){
return;
}
nodeCu.addImport(GenericVisitor.class);
nodeCu.addImport(VoidVisitor.class);
addOrReplaceWhenSameSignature(nodeCoid, genericAccept);
addOrReplaceWhenSameSignature(nodeCoid, voidAccept);
}
}