diff options
Diffstat (limited to 'javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/CloneGenerator.java')
-rw-r--r-- | javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/CloneGenerator.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/CloneGenerator.java b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/CloneGenerator.java new file mode 100644 index 000000000..6a788b47b --- /dev/null +++ b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/CloneGenerator.java @@ -0,0 +1,29 @@ +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); + } +} |