diff options
author | Danny van Bruggen <danny.van.bruggen@kvk.nl> | 2017-01-31 13:24:24 +0100 |
---|---|---|
committer | Danny van Bruggen <danny.van.bruggen@kvk.nl> | 2017-01-31 13:24:24 +0100 |
commit | aa8b2a5f421bb49090f17e9e98e4e77f93d240c4 (patch) | |
tree | d93dfb353f035fc4ae27b9091bc5369847203a0d /javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes | |
parent | ee8a12751847f6238e566fca9542129446c15258 (diff) | |
download | javaparser-aa8b2a5f421bb49090f17e9e98e4e77f93d240c4.tar.gz |
Clean up a bunch of builder methods
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes')
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<Integer,String>","int" to match<br> void
* foo(Map<Integer,String> 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<Integer,String>","int" to match<br> void
+ * foo(Map<Integer,String> 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<Integer,String>","int" to match<br> void
* foo(Map<Integer,String> 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<Integer,String>","int" to match<br> void
+ * foo(Map<Integer,String> 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<Integer,String>","int" to match<br> void
+ * foo(Map<Integer,String> 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 <>. */ default boolean isUsingDiamondOperator() { - if (!getTypeArguments().isPresent()) { - return false; - } - return getTypeArguments().get().isEmpty(); + return getTypeArguments().isPresent() && getTypeArguments().get().isEmpty(); } /** |