blob: 6a788b47b7ff278fb1fdb29c689d8742c5c7e32a [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.CloneVisitor;
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;
import static com.github.javaparser.utils.CodeGenerationUtils.f;
public class CloneGenerator extends NodeGenerator {
public CloneGenerator(SourceRoot sourceRoot) {
super(sourceRoot);
}
@Override
protected void generateNode(BaseNodeMetaModel nodeMetaModel, CompilationUnit nodeCu, ClassOrInterfaceDeclaration nodeCoid) {
nodeCu.addImport(CloneVisitor.class);
MethodDeclaration cloneMethod = (MethodDeclaration) parseBodyDeclaration(f(
"@Override public %s clone() { return (%s) accept(new CloneVisitor(), null); }",
nodeMetaModel.getTypeNameGenerified(),
nodeMetaModel.getTypeNameGenerified()
));
addOrReplaceWhenSameSignature(nodeCoid, cloneMethod);
}
}