aboutsummaryrefslogtreecommitdiff
path: root/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2017-04-23 03:02:06 +0200
committerDanny van Bruggen <hexagonaal@gmail.com>2017-04-23 03:02:06 +0200
commit3d837804b3a3786470940e4754d1e9fd42ed8ee0 (patch)
tree0e56f4a349cae289d928aaee455bffa48c2d6847 /javaparser-core-generators/src/main/java/com/github/javaparser/generator/core
parent21d256cd2a82ab8d23611d583c44c14b44b68311 (diff)
downloadjavaparser-3d837804b3a3786470940e4754d1e9fd42ed8ee0.tar.gz
Mark remove methods generated
Diffstat (limited to 'javaparser-core-generators/src/main/java/com/github/javaparser/generator/core')
-rw-r--r--javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/RemoveMethodGenerator.java47
1 files changed, 14 insertions, 33 deletions
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 edc358b43..ac31d9082 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
@@ -27,13 +27,11 @@ public class RemoveMethodGenerator extends NodeGenerator {
@Override
protected void generateNode(BaseNodeMetaModel nodeMetaModel, CompilationUnit nodeCu, ClassOrInterfaceDeclaration nodeCoid) {
- final MethodDeclaration removeMethod = getOrCreateMethod(nodeCoid, () -> {
- nodeCu.addImport(Node.class);
- return (MethodDeclaration) parseClassBodyDeclaration("@Override public boolean remove(Node node) {}");
- },
- "remove", "Node");
+ MethodDeclaration removeNodeMethod = (MethodDeclaration) parseClassBodyDeclaration("public boolean remove(Node node) {}");
+ nodeCu.addImport(Node.class);
+ nodeMetaModel.getSuperNodeMetaModel().ifPresent(s -> annotateOverridden(removeNodeMethod));
- final BlockStmt body = emptyBodyFor(removeMethod);
+ final BlockStmt body = removeNodeMethod.getBody().get();
body.addStatement("if (node == null) return false;");
@@ -61,28 +59,9 @@ public class RemoveMethodGenerator extends NodeGenerator {
} else {
body.addStatement("return false;");
}
- }
-
- private BlockStmt emptyBodyFor(NodeWithOptionalBlockStmt<?> removeMethod) {
- final BlockStmt body = removeMethod.getBody().get();
- body.getStatements().clear();
- return body;
- }
-
- private MethodDeclaration getOrCreateMethod(ClassOrInterfaceDeclaration nodeCoid,
- Supplier<MethodDeclaration> newMethodSupplier,
- 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 method;
+
+ addOrReplaceWhenSameSignature(nodeCoid, removeNodeMethod);
+ annotateGenerated(removeNodeMethod);
}
private String attributeCheck(PropertyMetaModel property, String removeAttributeMethodName) {
@@ -102,12 +81,14 @@ public class RemoveMethodGenerator extends NodeGenerator {
}
private String generateRemoveMethodForAttribute(ClassOrInterfaceDeclaration nodeCoid, BaseNodeMetaModel nodeMetaModel, PropertyMetaModel property) {
- String methodName = "remove" + capitalize(property.getName());
- MethodDeclaration removeMethod = getOrCreateMethod(nodeCoid,
- () -> (MethodDeclaration) parseClassBodyDeclaration(f("public %s %s() {}", nodeMetaModel.getTypeName(), methodName)),
- methodName);
- BlockStmt block = emptyBodyFor(removeMethod);
+ final String methodName = "remove" + capitalize(property.getName());
+ final MethodDeclaration removeMethod = (MethodDeclaration) parseClassBodyDeclaration(f("public %s %s() {}", nodeMetaModel.getTypeName(), methodName));
+
+ final BlockStmt block = removeMethod.getBody().get();
block.addStatement(f("return %s((%s) null);", property.getSetterMethodName(), property.getTypeNameForSetter()));
+
+ addOrReplaceWhenSameSignature(nodeCoid, removeMethod);
+ annotateGenerated(removeMethod);
return methodName;
}
}