aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/CloneGenerator.java
diff options
context:
space:
mode:
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.java29
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);
+ }
+}