aboutsummaryrefslogtreecommitdiff
path: root/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes
diff options
context:
space:
mode:
authorDanny van Bruggen <danny.van.bruggen@kvk.nl>2017-01-31 13:24:24 +0100
committerDanny van Bruggen <danny.van.bruggen@kvk.nl>2017-01-31 13:24:24 +0100
commitaa8b2a5f421bb49090f17e9e98e4e77f93d240c4 (patch)
treed93dfb353f035fc4ae27b9091bc5369847203a0d /javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes
parentee8a12751847f6238e566fca9542129446c15258 (diff)
downloadjavaparser-aa8b2a5f421bb49090f17e9e98e4e77f93d240c4.tar.gz
Clean up a bunch of builder methods
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithArguments.java5
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithExpression.java6
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithMembers.java50
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithOptionalScope.java2
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java31
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithThrownExceptions.java4
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithType.java4
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithTypeArguments.java5
8 files changed, 78 insertions, 29 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithArguments.java b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithArguments.java
index 02f73ed45..702707ca1 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithArguments.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithArguments.java
@@ -24,7 +24,8 @@ package com.github.javaparser.ast.nodeTypes;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.expr.Expression;
-import com.github.javaparser.ast.expr.NameExpr;
+
+import static com.github.javaparser.JavaParser.parseExpression;
/**
* A node with arguments.
@@ -40,7 +41,7 @@ public interface NodeWithArguments<N extends Node> {
@SuppressWarnings("unchecked")
default N addArgument(String arg) {
- return addArgument(new NameExpr(arg));
+ return addArgument(parseExpression(arg));
}
@SuppressWarnings("unchecked")
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithExpression.java b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithExpression.java
index 15ebd1e8d..3a1dd712f 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithExpression.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithExpression.java
@@ -24,6 +24,8 @@ package com.github.javaparser.ast.nodeTypes;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.expr.Expression;
+import static com.github.javaparser.JavaParser.parseExpression;
+
/**
* A node that has an expression in it.
*/
@@ -31,4 +33,8 @@ public interface NodeWithExpression<N extends Node> {
Expression getExpression();
N setExpression(Expression expression);
+
+ default N setExpression(String expression) {
+ return setExpression(parseExpression(expression));
+ }
}
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithMembers.java b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithMembers.java
index df228ebba..456b8a249 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithMembers.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithMembers.java
@@ -232,14 +232,14 @@ public interface NodeWithMembers<N extends Node> {
* Try to find a {@link MethodDeclaration} by its name
*
* @param name the name of the method
- * @return the methods found (multiple in case of polymorphism)
+ * @return the methods found (multiple in case of overloading)
*/
default List<MethodDeclaration> getMethodsByName(String name) {
- return getMembers().stream()
- .filter(m -> m instanceof MethodDeclaration && ((MethodDeclaration) m).getNameAsString().equals(name))
- .map(m -> (MethodDeclaration) m).collect(toList());
+ return unmodifiableList(getMethods().stream()
+ .filter(m -> m.getNameAsString().equals(name))
+ .map(m -> m).collect(toList()));
}
-
+
/**
* Find all methods in the members of this node.
*
@@ -257,14 +257,25 @@ public interface NodeWithMembers<N extends Node> {
*
* @param paramTypes the types of parameters like "Map&lt;Integer,String&gt;","int" to match<br> void
* foo(Map&lt;Integer,String&gt; myMap,int number)
- * @return the methods found (multiple in case of polymorphism)
+ * @return the methods found (multiple in case of overloading)
*/
default List<MethodDeclaration> getMethodsByParameterTypes(String... paramTypes) {
- return getMembers().stream()
- .filter(m -> m instanceof MethodDeclaration
- && ((MethodDeclaration) m).getParameters().stream().map(p -> p.getType().toString())
- .collect(toSet()).equals(Stream.of(paramTypes).collect(toSet())))
- .map(m -> (MethodDeclaration) m).collect(toList());
+ return unmodifiableList(getMethods().stream()
+ .filter(m -> m.hasParametersOfType(paramTypes))
+ .map(m -> m).collect(toList()));
+ }
+
+ /**
+ * Try to find {@link MethodDeclaration}s by their name and parameters types
+ *
+ * @param paramTypes the types of parameters like "Map&lt;Integer,String&gt;","int" to match<br> void
+ * foo(Map&lt;Integer,String&gt; myMap,int number)
+ * @return the methods found (multiple in case of overloading)
+ */
+ default List<MethodDeclaration> getMethodsBySignature(String name, String... paramTypes) {
+ return unmodifiableList(getMethodsByName(name).stream()
+ .filter(m -> m.hasParametersOfType(paramTypes))
+ .map(m -> m).collect(toList()));
}
/**
@@ -272,15 +283,12 @@ public interface NodeWithMembers<N extends Node> {
*
* @param paramTypes the types of parameters like "Map&lt;Integer,String&gt;","int" to match<br> void
* foo(Map&lt;Integer,String&gt; myMap,int number)
- * @return the methods found (multiple in case of polymorphism)
+ * @return the methods found (multiple in case of overloading)
*/
default List<MethodDeclaration> getMethodsByParameterTypes(Class<?>... paramTypes) {
- return getMembers().stream()
- .filter(m -> m instanceof MethodDeclaration
- && ((MethodDeclaration) m).getParameters().stream().map(p -> p.getType().toString())
- .collect(toSet())
- .equals(Stream.of(paramTypes).map(Class::getSimpleName).collect(toSet())))
- .map(m -> (MethodDeclaration) m).collect(toList());
+ return unmodifiableList(getMethods().stream()
+ .filter(m -> m.hasParametersOfType(paramTypes))
+ .collect(toList()));
}
/**
@@ -291,10 +299,12 @@ public interface NodeWithMembers<N extends Node> {
*/
default Optional<FieldDeclaration> getFieldByName(String name) {
return getMembers().stream()
- .filter(m -> m instanceof FieldDeclaration && ((FieldDeclaration) m).getVariables().stream()
+ .filter(m -> m instanceof FieldDeclaration)
+ .map(f -> (FieldDeclaration) f)
+ .filter(f -> f.getVariables().stream()
.anyMatch(var -> var.getNameAsString().equals(name)))
.findFirst()
- .map(f -> (FieldDeclaration) f);
+ .map(f -> f);
}
/**
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithOptionalScope.java b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithOptionalScope.java
index f950154a9..d7dd88033 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithOptionalScope.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithOptionalScope.java
@@ -34,7 +34,7 @@ public interface NodeWithOptionalScope<N extends Node> {
Optional<Expression> getScope();
- N setScope(final Expression scope);
+ N setScope(Expression scope);
/**
* Removes the scope by calling {@link #setScope} with null.
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java
index d780e58bb..311393605 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java
@@ -28,6 +28,9 @@ import com.github.javaparser.ast.type.ClassOrInterfaceType;
import com.github.javaparser.ast.type.Type;
import java.util.Optional;
+import java.util.stream.Stream;
+
+import static java.util.stream.Collectors.toSet;
public interface NodeWithParameters<N extends Node> {
NodeList<Parameter> getParameters();
@@ -126,4 +129,32 @@ public interface NodeWithParameters<N extends Node> {
return getParameters().stream()
.filter(p -> p.getType().toString().equals(type.getSimpleName())).findFirst();
}
+
+ /**
+ * Check if the parameters have certain types.
+ *
+ * @param paramTypes the types of parameters like "Map&lt;Integer,String&gt;","int" to match<br> void
+ * foo(Map&lt;Integer,String&gt; myMap,int number)
+ * @return true if all parameters match
+ */
+ default boolean hasParametersOfType(String... paramTypes) {
+ return getParameters().stream()
+ .map(p -> p.getType().toString())
+ .collect(toSet())
+ .equals(Stream.of(paramTypes).collect(toSet()));
+ }
+
+ /**
+ * Check if the parameters have certain types. Note that this is a match in SimpleName, so "java.awt.List" and
+ * "java.util.List" are identical to this algorithm.
+ *
+ * @param paramTypes the types of parameters like "Map&lt;Integer,String&gt;","int" to match<br> void
+ * foo(Map&lt;Integer,String&gt; myMap,int number)
+ * @return true if all parameters match
+ */
+ default boolean hasParametersOfType(Class<?>... paramTypes) {
+ return getParameters().stream().map(p -> p.getType().toString())
+ .collect(toSet())
+ .equals(Stream.of(paramTypes).map(Class::getSimpleName).collect(toSet()));
+ }
}
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithThrownExceptions.java b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithThrownExceptions.java
index 280efdd36..0ea38690c 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithThrownExceptions.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithThrownExceptions.java
@@ -34,6 +34,8 @@ public interface NodeWithThrownExceptions<N extends Node> {
NodeList<ReferenceType> getThrownExceptions();
+ void tryAddImportToParentCompilationUnit(Class<?> clazz);
+
default ReferenceType getThrownException(int i) {
return getThrownExceptions().get(i);
}
@@ -58,7 +60,7 @@ public interface NodeWithThrownExceptions<N extends Node> {
* @return this
*/
default N addThrownException(Class<? extends Throwable> clazz) {
- ((Node) this).tryAddImportToParentCompilationUnit(clazz);
+ tryAddImportToParentCompilationUnit(clazz);
return addThrownException(new ClassOrInterfaceType(clazz.getSimpleName()));
}
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithType.java
index bd7de7e53..de9b356ec 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithType.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithType.java
@@ -52,6 +52,8 @@ public interface NodeWithType<N extends Node, T extends Type> {
*/
N setType(T type);
+ void tryAddImportToParentCompilationUnit(Class<?> clazz);
+
/**
* Sets this type to this class and try to import it to the {@link CompilationUnit} if needed
*
@@ -60,7 +62,7 @@ public interface NodeWithType<N extends Node, T extends Type> {
*/
@SuppressWarnings("unchecked")
default N setType(Class<?> typeClass) {
- ((Node) this).tryAddImportToParentCompilationUnit(typeClass);
+ tryAddImportToParentCompilationUnit(typeClass);
return setType((T) new ClassOrInterfaceType(typeClass.getSimpleName()));
}
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithTypeArguments.java b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithTypeArguments.java
index 5a6745cd5..f451f61c1 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithTypeArguments.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithTypeArguments.java
@@ -55,10 +55,7 @@ public interface NodeWithTypeArguments<N extends Node> {
* @return whether the type arguments look like &lt;>.
*/
default boolean isUsingDiamondOperator() {
- if (!getTypeArguments().isPresent()) {
- return false;
- }
- return getTypeArguments().get().isEmpty();
+ return getTypeArguments().isPresent() && getTypeArguments().get().isEmpty();
}
/**