diff options
author | Danny van Bruggen <danny.van.bruggen@kvk.nl> | 2017-02-07 16:33:56 +0100 |
---|---|---|
committer | Danny van Bruggen <danny.van.bruggen@kvk.nl> | 2017-02-07 16:33:56 +0100 |
commit | 01f005bd3ceb47427476490d7ee5ad0d19248ff3 (patch) | |
tree | de80fc607b80f0b1e32b56e0271ccd85c6d4c227 /javaparser-core/src/main/java/com/github/javaparser | |
parent | 252055a55567f8fc250b81df4e1af1a54af8ca94 (diff) | |
download | javaparser-01f005bd3ceb47427476490d7ee5ad0d19248ff3.tar.gz |
The result of running the replace(Node) method generator
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser')
93 files changed, 1196 insertions, 46 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/ArrayCreationLevel.java b/javaparser-core/src/main/java/com/github/javaparser/ast/ArrayCreationLevel.java index ae707a858..0e96e29c0 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/ArrayCreationLevel.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/ArrayCreationLevel.java @@ -32,6 +32,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * In <code>new int[1][2];</code> there are two ArrayCreationLevel objects, @@ -120,5 +121,24 @@ public class ArrayCreationLevel extends Node implements NodeWithAnnotations<Arra public void removeDimension() { setDimension(null); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < annotations.size(); i++) { + if (annotations.get(i) == node) { + annotations.remove(i); + return true; + } + } + if (dimension != null) { + if (node == dimension) { + setDimension((Expression) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/CompilationUnit.java b/javaparser-core/src/main/java/com/github/javaparser/ast/CompilationUnit.java index bab441a2a..abd5ef58c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/CompilationUnit.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/CompilationUnit.java @@ -39,6 +39,7 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * <p> @@ -421,5 +422,30 @@ public final class CompilationUnit extends Node { public List<NodeList<?>> getNodeLists() { return Arrays.asList(getImports(), getTypes()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < imports.size(); i++) { + if (imports.get(i) == node) { + imports.remove(i); + return true; + } + } + if (packageDeclaration != null) { + if (node == packageDeclaration) { + setPackageDeclaration((PackageDeclaration) null); + return true; + } + } + for (int i = 0; i < types.size(); i++) { + if (types.get(i) == node) { + types.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/ImportDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/ImportDeclaration.java index 6dec91245..aa60184f6 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/ImportDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/ImportDeclaration.java @@ -27,6 +27,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * An import declaration. @@ -112,5 +113,12 @@ public final class ImportDeclaration extends Node implements NodeWithName<Import this.isStatic = isStatic; return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/Node.java b/javaparser-core/src/main/java/com/github/javaparser/ast/Node.java index 8374d06b3..7a32fff4a 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/Node.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/Node.java @@ -41,6 +41,7 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.*; import static java.util.Collections.unmodifiableList; +import com.github.javaparser.ast.Node; /** * Base class for all nodes of the abstract syntax tree. @@ -440,55 +441,10 @@ public abstract class Node implements Cloneable, HasParentNode<Node>, Visitable * @throws RuntimeException if it fails in an unexpected way */ public boolean remove() { - Node parentNode = this.parentNode; if (parentNode == null) { return false; } - boolean removed = false; - Class<?> parentClass = parentNode.getClass(); - for (Method method : parentClass.getMethods()) { - if (!removed && !java.lang.reflect.Modifier.isStatic(method.getModifiers())) { - // looking for methods returning a NodeList - if (method.getParameterCount() == 0 && NodeList.class.isAssignableFrom(method.getReturnType())) { - try { - NodeList result = (NodeList) method.invoke(parentNode); - removed = result.remove(this); - } catch (IllegalAccessException | InvocationTargetException e) { - } - } else if ((method.getReturnType().isAssignableFrom(this.getClass()) || isOptionalAssignableFrom(method.getGenericReturnType(), this.getClass())) && method.getParameterCount() == 0 && method.getName().startsWith("get")) { - final Class<?> setterParamType = isOptionalAssignableFrom(method.getGenericReturnType(), this.getClass()) ? getOptionalParameterType(method.getGenericReturnType()) : method.getReturnType(); - // ok, we found a potential getter. Before invoking let's check there is a corresponding setter, - // otherwise there is no point - String setterName = "set" + method.getName().substring("get".length()); - Optional<Method> optSetter = Arrays.stream(parentClass.getMethods()).filter( m -> m.getName().equals(setterName)).filter( m -> !java.lang.reflect.Modifier.isStatic(m.getModifiers())).filter( m -> m.getParameterCount() == 1).filter( m -> m.getParameterTypes()[0].equals(setterParamType)).findFirst(); - if (optSetter.isPresent()) { - try { - Object resultRaw = method.invoke(parentNode); - Node result; - if (isOptionalAssignableFrom(method.getGenericReturnType(), this.getClass())) { - Optional optionalResultRaw = (Optional) resultRaw; - if (optionalResultRaw.isPresent()) { - Object o = optionalResultRaw.get(); - if (Node.class.isAssignableFrom(o.getClass())) { - result = (Node) o; - } else - continue; - } else - continue; - } else { - result = (Node) resultRaw; - } - if (this == result) { - optSetter.get().invoke(parentNode, (Object) null); - removed = true; - } - } catch (IllegalAccessException | InvocationTargetException e) { - } - } - } - } - } - return removed; + return parentNode.remove(this); } @Override @@ -594,5 +550,17 @@ public abstract class Node implements Cloneable, HasParentNode<Node>, Visitable Class parameterType = (Class) parameterizedType.getActualTypeArguments()[0]; return Optional.of(parameterType); } + + public boolean remove(Node node) { + if (node == null) + return false; + if (comment != null) { + if (node == comment) { + setComment((Comment) null); + return true; + } + } + return false; + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/PackageDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/PackageDeclaration.java index 7f8b766fe..d66053a79 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/PackageDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/PackageDeclaration.java @@ -31,6 +31,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A package declaration. @@ -129,5 +130,18 @@ public final class PackageDeclaration extends Node implements NodeWithAnnotation public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < annotations.size(); i++) { + if (annotations.get(i) == node) { + annotations.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationDeclaration.java index cf9b85260..b6826ffdd 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationDeclaration.java @@ -31,6 +31,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.EnumSet; import java.util.List; +import com.github.javaparser.ast.Node; /** * An annotation type declaration.<br/><code>@interface X { ... }</code> @@ -70,5 +71,12 @@ public final class AnnotationDeclaration extends TypeDeclaration<AnnotationDecla public List<NodeList<?>> getNodeLists() { return Arrays.asList(getMembers(), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationMemberDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationMemberDeclaration.java index 5bb51bfb1..7d7be2970 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationMemberDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationMemberDeclaration.java @@ -41,6 +41,7 @@ import java.util.EnumSet; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * The "int id();" in <code>@interface X { int id(); }</code> @@ -170,5 +171,18 @@ public final class AnnotationMemberDeclaration extends BodyDeclaration<Annotatio public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (defaultValue != null) { + if (node == defaultValue) { + setDefaultValue((Expression) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/BodyDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/BodyDeclaration.java index 91a4c0c77..6f776edf6 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/BodyDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/BodyDeclaration.java @@ -77,5 +77,18 @@ public abstract class BodyDeclaration<T extends Node> extends Node implements No public List<NodeList<?>> getNodeLists() { return Arrays.asList(annotations); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < annotations.size(); i++) { + if (annotations.get(i) == node) { + annotations.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/ClassOrInterfaceDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/ClassOrInterfaceDeclaration.java index 63de1b10b..a9c6b2d1e 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/ClassOrInterfaceDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/ClassOrInterfaceDeclaration.java @@ -36,6 +36,7 @@ import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.*; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A definition of a class or interface.<br/><code>class X { ... }</code> @@ -154,5 +155,30 @@ public final class ClassOrInterfaceDeclaration extends TypeDeclaration<ClassOrIn public List<NodeList<?>> getNodeLists() { return Arrays.asList(getExtendedTypes(), getImplementedTypes(), getTypeParameters(), getMembers(), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < extendedTypes.size(); i++) { + if (extendedTypes.get(i) == node) { + extendedTypes.remove(i); + return true; + } + } + for (int i = 0; i < implementedTypes.size(); i++) { + if (implementedTypes.get(i) == node) { + implementedTypes.remove(i); + return true; + } + } + for (int i = 0; i < typeParameters.size(); i++) { + if (typeParameters.get(i) == node) { + typeParameters.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java index 70076cc80..29e378df8 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java @@ -38,6 +38,7 @@ import java.util.Arrays; import java.util.EnumSet; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A constructor declaration: <code>class X { X() { } }</code> where X(){} is the constructor declaration. @@ -249,5 +250,30 @@ public final class ConstructorDeclaration extends BodyDeclaration<ConstructorDec public List<NodeList<?>> getNodeLists() { return Arrays.asList(getParameters(), getThrownExceptions(), getTypeParameters(), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < parameters.size(); i++) { + if (parameters.get(i) == node) { + parameters.remove(i); + return true; + } + } + for (int i = 0; i < thrownExceptions.size(); i++) { + if (thrownExceptions.get(i) == node) { + thrownExceptions.remove(i); + return true; + } + } + for (int i = 0; i < typeParameters.size(); i++) { + if (typeParameters.get(i) == node) { + typeParameters.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/EmptyMemberDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/EmptyMemberDeclaration.java index 8e8a7acf6..b142b0860 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/EmptyMemberDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/EmptyMemberDeclaration.java @@ -28,6 +28,7 @@ import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; +import com.github.javaparser.ast.Node; /** * A loose ";" inside a body.<br/><code>class X { ; }</code> @@ -61,5 +62,12 @@ public final class EmptyMemberDeclaration extends BodyDeclaration<EmptyMemberDec public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumConstantDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumConstantDeclaration.java index a9d257f46..03890aa27 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumConstantDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumConstantDeclaration.java @@ -35,6 +35,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * One of the values an enum can take. A(1) and B(2) in this example: <code>enum X { A(1), B(2) }</code> @@ -127,5 +128,24 @@ public final class EnumConstantDeclaration extends BodyDeclaration<EnumConstantD public List<NodeList<?>> getNodeLists() { return Arrays.asList(getArguments(), getClassBody(), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < arguments.size(); i++) { + if (arguments.get(i) == node) { + arguments.remove(i); + return true; + } + } + for (int i = 0; i < classBody.size(); i++) { + if (classBody.get(i) == node) { + classBody.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumDeclaration.java index c3467f4a6..26a5b05d6 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumDeclaration.java @@ -36,6 +36,7 @@ import java.util.EnumSet; import java.util.List; import static com.github.javaparser.utils.Utils.assertNonEmpty; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * The declaration of an enum.<br/><code>enum X { ... }</code> @@ -132,5 +133,24 @@ public final class EnumDeclaration extends TypeDeclaration<EnumDeclaration> impl public List<NodeList<?>> getNodeLists() { return Arrays.asList(getEntries(), getImplementedTypes(), getMembers(), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < entries.size(); i++) { + if (entries.get(i) == node) { + entries.remove(i); + return true; + } + } + for (int i = 0; i < implementedTypes.size(); i++) { + if (implementedTypes.get(i) == node) { + implementedTypes.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/FieldDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/FieldDeclaration.java index 41259b848..f4d1e5578 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/FieldDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/FieldDeclaration.java @@ -42,6 +42,7 @@ import java.util.*; import static com.github.javaparser.ast.Modifier.PUBLIC; import static com.github.javaparser.ast.NodeList.nodeList; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * The declaration of a field in a class. "private static int a=15*15;" in this example: <code>class X { private static @@ -193,5 +194,18 @@ public final class FieldDeclaration extends BodyDeclaration<FieldDeclaration> im public List<NodeList<?>> getNodeLists() { return Arrays.asList(getVariables(), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < variables.size(); i++) { + if (variables.get(i) == node) { + variables.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/InitializerDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/InitializerDeclaration.java index 6d3f9e508..4e5c93814 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/InitializerDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/InitializerDeclaration.java @@ -32,6 +32,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A (possibly static) initializer body. "static { a=3; }" in this example: <code>class X { static { a=3; } } </code> @@ -97,5 +98,12 @@ public final class InitializerDeclaration extends BodyDeclaration<InitializerDec public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java index f95a44eac..a3733e599 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java @@ -38,6 +38,7 @@ import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.*; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A method declaration. "public int abc() {return 1;}" in this example: <code>class X { public int abc() {return 1;} @@ -315,5 +316,36 @@ public final class MethodDeclaration extends BodyDeclaration<MethodDeclaration> public List<NodeList<?>> getNodeLists() { return Arrays.asList(getParameters(), getThrownExceptions(), getTypeParameters(), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (body != null) { + if (node == body) { + setBody((BlockStmt) null); + return true; + } + } + for (int i = 0; i < parameters.size(); i++) { + if (parameters.get(i) == node) { + parameters.remove(i); + return true; + } + } + for (int i = 0; i < thrownExceptions.size(); i++) { + if (thrownExceptions.get(i) == node) { + thrownExceptions.remove(i); + return true; + } + } + for (int i = 0; i < typeParameters.size(); i++) { + if (typeParameters.get(i) == node) { + typeParameters.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/Parameter.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/Parameter.java index de811f140..8ea461539 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/Parameter.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/Parameter.java @@ -195,5 +195,18 @@ public final class Parameter extends Node implements NodeWithType<Parameter, Typ public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < annotations.size(); i++) { + if (annotations.get(i) == node) { + annotations.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/TypeDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/TypeDeclaration.java index 2f05e7dc9..b09ebb274 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/TypeDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/TypeDeclaration.java @@ -139,5 +139,18 @@ public abstract class TypeDeclaration<T extends Node> extends BodyDeclaration<T> res.add(members); return res; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < members.size(); i++) { + if (members.get(i) == node) { + members.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/VariableDeclarator.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/VariableDeclarator.java index 573c6b8cd..e1466cca2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/VariableDeclarator.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/VariableDeclarator.java @@ -154,5 +154,18 @@ public final class VariableDeclarator extends Node implements NodeWithType<Varia setAsParentNodeOf(type); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (initializer != null) { + if (node == initializer) { + setInitializer((Expression) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/comments/BlockComment.java b/javaparser-core/src/main/java/com/github/javaparser/ast/comments/BlockComment.java index fc78c4524..16cd97b05 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/comments/BlockComment.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/comments/BlockComment.java @@ -24,6 +24,7 @@ import com.github.javaparser.Range; import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.ast.Node; /** * <p> @@ -58,5 +59,12 @@ public final class BlockComment extends Comment { public <A> void accept(VoidVisitor<A> v, A arg) { v.visit(this, arg); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/comments/Comment.java b/javaparser-core/src/main/java/com/github/javaparser/ast/comments/Comment.java index 1afcc0a06..0d77a2f56 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/comments/Comment.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/comments/Comment.java @@ -120,5 +120,12 @@ public abstract class Comment extends Node { return false; } } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/comments/JavadocComment.java b/javaparser-core/src/main/java/com/github/javaparser/ast/comments/JavadocComment.java index f4f064bfc..27f57d75a 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/comments/JavadocComment.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/comments/JavadocComment.java @@ -26,6 +26,7 @@ import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import com.github.javaparser.javadoc.Javadoc; +import com.github.javaparser.ast.Node; /** * A Javadoc comment. <code>/** a comment */</code> @@ -60,5 +61,12 @@ public final class JavadocComment extends Comment { public Javadoc parse() { return JavaParser.parseJavadoc(getContent()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/comments/LineComment.java b/javaparser-core/src/main/java/com/github/javaparser/ast/comments/LineComment.java index 4a4e7ec91..6c54f6e66 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/comments/LineComment.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/comments/LineComment.java @@ -24,6 +24,7 @@ import com.github.javaparser.Range; import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.ast.Node; /** * <p> @@ -62,5 +63,12 @@ public final class LineComment extends Comment { public boolean isLineComment() { return true; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AnnotationExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AnnotationExpr.java index ecfd0a21f..e5655278a 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AnnotationExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AnnotationExpr.java @@ -24,6 +24,7 @@ import com.github.javaparser.Range; import com.github.javaparser.ast.nodeTypes.NodeWithName; import com.github.javaparser.ast.observer.ObservableProperty; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A base class for the different types of annotations. @@ -62,5 +63,12 @@ public abstract class AnnotationExpr extends Expression implements NodeWithName< setAsParentNodeOf(name); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayAccessExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayAccessExpr.java index 17c303ba4..22eea22b7 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayAccessExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayAccessExpr.java @@ -26,6 +26,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Array brackets [] being used to get a value from an array. @@ -91,5 +92,12 @@ public final class ArrayAccessExpr extends Expression { setAsParentNodeOf(name); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayCreationExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayCreationExpr.java index 6786bdc52..1815dd24c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayCreationExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayCreationExpr.java @@ -35,6 +35,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * <code>new int[5][4][][]</code> or <code>new int[][]{{1},{2,3}}</code>. @@ -164,5 +165,24 @@ public final class ArrayCreationExpr extends Expression { public List<NodeList<?>> getNodeLists() { return Arrays.asList(getLevels()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (initializer != null) { + if (node == initializer) { + setInitializer((ArrayInitializerExpr) null); + return true; + } + } + for (int i = 0; i < levels.size(); i++) { + if (levels.get(i) == node) { + levels.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayInitializerExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayInitializerExpr.java index 47aee1891..767fa94f9 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayInitializerExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ArrayInitializerExpr.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * The initialization of an array. In the following sample, the outer { } is an ArrayInitializerExpr. @@ -84,5 +85,18 @@ public final class ArrayInitializerExpr extends Expression { public List<NodeList<?>> getNodeLists() { return Arrays.asList(getValues()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < values.size(); i++) { + if (values.get(i) == node) { + values.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AssignExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AssignExpr.java index eee5cbc56..dea407aa9 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AssignExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AssignExpr.java @@ -26,6 +26,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * An assignment expression. It supports the operators that are found the the AssignExpr.Operator enum. @@ -121,5 +122,12 @@ public final class AssignExpr extends Expression { setAsParentNodeOf(value); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BinaryExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BinaryExpr.java index 3059a11bd..c6255bc51 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BinaryExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BinaryExpr.java @@ -26,6 +26,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * An expression with an expression on the left, an expression on the right, and an operator in the middle. @@ -122,5 +123,12 @@ public final class BinaryExpr extends Expression { setAsParentNodeOf(right); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BooleanLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BooleanLiteralExpr.java index d83a85598..1a7a7545c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BooleanLiteralExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BooleanLiteralExpr.java @@ -25,6 +25,7 @@ import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.ast.Node; /** * The boolean literals. @@ -70,5 +71,12 @@ public final class BooleanLiteralExpr extends LiteralExpr { this.value = value; return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CastExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CastExpr.java index 7955e69ff..2f5002778 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CastExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CastExpr.java @@ -30,6 +30,7 @@ import com.github.javaparser.ast.type.Type; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A typecast. The (long) in <code>(long)15</code> @@ -98,5 +99,12 @@ public final class CastExpr extends Expression implements NodeWithType<CastExpr, setAsParentNodeOf(type); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CharLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CharLiteralExpr.java index 665882204..149b0a79d 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CharLiteralExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CharLiteralExpr.java @@ -25,6 +25,7 @@ import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import com.github.javaparser.utils.Utils; +import com.github.javaparser.ast.Node; /** * A literal character. @@ -67,5 +68,12 @@ public final class CharLiteralExpr extends StringLiteralExpr { public <A> void accept(VoidVisitor<A> v, A arg) { v.visit(this, arg); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ClassExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ClassExpr.java index e5ab381b9..fd4937297 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ClassExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ClassExpr.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.type.Type; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Defines an expression that accesses the class of a type. @@ -79,5 +80,12 @@ public final class ClassExpr extends Expression implements NodeWithType<ClassExp setAsParentNodeOf(type); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ConditionalExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ConditionalExpr.java index 152f759f1..cc7f250fb 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ConditionalExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ConditionalExpr.java @@ -26,6 +26,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * An if-then or if-then-else construct. @@ -108,5 +109,12 @@ public final class ConditionalExpr extends Expression { setAsParentNodeOf(thenExpr); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/DoubleLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/DoubleLiteralExpr.java index 516f6d7f7..98fd4069a 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/DoubleLiteralExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/DoubleLiteralExpr.java @@ -24,6 +24,7 @@ import com.github.javaparser.Range; import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.ast.Node; /** * A float or a double constant. This value is stored exactly as found in the source. @@ -57,5 +58,12 @@ public final class DoubleLiteralExpr extends StringLiteralExpr { public <A> void accept(final VoidVisitor<A> v, final A arg) { v.visit(this, arg); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/EnclosedExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/EnclosedExpr.java index d92a6b934..58619cbf4 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/EnclosedExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/EnclosedExpr.java @@ -26,6 +26,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Optional; +import com.github.javaparser.ast.Node; /** * An expression between ( ). @@ -79,5 +80,18 @@ public final class EnclosedExpr extends Expression { setAsParentNodeOf(inner); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (inner != null) { + if (node == inner) { + setInner((Expression) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Expression.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Expression.java index 4766d891f..eaf1c5111 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Expression.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Expression.java @@ -33,5 +33,12 @@ public abstract class Expression extends Node { public Expression(Range range) { super(range); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/FieldAccessExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/FieldAccessExpr.java index 880491a7c..8dfb78e1a 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/FieldAccessExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/FieldAccessExpr.java @@ -34,6 +34,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Access of a field of an object. @@ -166,5 +167,26 @@ public final class FieldAccessExpr extends Expression implements NodeWithSimpleN public List<NodeList<?>> getNodeLists() { return Arrays.asList(getTypeArguments().orElse(null)); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (scope != null) { + if (node == scope) { + setScope((Expression) null); + return true; + } + } + if (typeArguments != null) { + for (int i = 0; i < typeArguments.size(); i++) { + if (typeArguments.get(i) == node) { + typeArguments.remove(i); + return true; + } + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/InstanceOfExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/InstanceOfExpr.java index 2e6eb0772..915f91b9e 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/InstanceOfExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/InstanceOfExpr.java @@ -30,6 +30,7 @@ import com.github.javaparser.ast.type.ReferenceType; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Usage of the instanceof operator. @@ -99,5 +100,12 @@ public final class InstanceOfExpr extends Expression implements NodeWithType<Ins setAsParentNodeOf(type); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java index 675f7536f..77b1112c2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java @@ -24,6 +24,7 @@ import com.github.javaparser.Range; import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.ast.Node; /** * All ways to specify an int literal. @@ -59,5 +60,12 @@ public class IntegerLiteralExpr extends StringLiteralExpr { public <A> void accept(final VoidVisitor<A> v, final A arg) { v.visit(this, arg); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LambdaExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LambdaExpr.java index a8379757a..a918d5c3d 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LambdaExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LambdaExpr.java @@ -33,6 +33,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A lambda expression. The parameters are on the left side of the ->. @@ -123,5 +124,18 @@ public class LambdaExpr extends Expression implements NodeWithParameters<LambdaE public List<NodeList<?>> getNodeLists() { return Arrays.asList(getParameters()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < parameters.size(); i++) { + if (parameters.get(i) == node) { + parameters.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LiteralExpr.java index a81a4e08f..f24d36434 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LiteralExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LiteralExpr.java @@ -21,6 +21,7 @@ package com.github.javaparser.ast.expr; import com.github.javaparser.Range; +import com.github.javaparser.ast.Node; /** * A base class for all literal expressions. @@ -32,5 +33,12 @@ public abstract class LiteralExpr extends Expression { protected LiteralExpr(Range range) { super(range); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java index a6bc7ec92..96c3a3a7f 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java @@ -24,6 +24,7 @@ import com.github.javaparser.Range; import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.ast.Node; /** * All ways to specify a long literal. @@ -59,5 +60,12 @@ public class LongLiteralExpr extends StringLiteralExpr { public <A> void accept(final VoidVisitor<A> v, final A arg) { v.visit(this, arg); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MarkerAnnotationExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MarkerAnnotationExpr.java index f28642c1f..1c4dfc6cf 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MarkerAnnotationExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MarkerAnnotationExpr.java @@ -24,6 +24,7 @@ import com.github.javaparser.Range; import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.ast.Node; /** * An annotation that uses only the annotation type name. @@ -55,5 +56,12 @@ public final class MarkerAnnotationExpr extends AnnotationExpr { public <A> void accept(final VoidVisitor<A> v, final A arg) { v.visit(this, arg); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MemberValuePair.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MemberValuePair.java index a51cf4fc5..6177b614c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MemberValuePair.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MemberValuePair.java @@ -99,5 +99,12 @@ public final class MemberValuePair extends Node implements NodeWithSimpleName<Me setAsParentNodeOf(value); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MethodCallExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MethodCallExpr.java index 678410f1b..eb2aca635 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MethodCallExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MethodCallExpr.java @@ -35,6 +35,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A method call on an object. <br/><code>circle.circumference()</code> <br/>In <code>a.<String>bb(15);</code> a @@ -157,5 +158,32 @@ public final class MethodCallExpr extends Expression implements NodeWithTypeArgu public List<NodeList<?>> getNodeLists() { return Arrays.asList(getArguments(), getTypeArguments().orElse(null)); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < arguments.size(); i++) { + if (arguments.get(i) == node) { + arguments.remove(i); + return true; + } + } + if (scope != null) { + if (node == scope) { + setScope((Expression) null); + return true; + } + } + if (typeArguments != null) { + for (int i = 0; i < typeArguments.size(); i++) { + if (typeArguments.get(i) == node) { + typeArguments.remove(i); + return true; + } + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MethodReferenceExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MethodReferenceExpr.java index df320459c..6b2ce75a2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MethodReferenceExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/MethodReferenceExpr.java @@ -34,6 +34,7 @@ import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNonEmpty; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Method reference expressions introduced in Java 8 specifically designed to simplify lambda Expressions. @@ -132,5 +133,20 @@ public class MethodReferenceExpr extends Expression implements NodeWithTypeArgum public List<NodeList<?>> getNodeLists() { return Arrays.asList(getTypeArguments().orElse(null)); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (typeArguments != null) { + for (int i = 0; i < typeArguments.size(); i++) { + if (typeArguments.get(i) == node) { + typeArguments.remove(i); + return true; + } + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Name.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Name.java index 3254b584e..a9ccd5568 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Name.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Name.java @@ -129,5 +129,18 @@ public class Name extends Node implements NodeWithIdentifier<Name> { setAsParentNodeOf(qualifier); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (qualifier != null) { + if (node == qualifier) { + setQualifier((Name) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NameExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NameExpr.java index f8687f6f3..43d9b935f 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NameExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NameExpr.java @@ -27,6 +27,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Whenever a SimpleName is used in an expression, it is wrapped in NameExpr. @@ -81,5 +82,12 @@ public class NameExpr extends Expression implements NodeWithSimpleName<NameExpr> setAsParentNodeOf(name); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NormalAnnotationExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NormalAnnotationExpr.java index 4e02edfd0..d22eda36e 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NormalAnnotationExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NormalAnnotationExpr.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * An annotation that has zero or more key-value pairs.<br/><code>@Mapping(a=5, d=10)</code> @@ -100,5 +101,18 @@ public final class NormalAnnotationExpr extends AnnotationExpr { public List<NodeList<?>> getNodeLists() { return Arrays.asList(getPairs()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < pairs.size(); i++) { + if (pairs.get(i) == node) { + pairs.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NullLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NullLiteralExpr.java index c9f8afaeb..0984fac7d 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NullLiteralExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/NullLiteralExpr.java @@ -24,6 +24,7 @@ import com.github.javaparser.Range; import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.ast.Node; /** * A literal "null". @@ -51,5 +52,12 @@ public final class NullLiteralExpr extends LiteralExpr { public <A> void accept(final VoidVisitor<A> v, final A arg) { v.visit(this, arg); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ObjectCreationExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ObjectCreationExpr.java index 48dbd87e1..513452099 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ObjectCreationExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ObjectCreationExpr.java @@ -37,6 +37,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A constructor call. <br/>In <code>new HashMap.Entry<String, Long>(15) {public String getKey() {return null;}};</code> @@ -201,5 +202,40 @@ public final class ObjectCreationExpr extends Expression implements NodeWithType public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnonymousClassBody().orElse(null), getArguments(), getTypeArguments().orElse(null)); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (anonymousClassBody != null) { + for (int i = 0; i < anonymousClassBody.size(); i++) { + if (anonymousClassBody.get(i) == node) { + anonymousClassBody.remove(i); + return true; + } + } + } + for (int i = 0; i < arguments.size(); i++) { + if (arguments.get(i) == node) { + arguments.remove(i); + return true; + } + } + if (scope != null) { + if (node == scope) { + setScope((Expression) null); + return true; + } + } + if (typeArguments != null) { + for (int i = 0; i < typeArguments.size(); i++) { + if (typeArguments.get(i) == node) { + typeArguments.remove(i); + return true; + } + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SimpleName.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SimpleName.java index 5b0c7c86e..f389bc3b2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SimpleName.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SimpleName.java @@ -75,5 +75,12 @@ public class SimpleName extends Node implements NodeWithIdentifier<SimpleName> { this.identifier = identifier; return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SingleMemberAnnotationExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SingleMemberAnnotationExpr.java index f61a447fb..c8b0c56ea 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SingleMemberAnnotationExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SingleMemberAnnotationExpr.java @@ -26,6 +26,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * An annotation that has a single value. <br/><code>@Count(15)</code> @@ -73,5 +74,12 @@ public final class SingleMemberAnnotationExpr extends AnnotationExpr { setAsParentNodeOf(memberValue); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/StringLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/StringLiteralExpr.java index bc323251a..39159834c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/StringLiteralExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/StringLiteralExpr.java @@ -27,6 +27,7 @@ import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import com.github.javaparser.utils.Utils; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A literal string. @@ -82,5 +83,12 @@ public class StringLiteralExpr extends LiteralExpr { this.value = value; return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SuperExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SuperExpr.java index ff49f4f22..42d54e16b 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SuperExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/SuperExpr.java @@ -26,6 +26,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Optional; +import com.github.javaparser.ast.Node; /** * An occurrence of the "super" keyword. <br/><code>World.super.greet()</code> is a MethodCallExpr of method name greet, @@ -82,5 +83,18 @@ public final class SuperExpr extends Expression { setAsParentNodeOf(classExpr); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (classExpr != null) { + if (node == classExpr) { + setClassExpr((Expression) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ThisExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ThisExpr.java index 7a380ef7d..af8f2e419 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ThisExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/ThisExpr.java @@ -26,6 +26,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Optional; +import com.github.javaparser.ast.Node; /** * An occurrence of the "this" keyword. <br/><code>World.this.greet()</code> is a MethodCallExpr of method name greet, @@ -76,5 +77,18 @@ public final class ThisExpr extends Expression { setAsParentNodeOf(classExpr); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (classExpr != null) { + if (node == classExpr) { + setClassExpr((Expression) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/TypeExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/TypeExpr.java index b5380e5cb..840330b24 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/TypeExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/TypeExpr.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.type.Type; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * This class is just instantiated as scopes for MethodReferenceExpr nodes to encapsulate Types. @@ -80,5 +81,12 @@ public class TypeExpr extends Expression implements NodeWithType<TypeExpr, Type> setAsParentNodeOf(type); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/UnaryExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/UnaryExpr.java index 709104c75..03aa442bd 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/UnaryExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/UnaryExpr.java @@ -27,6 +27,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * An expression where an operator is applied to a single expression. @@ -121,5 +122,12 @@ public final class UnaryExpr extends Expression implements NodeWithExpression<Un this.operator = operator; return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/VariableDeclarationExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/VariableDeclarationExpr.java index de9c5eef4..2af340ec0 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/VariableDeclarationExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/VariableDeclarationExpr.java @@ -38,6 +38,7 @@ import java.util.List; import java.util.stream.Collectors; import static com.github.javaparser.ast.NodeList.nodeList; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A declaration of variables. @@ -160,5 +161,24 @@ public final class VariableDeclarationExpr extends Expression implements NodeWit public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations(), getVariables()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < annotations.size(); i++) { + if (annotations.get(i) == node) { + annotations.remove(i); + return true; + } + } + for (int i = 0; i < variables.size(); i++) { + if (variables.get(i) == node) { + variables.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/AssertStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/AssertStmt.java index 03109628b..520a89663 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/AssertStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/AssertStmt.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A usage of the keyword "assert" @@ -102,5 +103,18 @@ public final class AssertStmt extends Statement { setAsParentNodeOf(message); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (message != null) { + if (node == message) { + setMessage((Expression) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/BlockStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/BlockStmt.java index 905d7f026..bcc30fee2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/BlockStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/BlockStmt.java @@ -30,6 +30,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Statements in between { and }. @@ -82,5 +83,18 @@ public final class BlockStmt extends Statement implements NodeWithStatements<Blo public List<NodeList<?>> getNodeLists() { return Arrays.asList(getStatements()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < statements.size(); i++) { + if (statements.get(i) == node) { + statements.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/BreakStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/BreakStmt.java index 054687b8d..bb2fba385 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/BreakStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/BreakStmt.java @@ -27,6 +27,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Optional; +import com.github.javaparser.ast.Node; /** * A usage of the break keyword. @@ -84,5 +85,18 @@ public final class BreakStmt extends Statement { setAsParentNodeOf(label); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (label != null) { + if (node == label) { + setLabel((SimpleName) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/CatchClause.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/CatchClause.java index 823ad7e9b..9f5538644 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/CatchClause.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/CatchClause.java @@ -111,5 +111,12 @@ public final class CatchClause extends Node implements NodeWithBlockStmt<CatchCl setAsParentNodeOf(body); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ContinueStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ContinueStmt.java index 6f745b51d..84973a1f2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ContinueStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ContinueStmt.java @@ -28,6 +28,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Optional; +import com.github.javaparser.ast.Node; /** * A continue statement with an optional label; @@ -88,5 +89,18 @@ public final class ContinueStmt extends Statement implements NodeWithOptionalLab setAsParentNodeOf(label); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (label != null) { + if (node == label) { + setLabel((SimpleName) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/DoStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/DoStmt.java index 69e6fbda7..74212158c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/DoStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/DoStmt.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A do-while. @@ -96,5 +97,12 @@ public final class DoStmt extends Statement implements NodeWithBody<DoStmt> { setAsParentNodeOf(condition); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/EmptyStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/EmptyStmt.java index 318f3457a..8a9e02c5d 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/EmptyStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/EmptyStmt.java @@ -24,6 +24,7 @@ import com.github.javaparser.Range; import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.ast.Node; /** * @author Julio Vilmar Gesser @@ -50,5 +51,12 @@ public final class EmptyStmt extends Statement { public <A> void accept(final VoidVisitor<A> v, final A arg) { v.visit(this, arg); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ExplicitConstructorInvocationStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ExplicitConstructorInvocationStmt.java index bd4d56d9b..1f2471d76 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ExplicitConstructorInvocationStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ExplicitConstructorInvocationStmt.java @@ -33,6 +33,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A call to super or this in a constructor or initializer. @@ -166,5 +167,32 @@ public final class ExplicitConstructorInvocationStmt extends Statement implement public List<NodeList<?>> getNodeLists() { return Arrays.asList(getArguments(), getTypeArguments().orElse(null)); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < arguments.size(); i++) { + if (arguments.get(i) == node) { + arguments.remove(i); + return true; + } + } + if (expression != null) { + if (node == expression) { + setExpression((Expression) null); + return true; + } + } + if (typeArguments != null) { + for (int i = 0; i < typeArguments.size(); i++) { + if (typeArguments.get(i) == node) { + typeArguments.remove(i); + return true; + } + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ExpressionStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ExpressionStmt.java index ef63cc224..38c43b907 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ExpressionStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ExpressionStmt.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Used to wrap an expression so that it can take the place of a statement. @@ -78,5 +79,12 @@ public final class ExpressionStmt extends Statement implements NodeWithExpressio setAsParentNodeOf(expression); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ForStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ForStmt.java index c9d803d16..af011d9d8 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ForStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ForStmt.java @@ -33,6 +33,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A classic for statement. @@ -145,5 +146,30 @@ public final class ForStmt extends Statement implements NodeWithBody<ForStmt> { public List<NodeList<?>> getNodeLists() { return Arrays.asList(getInitialization(), getUpdate()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (compare != null) { + if (node == compare) { + setCompare((Expression) null); + return true; + } + } + for (int i = 0; i < initialization.size(); i++) { + if (initialization.get(i) == node) { + initialization.remove(i); + return true; + } + } + for (int i = 0; i < update.size(); i++) { + if (update.get(i) == node) { + update.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ForeachStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ForeachStmt.java index 1d68a2dfa..0a8d09e60 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ForeachStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ForeachStmt.java @@ -30,6 +30,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A for-each statement. @@ -118,5 +119,12 @@ public final class ForeachStmt extends Statement implements NodeWithBody<Foreach setAsParentNodeOf(variable); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/IfStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/IfStmt.java index bb2001a9a..a02d732c5 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/IfStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/IfStmt.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * An if-then-else statement. The else is optional. @@ -117,5 +118,18 @@ public final class IfStmt extends Statement { setAsParentNodeOf(thenStmt); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (elseStmt != null) { + if (node == elseStmt) { + setElseStmt((Statement) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/LabeledStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/LabeledStmt.java index 2628002fe..90b3ac640 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/LabeledStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/LabeledStmt.java @@ -27,6 +27,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A statement that is labeled, like <code>label123: println("continuing");</code> @@ -95,5 +96,12 @@ public final class LabeledStmt extends Statement { setAsParentNodeOf(label); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/LocalClassDeclarationStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/LocalClassDeclarationStmt.java index 3d5cf4e72..410381d85 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/LocalClassDeclarationStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/LocalClassDeclarationStmt.java @@ -27,6 +27,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A class declaration inside a method. @@ -77,5 +78,12 @@ public final class LocalClassDeclarationStmt extends Statement { setAsParentNodeOf(classDeclaration); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ReturnStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ReturnStmt.java index 7fe25be03..8a184a455 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ReturnStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ReturnStmt.java @@ -28,6 +28,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Optional; +import com.github.javaparser.ast.Node; /** * The return statement, with an optional expression to return. @@ -87,5 +88,18 @@ public final class ReturnStmt extends Statement { setAsParentNodeOf(expression); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (expression != null) { + if (node == expression) { + setExpression((Expression) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/Statement.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/Statement.java index 1a2c6e236..cd18ad65b 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/Statement.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/Statement.java @@ -33,5 +33,12 @@ public abstract class Statement extends Node { public Statement(final Range range) { super(range); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SwitchEntryStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SwitchEntryStmt.java index 21f93713f..01fe012f8 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SwitchEntryStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SwitchEntryStmt.java @@ -32,6 +32,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * One case in a switch statement. @@ -121,5 +122,24 @@ public final class SwitchEntryStmt extends Statement implements NodeWithStatemen public List<NodeList<?>> getNodeLists() { return Arrays.asList(getStatements()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (label != null) { + if (node == label) { + setLabel((Expression) null); + return true; + } + } + for (int i = 0; i < statements.size(); i++) { + if (statements.get(i) == node) { + statements.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SwitchStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SwitchStmt.java index 7e1326531..68b3e81ea 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SwitchStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SwitchStmt.java @@ -31,6 +31,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A switch statement. @@ -117,5 +118,18 @@ public final class SwitchStmt extends Statement { public List<NodeList<?>> getNodeLists() { return Arrays.asList(getEntries()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < entries.size(); i++) { + if (entries.get(i) == node) { + entries.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SynchronizedStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SynchronizedStmt.java index b8ad05920..b33012734 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SynchronizedStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/SynchronizedStmt.java @@ -30,6 +30,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Usage of the synchronized keyword. @@ -97,5 +98,12 @@ public final class SynchronizedStmt extends Statement implements NodeWithBlockSt setAsParentNodeOf(body); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ThrowStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ThrowStmt.java index dda91355d..1359578e8 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ThrowStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/ThrowStmt.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Usage of the throw statement. @@ -79,5 +80,12 @@ public final class ThrowStmt extends Statement implements NodeWithExpression<Thr setAsParentNodeOf(expression); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/TryStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/TryStmt.java index 4b76f7d60..5ef888335 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/TryStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/TryStmt.java @@ -31,6 +31,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * The try statement. @@ -149,5 +150,36 @@ public final class TryStmt extends Statement { public List<NodeList<?>> getNodeLists() { return Arrays.asList(getCatchClauses(), getResources()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < catchClauses.size(); i++) { + if (catchClauses.get(i) == node) { + catchClauses.remove(i); + return true; + } + } + if (finallyBlock != null) { + if (node == finallyBlock) { + setFinallyBlock((BlockStmt) null); + return true; + } + } + for (int i = 0; i < resources.size(); i++) { + if (resources.get(i) == node) { + resources.remove(i); + return true; + } + } + if (tryBlock != null) { + if (node == tryBlock) { + setTryBlock((BlockStmt) null); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/WhileStmt.java b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/WhileStmt.java index 19c4febdf..1e599fb8d 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/WhileStmt.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/stmt/WhileStmt.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A while statement. @@ -96,5 +97,12 @@ public final class WhileStmt extends Statement implements NodeWithBody<WhileStmt setAsParentNodeOf(condition); return this; } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java index b21ea5be7..ee99ef3c9 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java @@ -35,6 +35,7 @@ import java.util.List; import java.util.Optional; import static com.github.javaparser.ast.NodeList.nodeList; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * To indicate that a type is an array, it gets wrapped in an ArrayType for every array level it has. @@ -163,5 +164,12 @@ public class ArrayType extends ReferenceType implements NodeWithAnnotations<Arra public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ClassOrInterfaceType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ClassOrInterfaceType.java index c7d2e3141..d32a6c153 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ClassOrInterfaceType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ClassOrInterfaceType.java @@ -35,6 +35,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A class or an interface type. <br/><code>Object</code> <br/><code>HashMap<String, String></code> @@ -166,5 +167,26 @@ public final class ClassOrInterfaceType extends ReferenceType implements NodeWit public List<NodeList<?>> getNodeLists() { return Arrays.asList(getTypeArguments().orElse(null), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (scope != null) { + if (node == scope) { + setScope((ClassOrInterfaceType) null); + return true; + } + } + if (typeArguments != null) { + for (int i = 0; i < typeArguments.size(); i++) { + if (typeArguments.get(i) == node) { + typeArguments.remove(i); + return true; + } + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/IntersectionType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/IntersectionType.java index a6b3198b5..73434c357 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/IntersectionType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/IntersectionType.java @@ -31,6 +31,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Represents a set of types. A given value of this type has to be assignable to at all of the element types. @@ -91,5 +92,18 @@ public class IntersectionType extends Type implements NodeWithAnnotations<Inters public List<NodeList<?>> getNodeLists() { return Arrays.asList(getElements(), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < elements.size(); i++) { + if (elements.get(i) == node) { + elements.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/PrimitiveType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/PrimitiveType.java index 5c2941e76..c5a9bc439 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/PrimitiveType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/PrimitiveType.java @@ -32,6 +32,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A primitive type. @@ -159,5 +160,12 @@ public final class PrimitiveType extends Type implements NodeWithAnnotations<Pri public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ReferenceType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ReferenceType.java index 9acb997fe..0a1dbd1d5 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ReferenceType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ReferenceType.java @@ -22,6 +22,7 @@ package com.github.javaparser.ast.type; import com.github.javaparser.Range; import com.github.javaparser.ast.NodeList; +import com.github.javaparser.ast.Node; /** * Base class for reference types. @@ -37,5 +38,12 @@ public abstract class ReferenceType<T extends ReferenceType> extends Type { public ReferenceType(final Range range) { super(range, new NodeList<>()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/Type.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/Type.java index 639677511..f7acf6778 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/Type.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/Type.java @@ -78,5 +78,18 @@ public abstract class Type extends Node { return 0; } } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < annotations.size(); i++) { + if (annotations.get(i) == node) { + annotations.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/TypeParameter.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/TypeParameter.java index 91764d27c..4cdd9afda 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/TypeParameter.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/TypeParameter.java @@ -33,6 +33,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * A type parameter. @@ -141,5 +142,18 @@ public final class TypeParameter extends ReferenceType<TypeParameter> implements public List<NodeList<?>> getNodeLists() { return Arrays.asList(getTypeBound(), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < typeBound.size(); i++) { + if (typeBound.get(i) == node) { + typeBound.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnionType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnionType.java index fe722f337..8f0bb8b6b 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnionType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnionType.java @@ -31,6 +31,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; +import com.github.javaparser.ast.Node; /** * Represents a set of types. A given value of this type has to be assignable to at least one of the element types. @@ -88,5 +89,18 @@ public class UnionType extends Type implements NodeWithAnnotations<UnionType> { public List<NodeList<?>> getNodeLists() { return Arrays.asList(getElements(), getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + for (int i = 0; i < elements.size(); i++) { + if (elements.get(i) == node) { + elements.remove(i); + return true; + } + } + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnknownType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnknownType.java index dc410df0a..155ff3d27 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnknownType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnknownType.java @@ -28,6 +28,7 @@ import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; +import com.github.javaparser.ast.Node; /** * An unknown parameter type object. It plays the role of a null object for @@ -71,5 +72,12 @@ public final class UnknownType extends Type { public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/VoidType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/VoidType.java index 9b5d2a135..5d87c5f3b 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/VoidType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/VoidType.java @@ -29,6 +29,7 @@ import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; +import com.github.javaparser.ast.Node; /** * The return type of a {@link com.github.javaparser.ast.body.MethodDeclaration} @@ -67,5 +68,12 @@ public final class VoidType extends Type implements NodeWithAnnotations<VoidType public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + return super.remove(node); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/WildcardType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/WildcardType.java index f6d4d2b6c..da93293f8 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/WildcardType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/WildcardType.java @@ -31,6 +31,7 @@ import com.github.javaparser.ast.visitor.VoidVisitor; import java.util.Arrays; import java.util.List; import java.util.Optional; +import com.github.javaparser.ast.Node; /** * A wildcard type argument. @@ -122,5 +123,24 @@ public final class WildcardType extends Type implements NodeWithAnnotations<Wild public List<NodeList<?>> getNodeLists() { return Arrays.asList(getAnnotations()); } + + @Override + public boolean remove(Node node) { + if (node == null) + return false; + if (extendedTypes != null) { + if (node == extendedTypes) { + setExtendedTypes((ReferenceType) null); + return true; + } + } + if (superTypes != null) { + if (node == superTypes) { + setSuperTypes((ReferenceType) null); + return true; + } + } + return super.remove(node); + } } |