aboutsummaryrefslogtreecommitdiff
path: root/javaparser-core-generators/src/main/java
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2017-04-22 21:53:53 +0200
committerDanny van Bruggen <hexagonaal@gmail.com>2017-04-22 21:59:00 +0200
commit14a86a28ac5207c3d0e913937d7ca3a42f3c2d07 (patch)
tree1c1bb337b91166c85514d39f7cc23b6779f1928c /javaparser-core-generators/src/main/java
parent0a4143a06b24d2b1997ebf27834b51c31e04f13a (diff)
parent25b4a1a76a2c5530266376e20b08a9775610240c (diff)
downloadjavaparser-14a86a28ac5207c3d0e913937d7ca3a42f3c2d07.tar.gz
Import useful code from token-constructor branch
Diffstat (limited to 'javaparser-core-generators/src/main/java')
-rw-r--r--javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/CoreGenerator.java34
-rw-r--r--javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/MainConstructorGenerator.java54
-rw-r--r--javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/RemoveMethodGenerator.java18
3 files changed, 80 insertions, 26 deletions
diff --git a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/CoreGenerator.java b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/CoreGenerator.java
index cf0b15e12..ceec8fc45 100644
--- a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/CoreGenerator.java
+++ b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/CoreGenerator.java
@@ -1,6 +1,5 @@
package com.github.javaparser.generator.core;
-import com.github.javaparser.JavaParser;
import com.github.javaparser.generator.core.node.*;
import com.github.javaparser.generator.core.visitor.*;
import com.github.javaparser.utils.SourceRoot;
@@ -25,21 +24,22 @@ public class CoreGenerator {
}
private void run(SourceRoot sourceRoot) throws Exception {
- new GenericListVisitorAdapterGenerator(sourceRoot).generate();
- new GenericVisitorAdapterGenerator(sourceRoot).generate();
- new EqualsVisitorGenerator(sourceRoot).generate();
- new VoidVisitorAdapterGenerator(sourceRoot).generate();
- new VoidVisitorGenerator(sourceRoot).generate();
- new GenericVisitorGenerator(sourceRoot).generate();
- new HashCodeVisitorGenerator(sourceRoot).generate();
- new CloneVisitorGenerator(sourceRoot).generate();
- new TreeStructureVisitorGenerator(sourceRoot).generate();
- new ModifierVisitorGenerator(sourceRoot).generate();
-
- new GetNodeListsGenerator(sourceRoot).generate();
- new PropertyGenerator(sourceRoot).generate();
- new RemoveMethodGenerator(sourceRoot).generate();
- new CloneGenerator(sourceRoot).generate();
- new GetMetaModelGenerator(sourceRoot).generate();
+// new GenericListVisitorAdapterGenerator(sourceRoot).generate();
+// new GenericVisitorAdapterGenerator(sourceRoot).generate();
+// new EqualsVisitorGenerator(sourceRoot).generate();
+// new VoidVisitorAdapterGenerator(sourceRoot).generate();
+// new VoidVisitorGenerator(sourceRoot).generate();
+// new GenericVisitorGenerator(sourceRoot).generate();
+// new HashCodeVisitorGenerator(sourceRoot).generate();
+// new CloneVisitorGenerator(sourceRoot).generate();
+// new TreeStructureVisitorGenerator(sourceRoot).generate();
+// new ModifierVisitorGenerator(sourceRoot).generate();
+//
+// new GetNodeListsGenerator(sourceRoot).generate();
+// new PropertyGenerator(sourceRoot).generate();
+// new RemoveMethodGenerator(sourceRoot).generate();
+// new CloneGenerator(sourceRoot).generate();
+// new GetMetaModelGenerator(sourceRoot).generate();
+ new MainConstructorGenerator(sourceRoot).generate();
}
}
diff --git a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/MainConstructorGenerator.java b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/MainConstructorGenerator.java
new file mode 100644
index 000000000..0c2f8c844
--- /dev/null
+++ b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/MainConstructorGenerator.java
@@ -0,0 +1,54 @@
+package com.github.javaparser.generator.core.node;
+
+import com.github.javaparser.Range;
+import com.github.javaparser.ast.CompilationUnit;
+import com.github.javaparser.ast.Node;
+import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
+import com.github.javaparser.ast.body.ConstructorDeclaration;
+import com.github.javaparser.ast.stmt.BlockStmt;
+import com.github.javaparser.generator.NodeGenerator;
+import com.github.javaparser.metamodel.BaseNodeMetaModel;
+import com.github.javaparser.metamodel.PropertyMetaModel;
+import com.github.javaparser.utils.SeparatedItemStringBuilder;
+import com.github.javaparser.utils.SourceRoot;
+
+import static com.github.javaparser.JavaParser.parseExplicitConstructorInvocationStmt;
+import static com.github.javaparser.JavaParser.parseStatement;
+import static com.github.javaparser.utils.CodeGenerationUtils.f;
+
+public class MainConstructorGenerator extends NodeGenerator {
+ public MainConstructorGenerator(SourceRoot sourceRoot) {
+ super(sourceRoot);
+ }
+
+ @Override
+ protected void generateNode(BaseNodeMetaModel nodeMetaModel, CompilationUnit nodeCu, ClassOrInterfaceDeclaration nodeCoid) {
+ if (nodeMetaModel.is(Node.class)) {
+ return;
+ }
+ ConstructorDeclaration constructor = new ConstructorDeclaration()
+ .setPublic(true)
+ .setName(nodeCoid.getNameAsString())
+ .addParameter(Range.class, "range");
+
+
+ BlockStmt body = constructor.getBody();
+
+ SeparatedItemStringBuilder superCall = new SeparatedItemStringBuilder("super(", ", ", ");");
+ superCall.append("range");
+ for (PropertyMetaModel parameter : nodeMetaModel.getConstructorParameters()) {
+ constructor.addParameter(parameter.getTypeNameForSetter(), parameter.getName());
+ if (nodeMetaModel.getDeclaredPropertyMetaModels().contains(parameter)) {
+ body.addStatement(parseStatement(f("%s(%s);", parameter.getSetterMethodName(), parameter.getName())));
+ } else {
+ superCall.append(parameter.getName());
+ }
+ }
+
+ body.getStatements().add(0, parseExplicitConstructorInvocationStmt(superCall.toString()));
+
+ ConstructorDeclaration existingConstructorDeclaration = nodeCoid.getConstructors().get(nodeCoid.getConstructors().size() - 1);
+ nodeCoid.getMembers().replace(existingConstructorDeclaration, constructor);
+ nodeCu.addImport(Range.class);
+ }
+}
diff --git a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/RemoveMethodGenerator.java b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/RemoveMethodGenerator.java
index 907428a2a..edc358b43 100644
--- a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/RemoveMethodGenerator.java
+++ b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/RemoveMethodGenerator.java
@@ -71,18 +71,18 @@ public class RemoveMethodGenerator extends NodeGenerator {
private MethodDeclaration getOrCreateMethod(ClassOrInterfaceDeclaration nodeCoid,
Supplier<MethodDeclaration> newMethodSupplier,
- String methodName, String... methodParameterTypes) {
- final List<MethodDeclaration> removeMethods = nodeCoid.getMethodsBySignature(methodName, methodParameterTypes);
- final MethodDeclaration removeMethod;
- if (removeMethods.isEmpty()) {
- removeMethod = newMethodSupplier.get();
- nodeCoid.addMember(removeMethod);
- } else if (removeMethods.size() == 1) {
- removeMethod = removeMethods.get(0);
+ String methodName, String... parameterTypes) {
+ final List<MethodDeclaration> methods = nodeCoid.getMethodsBySignature(methodName, parameterTypes);
+ final MethodDeclaration method;
+ if (methods.isEmpty()) {
+ method = newMethodSupplier.get();
+ nodeCoid.addMember(method);
+ } else if (methods.size() == 1) {
+ method = methods.get(0);
} else {
throw new AssertionError(f("Found more than one method while expecting only one."));
}
- return removeMethod;
+ return method;
}
private String attributeCheck(PropertyMetaModel property, String removeAttributeMethodName) {