aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-core/src/main
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2017-04-14 15:43:20 +0200
committerDanny van Bruggen <hexagonaal@gmail.com>2017-04-14 15:43:20 +0200
commit7cd83c2e73deb47d79e71cc6afc3eb4b613302d1 (patch)
tree3acd7ed0094034c2cd57ce84573c824b555fecf4 /javaparser-core/src/main
parentfb5ace2780cb770721de30672ba3df6210e1dfe2 (diff)
downloadplatform_external_javaparser-7cd83c2e73deb47d79e71cc6afc3eb4b613302d1.tar.gz
platform_external_javaparser-7cd83c2e73deb47d79e71cc6afc3eb4b613302d1.tar.bz2
platform_external_javaparser-7cd83c2e73deb47d79e71cc6afc3eb4b613302d1.zip
* Make "asString" methods for types
* Strip signature types of annotations and generics
Diffstat (limited to 'javaparser-core/src/main')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java5
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/body/CallableDeclaration.java38
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/expr/SimpleName.java4
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java15
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/ClassOrInterfaceType.java21
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/IntersectionType.java16
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/PrimitiveType.java1
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/Type.java2
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/TypeParameter.java11
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/UnionType.java7
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/UnknownType.java5
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/VoidType.java5
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/WildcardType.java19
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/utils/SeparatedItemStringBuilder.java1
14 files changed, 128 insertions, 22 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java b/javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java
index adc7563a8..6cbd8556b 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/NodeList.java
@@ -452,4 +452,9 @@ public class NodeList<N extends Node> implements List<N>, Iterable<N>, HasParent
public boolean isNonEmpty() {
return !isEmpty();
}
+
+ public void ifNonEmpty(Consumer<? super NodeList<N>> consumer) {
+ if (isNonEmpty())
+ consumer.accept(this);
+ }
}
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 2e9c06fe0..8e6d7e1f0 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
@@ -26,6 +26,8 @@ import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.expr.AnnotationExpr;
import com.github.javaparser.ast.expr.SimpleName;
+import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
+import com.github.javaparser.ast.nodeTypes.NodeWithTypeArguments;
import com.github.javaparser.ast.observer.ObservableProperty;
import com.github.javaparser.ast.type.ArrayType;
import com.github.javaparser.ast.type.ReferenceType;
@@ -34,10 +36,13 @@ import com.github.javaparser.ast.type.TypeParameter;
import com.github.javaparser.ast.visitor.CloneVisitor;
import com.github.javaparser.metamodel.CallableDeclarationMetaModel;
import com.github.javaparser.metamodel.JavaParserMetaModel;
+
import java.util.Arrays;
import java.util.EnumSet;
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;
/**
@@ -215,12 +220,10 @@ public abstract class CallableDeclaration<T extends Node> extends BodyDeclaratio
* this will fail in some cases. (java.util.String != String for example, and generics are not taken into account.)
*/
public static class Signature {
-
private final String name;
-
private final List<Type> parameterTypes;
- public Signature(String name, List<Type> parameterTypes) {
+ private Signature(String name, List<Type> parameterTypes) {
this.name = name;
this.parameterTypes = parameterTypes;
}
@@ -253,10 +256,37 @@ public abstract class CallableDeclaration<T extends Node> extends BodyDeclaratio
result = 31 * result + parameterTypes.hashCode();
return result;
}
+
+ public String asString() {
+ return parameterTypes.stream().map(Type::asString).collect(joining(", ", name + "(", ")"));
+ }
+
+ @Override
+ public String toString() {
+ return asString();
+ }
}
public Signature getSignature() {
- return new Signature(getName().getIdentifier(), getParameters().stream().map(this::getTypeWithVarargsAsArray).collect(toList()));
+ return new Signature(getName().getIdentifier(), getParameters().stream()
+ .map(this::getTypeWithVarargsAsArray)
+ .map(this::stripGenerics)
+ .map(this::stripAnnotations)
+ .collect(toList()));
+ }
+
+ private Type stripAnnotations(Type type) {
+ if (type instanceof NodeWithAnnotations) {
+ ((NodeWithAnnotations) type).setAnnotations(new NodeList<>());
+ }
+ return type;
+ }
+
+ private Type stripGenerics(Type type) {
+ if (type instanceof NodeWithTypeArguments) {
+ ((NodeWithTypeArguments) type).setTypeArguments((NodeList<Type>) null);
+ }
+ return type;
}
private Type getTypeWithVarargsAsArray(Parameter p) {
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 c76072401..44b24cbda 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
@@ -88,6 +88,10 @@ public class SimpleName extends Node implements NodeWithIdentifier<SimpleName> {
return false;
return super.remove(node);
}
+
+ public String asString() {
+ return identifier;
+ }
@Override
public SimpleName clone() {
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 9111a729b..ac26028c7 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
@@ -22,23 +22,25 @@ package com.github.javaparser.ast.type;
import com.github.javaparser.Range;
import com.github.javaparser.ast.AllFieldsConstructor;
+import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.expr.AnnotationExpr;
import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
import com.github.javaparser.ast.observer.ObservableProperty;
+import com.github.javaparser.ast.visitor.CloneVisitor;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;
+import com.github.javaparser.metamodel.ArrayTypeMetaModel;
+import com.github.javaparser.metamodel.JavaParserMetaModel;
import com.github.javaparser.utils.Pair;
+
import java.util.ArrayList;
import java.util.Arrays;
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;
-import com.github.javaparser.ast.visitor.CloneVisitor;
-import com.github.javaparser.metamodel.ArrayTypeMetaModel;
-import com.github.javaparser.metamodel.JavaParserMetaModel;
/**
* To indicate that a type is an array, it gets wrapped in an ArrayType for every array level it has.
@@ -179,6 +181,11 @@ public class ArrayType extends ReferenceType implements NodeWithAnnotations<Arra
}
@Override
+ public String asString() {
+ return componentType.asString() + "[]";
+ }
+
+ @Override
public ArrayType clone() {
return (ArrayType) accept(new CloneVisitor(), null);
}
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 aef700f84..78f28c57f 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
@@ -22,6 +22,7 @@ package com.github.javaparser.ast.type;
import com.github.javaparser.Range;
import com.github.javaparser.ast.AllFieldsConstructor;
+import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.expr.AnnotationExpr;
import com.github.javaparser.ast.expr.SimpleName;
@@ -29,16 +30,18 @@ import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
import com.github.javaparser.ast.nodeTypes.NodeWithSimpleName;
import com.github.javaparser.ast.nodeTypes.NodeWithTypeArguments;
import com.github.javaparser.ast.observer.ObservableProperty;
+import com.github.javaparser.ast.visitor.CloneVisitor;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;
+import com.github.javaparser.metamodel.ClassOrInterfaceTypeMetaModel;
+import com.github.javaparser.metamodel.JavaParserMetaModel;
+
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;
-import com.github.javaparser.ast.visitor.CloneVisitor;
-import com.github.javaparser.metamodel.ClassOrInterfaceTypeMetaModel;
-import com.github.javaparser.metamodel.JavaParserMetaModel;
+import static java.util.stream.Collectors.joining;
/**
* A class or an interface type. <br/><code>Object</code> <br/><code>HashMap&lt;String, String></code>
@@ -201,6 +204,16 @@ public final class ClassOrInterfaceType extends ReferenceType implements NodeWit
return super.remove(node);
}
+ @Override
+ public String asString() {
+ StringBuilder str = new StringBuilder();
+ getScope().ifPresent(s -> str.append(s.asString()).append("."));
+ str.append(name.asString());
+
+ getTypeArguments().ifPresent(ta -> str.append(ta.stream().map(Type::asString).collect(joining(",", "<", ">"))));
+ return str.toString();
+ }
+
public ClassOrInterfaceType removeScope() {
return setScope((ClassOrInterfaceType) null);
}
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 56ce3b57c..6e609c1a0 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
@@ -22,19 +22,22 @@ package com.github.javaparser.ast.type;
import com.github.javaparser.Range;
import com.github.javaparser.ast.AllFieldsConstructor;
+import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.expr.AnnotationExpr;
import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
import com.github.javaparser.ast.observer.ObservableProperty;
+import com.github.javaparser.ast.visitor.CloneVisitor;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;
+import com.github.javaparser.metamodel.IntersectionTypeMetaModel;
+import com.github.javaparser.metamodel.JavaParserMetaModel;
+
import java.util.Arrays;
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;
-import com.github.javaparser.metamodel.IntersectionTypeMetaModel;
-import com.github.javaparser.metamodel.JavaParserMetaModel;
+import static java.util.stream.Collectors.joining;
/**
* Represents a set of types. A given value of this type has to be assignable to at all of the element types.
@@ -121,4 +124,9 @@ public class IntersectionType extends Type implements NodeWithAnnotations<Inters
public IntersectionTypeMetaModel getMetaModel() {
return JavaParserMetaModel.intersectionTypeMetaModel;
}
+
+ @Override
+ public String asString() {
+ return elements.stream().map(Type::asString).collect(joining("&"));
+ }
}
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 74b9db401..1eea75ca1 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
@@ -153,6 +153,7 @@ public final class PrimitiveType extends Type implements NodeWithAnnotations<Pri
return this;
}
+ @Override
public String asString() {
return type.asString();
}
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 7eb94f9fe..2f70f5f66 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
@@ -98,6 +98,8 @@ public abstract class Type extends Node {
return super.remove(node);
}
+ public abstract String asString();
+
@Override
public Type clone() {
return (Type) accept(new CloneVisitor(), null);
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 5bb2800e2..90f2db6a4 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
@@ -31,8 +31,12 @@ import com.github.javaparser.ast.observer.ObservableProperty;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;
import java.util.Arrays;
+import java.util.Iterator;
import java.util.List;
import static com.github.javaparser.utils.Utils.assertNotNull;
+import static com.github.javaparser.utils.Utils.isNullOrEmpty;
+import static java.util.stream.Collectors.joining;
+
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.visitor.CloneVisitor;
import com.github.javaparser.metamodel.TypeParameterMetaModel;
@@ -174,4 +178,11 @@ public final class TypeParameter extends ReferenceType<TypeParameter> implements
public TypeParameterMetaModel getMetaModel() {
return JavaParserMetaModel.typeParameterMetaModel;
}
+
+ @Override
+ public String asString() {
+ StringBuilder str = new StringBuilder(getNameAsString());
+ getTypeBound().ifNonEmpty(l -> str.append(l.stream().map(ClassOrInterfaceType::asString).collect(joining("&", " extends ", ""))));
+ return str.toString();
+ }
}
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 db4048952..09a8d8aef 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,8 @@ import com.github.javaparser.ast.visitor.VoidVisitor;
import java.util.Arrays;
import java.util.List;
import static com.github.javaparser.utils.Utils.assertNotNull;
+import static java.util.stream.Collectors.joining;
+
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.visitor.CloneVisitor;
import com.github.javaparser.metamodel.UnionTypeMetaModel;
@@ -110,6 +112,11 @@ public class UnionType extends Type implements NodeWithAnnotations<UnionType> {
}
@Override
+ public String asString() {
+ return elements.stream().map(Type::asString).collect(joining("|"));
+ }
+
+ @Override
public UnionType clone() {
return (UnionType) accept(new CloneVisitor(), null);
}
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 39c1f7630..a36a44cf8 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
@@ -84,6 +84,11 @@ public final class UnknownType extends Type {
}
@Override
+ public String asString() {
+ return "";
+ }
+
+ @Override
public UnknownType clone() {
return (UnknownType) accept(new CloneVisitor(), null);
}
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 19674031a..92e378ca4 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
@@ -80,6 +80,11 @@ public final class VoidType extends Type implements NodeWithAnnotations<VoidType
}
@Override
+ public String asString() {
+ return "void";
+ }
+
+ @Override
public VoidType clone() {
return (VoidType) accept(new CloneVisitor(), null);
}
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 61c532041..430c38db0 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
@@ -22,19 +22,20 @@ package com.github.javaparser.ast.type;
import com.github.javaparser.Range;
import com.github.javaparser.ast.AllFieldsConstructor;
+import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.expr.AnnotationExpr;
import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
import com.github.javaparser.ast.observer.ObservableProperty;
+import com.github.javaparser.ast.visitor.CloneVisitor;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;
+import com.github.javaparser.metamodel.JavaParserMetaModel;
+import com.github.javaparser.metamodel.WildcardTypeMetaModel;
+
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
-import com.github.javaparser.ast.Node;
-import com.github.javaparser.ast.visitor.CloneVisitor;
-import com.github.javaparser.metamodel.WildcardTypeMetaModel;
-import com.github.javaparser.metamodel.JavaParserMetaModel;
/**
* A wildcard type argument.
@@ -120,7 +121,6 @@ public final class WildcardType extends Type implements NodeWithAnnotations<Wild
*
* @param extendedType the extends, can be null
* @return this, the WildcardType
- *
* @deprecated use setExtendedType instead,
*/
@Deprecated
@@ -151,7 +151,6 @@ public final class WildcardType extends Type implements NodeWithAnnotations<Wild
*
* @param superType the super, can be null
* @return this, the WildcardType
- *
* @deprecated use setSuperType instead
*/
@Deprecated
@@ -188,6 +187,14 @@ public final class WildcardType extends Type implements NodeWithAnnotations<Wild
return super.remove(node);
}
+ @Override
+ public String asString() {
+ StringBuilder str = new StringBuilder("?");
+ getExtendedType().ifPresent(t -> str.append(" extends ").append(t.asString()));
+ getSuperType().ifPresent(t -> str.append(" super ").append(t.asString()));
+ return str.toString();
+ }
+
@Deprecated
public WildcardType removeExtendedTypes() {
return removeExtendedType();
diff --git a/javaparser-core/src/main/java/com/github/javaparser/utils/SeparatedItemStringBuilder.java b/javaparser-core/src/main/java/com/github/javaparser/utils/SeparatedItemStringBuilder.java
index 096e9ca5f..3cef7237c 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/utils/SeparatedItemStringBuilder.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/utils/SeparatedItemStringBuilder.java
@@ -3,6 +3,7 @@ package com.github.javaparser.utils;
/**
* Builds a string containing a list of items with a prefix, a postfix, and a separator.
* <br/>Example: (1,2,3) which has prefix "(", separator ",", postfix ")" and the items 1 through 3.
+ * <p/>Java 8 offers the very nice Collectors.joining(String, String, String) which does the same thing.
*/
public class SeparatedItemStringBuilder {
private final String separator;