summaryrefslogtreecommitdiff
path: root/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java')
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java43
1 files changed, 31 insertions, 12 deletions
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java
index 9c92e73..2e679a5 100644
--- a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java
+++ b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java
@@ -37,12 +37,15 @@ public class TypeRef implements Comparable<TypeRef> {
private final boolean primitive;
+ public final boolean array;
+
public final List<TypeRef> args;
- private TypeRef(String fqName, String name, boolean primitive, List<TypeRef> args) {
+ private TypeRef(String fqName, String name, boolean primitive, boolean array, List<TypeRef> args) {
this.fqName = fqName;
this.plainName = name;
this.primitive = primitive;
+ this.array = array;
this.args = args;
int i = this.fqName.lastIndexOf('.');
@@ -58,15 +61,28 @@ public class TypeRef implements Comparable<TypeRef> {
}
public TypeRef(Class<?> klass) {
- this(klass.getCanonicalName());
+ this(fqName(klass), fqName(klass), false, klass.isArray(), Collections.<TypeRef>emptyList());
+ }
+
+ private static String fqName(Class<?> klass) {
+ String name = klass.getCanonicalName();
+ if (!klass.isArray()) {
+ return name;
+ }
+
+ return name.substring(0, name.length() - 2);
}
public TypeRef(String fqName) {
- this(fqName, fqName, false, Collections.<TypeRef>emptyList());
+ this(fqName, fqName, false, false, Collections.<TypeRef>emptyList());
}
- public TypeRef(String fqName, String name) {
- this(fqName, name, false, Collections.<TypeRef>emptyList());
+ public TypeRef(String fqName, String name, boolean array, List<TypeRef> args) {
+ this(fqName, name, false, array, args);
+ }
+
+ public TypeRef args(List<TypeRef> args) {
+ return new TypeRef(fqName, plainName, primitive, array, args);
}
public boolean isPrimitive() {
@@ -87,8 +103,8 @@ public class TypeRef implements Comparable<TypeRef> {
return fqName.substring(0, i);
}
- public TypeRef args(List<TypeRef> args) {
- return new TypeRef(fqName, plainName, false, args);
+ public String importName() {
+ return fqName;
}
public TypeRef args(TypeRef... args) {
@@ -102,7 +118,7 @@ public class TypeRef implements Comparable<TypeRef> {
TypeRef classRef = (TypeRef) o;
- return fqName.equals(classRef.fqName);
+ return fqName.equals(classRef.fqName) && array == classRef.array;
}
@Override
@@ -111,16 +127,19 @@ public class TypeRef implements Comparable<TypeRef> {
}
@Override
- public int compareTo(TypeRef o) {
+ public int compareTo(@SuppressWarnings("NullableProblems") TypeRef o) {
return fqName.compareTo(o.fqName);
}
public String toString() {
String s = plainName;
- if(args.isEmpty()) {
- return s;
+ if (!args.isEmpty()) {
+ s += "<" + join(args, ", ") + ">";
+ }
+ if (array) {
+ s += "[]";
}
- return s + "<" + join(args, ", ") + ">";
+ return s;
}
public static TypeRef find(TypeKind kind) {