From 660b7248ab889410a598d37bde32bbba7ed0ef4e Mon Sep 17 00:00:00 2001 From: Danny van Bruggen Date: Sun, 5 Nov 2017 01:39:56 +0100 Subject: Allow a receiver parameter on constructors --- .../javaparser/ast/body/CallableDeclaration.java | 29 +++++++++++++-- .../ast/body/ConstructorDeclaration.java | 21 +++++------ .../javaparser/ast/body/MethodDeclaration.java | 41 +--------------------- .../javaparser/ast/visitor/CloneVisitor.java | 2 +- .../metamodel/CallableDeclarationMetaModel.java | 2 ++ .../javaparser/metamodel/JavaParserMetaModel.java | 8 +++-- .../metamodel/MethodDeclarationMetaModel.java | 2 -- 7 files changed, 46 insertions(+), 59 deletions(-) (limited to 'javaparser-core/src/main/java/com') diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/CallableDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/CallableDeclaration.java index a220f2bd9..61f607fb9 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/CallableDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/CallableDeclaration.java @@ -43,6 +43,8 @@ import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toList; + +import java.util.Optional; import java.util.function.Consumer; /** @@ -60,22 +62,25 @@ public abstract class CallableDeclaration> exte private NodeList thrownExceptions; + private ReceiverParameter receiverParameter; + @AllFieldsConstructor - public CallableDeclaration(EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions) { - this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions); + CallableDeclaration(EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, ReceiverParameter receiverParameter) { + this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, receiverParameter); } /** * This constructor is used by the parser and is considered private. */ @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator") - public CallableDeclaration(TokenRange tokenRange, EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions) { + CallableDeclaration(TokenRange tokenRange, EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, ReceiverParameter receiverParameter) { super(tokenRange, annotations); setModifiers(modifiers); setTypeParameters(typeParameters); setName(name); setParameters(parameters); setThrownExceptions(thrownExceptions); + setReceiverParameter(receiverParameter); customInitialization(); } @@ -377,4 +382,22 @@ public abstract class CallableDeclaration> exte public void ifCallableDeclaration(Consumer action) { action.accept(this); } + + @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") + public Optional getReceiverParameter() { + return Optional.ofNullable(receiverParameter); + } + + @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") + public CallableDeclaration setReceiverParameter(final ReceiverParameter receiverParameter) { + if (receiverParameter == this.receiverParameter) { + return (CallableDeclaration) this; + } + notifyPropertyChange(ObservableProperty.RECEIVER_PARAMETER, this.receiverParameter, receiverParameter); + if (this.receiverParameter != null) + this.receiverParameter.setParentNode(null); + this.receiverParameter = receiverParameter; + setAsParentNodeOf(receiverParameter); + return this; + } } 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 2ae4a9246..a48981bc3 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 @@ -34,9 +34,7 @@ import com.github.javaparser.ast.type.ReferenceType; import com.github.javaparser.ast.type.TypeParameter; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; -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; import com.github.javaparser.ast.visitor.CloneVisitor; @@ -45,7 +43,6 @@ import com.github.javaparser.metamodel.JavaParserMetaModel; import javax.annotation.Generated; import com.github.javaparser.TokenRange; import com.github.javaparser.resolution.Resolvable; -import com.github.javaparser.resolution.declarations.ResolvedAnnotationDeclaration; import com.github.javaparser.resolution.declarations.ResolvedConstructorDeclaration; import java.util.function.Consumer; @@ -62,28 +59,32 @@ public final class ConstructorDeclaration extends CallableDeclaration(), new NodeList<>(), new SimpleName(), new NodeList<>(), new NodeList<>(), new BlockStmt()); + this(null, EnumSet.noneOf(Modifier.class), new NodeList<>(), new NodeList<>(), new SimpleName(), new NodeList<>(), new NodeList<>(), new BlockStmt(), null); } public ConstructorDeclaration(String name) { - this(null, EnumSet.of(Modifier.PUBLIC), new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt()); + this(null, EnumSet.of(Modifier.PUBLIC), new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt(), null); } public ConstructorDeclaration(EnumSet modifiers, String name) { - this(null, modifiers, new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt()); + this(null, modifiers, new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt(), null); } - @AllFieldsConstructor public ConstructorDeclaration(EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, BlockStmt body) { - this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, body); + this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, body, null); + } + + @AllFieldsConstructor + public ConstructorDeclaration(EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, BlockStmt body, ReceiverParameter receiverParameter) { + this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, body, receiverParameter); } /** * This constructor is used by the parser and is considered private. */ @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator") - public ConstructorDeclaration(TokenRange tokenRange, EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, BlockStmt body) { - super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions); + public ConstructorDeclaration(TokenRange tokenRange, EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, BlockStmt body, ReceiverParameter receiverParameter) { + super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, receiverParameter); setBody(body); customInitialization(); } 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 dc701e68a..658a2d8ef 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 @@ -36,9 +36,7 @@ import com.github.javaparser.ast.type.Type; import com.github.javaparser.ast.type.TypeParameter; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; -import java.util.Arrays; import java.util.EnumSet; -import java.util.List; import java.util.Optional; import static com.github.javaparser.ast.Modifier.*; import static com.github.javaparser.utils.Utils.assertNotNull; @@ -67,8 +65,6 @@ public final class MethodDeclaration extends CallableDeclaration(), new NodeList<>(), new ClassOrInterfaceType(), new SimpleName(), new NodeList<>(), new NodeList<>(), new BlockStmt(), null); } @@ -102,7 +98,7 @@ public final class MethodDeclaration extends CallableDeclaration modifiers, NodeList annotations, NodeList typeParameters, Type type, SimpleName name, NodeList parameters, NodeList thrownExceptions, BlockStmt body, ReceiverParameter receiverParameter) { - super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions); + super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, receiverParameter); setType(type); setBody(body); setReceiverParameter(receiverParameter); @@ -282,12 +278,6 @@ public final class MethodDeclaration extends CallableDeclaration getReceiverParameter() { - return Optional.ofNullable(receiverParameter); - } - - @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") - public MethodDeclaration setReceiverParameter(final ReceiverParameter receiverParameter) { - if (receiverParameter == this.receiverParameter) { - return (MethodDeclaration) this; - } - notifyPropertyChange(ObservableProperty.RECEIVER_PARAMETER, this.receiverParameter, receiverParameter); - if (this.receiverParameter != null) - this.receiverParameter.setParentNode(null); - this.receiverParameter = receiverParameter; - setAsParentNodeOf(receiverParameter); - return this; - } - - @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator") - public MethodDeclaration removeReceiverParameter() { - return setReceiverParameter((ReceiverParameter) null); - } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/CloneVisitor.java b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/CloneVisitor.java index 5f77fc76a..43cd1487f 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/CloneVisitor.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/CloneVisitor.java @@ -189,7 +189,7 @@ public class CloneVisitor implements GenericVisitor { NodeList typeParameters = cloneList(n.getTypeParameters(), arg); NodeList annotations = cloneList(n.getAnnotations(), arg); Comment comment = cloneNode(n.getComment(), arg); - ConstructorDeclaration r = new ConstructorDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, typeParameters, name, parameters, thrownExceptions, body); + ConstructorDeclaration r = new ConstructorDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, typeParameters, name, parameters, thrownExceptions, body, null); r.setComment(comment); return r; } diff --git a/javaparser-core/src/main/java/com/github/javaparser/metamodel/CallableDeclarationMetaModel.java b/javaparser-core/src/main/java/com/github/javaparser/metamodel/CallableDeclarationMetaModel.java index 358ff424c..040762f0e 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/metamodel/CallableDeclarationMetaModel.java +++ b/javaparser-core/src/main/java/com/github/javaparser/metamodel/CallableDeclarationMetaModel.java @@ -19,6 +19,8 @@ public class CallableDeclarationMetaModel extends BodyDeclarationMetaModel { public PropertyMetaModel parametersPropertyMetaModel; + public PropertyMetaModel receiverParameterPropertyMetaModel; + public PropertyMetaModel thrownExceptionsPropertyMetaModel; public PropertyMetaModel typeParametersPropertyMetaModel; diff --git a/javaparser-core/src/main/java/com/github/javaparser/metamodel/JavaParserMetaModel.java b/javaparser-core/src/main/java/com/github/javaparser/metamodel/JavaParserMetaModel.java index fa5132fa4..6c7c84444 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/metamodel/JavaParserMetaModel.java +++ b/javaparser-core/src/main/java/com/github/javaparser/metamodel/JavaParserMetaModel.java @@ -23,6 +23,7 @@ public final class JavaParserMetaModel { callableDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.namePropertyMetaModel); callableDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.parametersPropertyMetaModel); callableDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel); + callableDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.receiverParameterPropertyMetaModel); typeMetaModel.getConstructorParameters().add(typeMetaModel.annotationsPropertyMetaModel); annotationExprMetaModel.getConstructorParameters().add(annotationExprMetaModel.namePropertyMetaModel); typeDeclarationMetaModel.getConstructorParameters().add(typeDeclarationMetaModel.modifiersPropertyMetaModel); @@ -68,6 +69,7 @@ public final class JavaParserMetaModel { constructorDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.parametersPropertyMetaModel); constructorDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel); constructorDeclarationMetaModel.getConstructorParameters().add(constructorDeclarationMetaModel.bodyPropertyMetaModel); + constructorDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.receiverParameterPropertyMetaModel); enumConstantDeclarationMetaModel.getConstructorParameters().add(bodyDeclarationMetaModel.annotationsPropertyMetaModel); enumConstantDeclarationMetaModel.getConstructorParameters().add(enumConstantDeclarationMetaModel.namePropertyMetaModel); enumConstantDeclarationMetaModel.getConstructorParameters().add(enumConstantDeclarationMetaModel.argumentsPropertyMetaModel); @@ -91,7 +93,7 @@ public final class JavaParserMetaModel { methodDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.parametersPropertyMetaModel); methodDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel); methodDeclarationMetaModel.getConstructorParameters().add(methodDeclarationMetaModel.bodyPropertyMetaModel); - methodDeclarationMetaModel.getConstructorParameters().add(methodDeclarationMetaModel.receiverParameterPropertyMetaModel); + methodDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.receiverParameterPropertyMetaModel); parameterMetaModel.getConstructorParameters().add(parameterMetaModel.modifiersPropertyMetaModel); parameterMetaModel.getConstructorParameters().add(parameterMetaModel.annotationsPropertyMetaModel); parameterMetaModel.getConstructorParameters().add(parameterMetaModel.typePropertyMetaModel); @@ -365,6 +367,8 @@ public final class JavaParserMetaModel { callableDeclarationMetaModel.getDeclaredPropertyMetaModels().add(callableDeclarationMetaModel.namePropertyMetaModel); callableDeclarationMetaModel.parametersPropertyMetaModel = new PropertyMetaModel(callableDeclarationMetaModel, "parameters", com.github.javaparser.ast.body.Parameter.class, Optional.of(parameterMetaModel), false, false, true, false, false); callableDeclarationMetaModel.getDeclaredPropertyMetaModels().add(callableDeclarationMetaModel.parametersPropertyMetaModel); + callableDeclarationMetaModel.receiverParameterPropertyMetaModel = new PropertyMetaModel(callableDeclarationMetaModel, "receiverParameter", com.github.javaparser.ast.body.ReceiverParameter.class, Optional.of(receiverParameterMetaModel), true, false, false, false, false); + callableDeclarationMetaModel.getDeclaredPropertyMetaModels().add(callableDeclarationMetaModel.receiverParameterPropertyMetaModel); callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel = new PropertyMetaModel(callableDeclarationMetaModel, "thrownExceptions", com.github.javaparser.ast.type.ReferenceType.class, Optional.of(referenceTypeMetaModel), false, false, true, false, false); callableDeclarationMetaModel.getDeclaredPropertyMetaModels().add(callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel); callableDeclarationMetaModel.typeParametersPropertyMetaModel = new PropertyMetaModel(callableDeclarationMetaModel, "typeParameters", com.github.javaparser.ast.type.TypeParameter.class, Optional.of(typeParameterMetaModel), false, false, true, false, false); @@ -445,8 +449,6 @@ public final class JavaParserMetaModel { initializerDeclarationMetaModel.getDeclaredPropertyMetaModels().add(initializerDeclarationMetaModel.isStaticPropertyMetaModel); methodDeclarationMetaModel.bodyPropertyMetaModel = new PropertyMetaModel(methodDeclarationMetaModel, "body", com.github.javaparser.ast.stmt.BlockStmt.class, Optional.of(blockStmtMetaModel), true, false, false, false, false); methodDeclarationMetaModel.getDeclaredPropertyMetaModels().add(methodDeclarationMetaModel.bodyPropertyMetaModel); - methodDeclarationMetaModel.receiverParameterPropertyMetaModel = new PropertyMetaModel(methodDeclarationMetaModel, "receiverParameter", com.github.javaparser.ast.body.ReceiverParameter.class, Optional.of(receiverParameterMetaModel), true, false, false, false, false); - methodDeclarationMetaModel.getDeclaredPropertyMetaModels().add(methodDeclarationMetaModel.receiverParameterPropertyMetaModel); methodDeclarationMetaModel.typePropertyMetaModel = new PropertyMetaModel(methodDeclarationMetaModel, "type", com.github.javaparser.ast.type.Type.class, Optional.of(typeMetaModel), false, false, false, false, false); methodDeclarationMetaModel.getDeclaredPropertyMetaModels().add(methodDeclarationMetaModel.typePropertyMetaModel); parameterMetaModel.annotationsPropertyMetaModel = new PropertyMetaModel(parameterMetaModel, "annotations", com.github.javaparser.ast.expr.AnnotationExpr.class, Optional.of(annotationExprMetaModel), false, false, true, false, false); diff --git a/javaparser-core/src/main/java/com/github/javaparser/metamodel/MethodDeclarationMetaModel.java b/javaparser-core/src/main/java/com/github/javaparser/metamodel/MethodDeclarationMetaModel.java index 8378bd9aa..74aaeae69 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/metamodel/MethodDeclarationMetaModel.java +++ b/javaparser-core/src/main/java/com/github/javaparser/metamodel/MethodDeclarationMetaModel.java @@ -10,7 +10,5 @@ public class MethodDeclarationMetaModel extends CallableDeclarationMetaModel { public PropertyMetaModel bodyPropertyMetaModel; - public PropertyMetaModel receiverParameterPropertyMetaModel; - public PropertyMetaModel typePropertyMetaModel; } -- cgit v1.2.3