diff options
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model')
3 files changed, 41 insertions, 15 deletions
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/FieldRef.java b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/FieldRef.java index b6df4f2..1504a0b 100644 --- a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/FieldRef.java +++ b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/FieldRef.java @@ -42,7 +42,8 @@ public class FieldRef implements Comparable<FieldRef> { return name.compareTo(o.name); } - public void value(String value) { + public FieldRef value(String value) { this.value = value; + return this; } } diff --git a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Imports.java b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Imports.java index 9ed6097..c2e2a26 100644 --- a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Imports.java +++ b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Imports.java @@ -18,6 +18,12 @@ public class Imports { } public TypeRef add(TypeRef klass) { + // TODO: implement properly + if (true) { + imports.add(klass); + return klass; + } + String fqName = klass.fqName; String name = klass.toString(); for (TypeRef i : imports) { @@ -32,7 +38,7 @@ public class Imports { } } - TypeRef ref = new TypeRef(fqName, name); + TypeRef ref = new TypeRef(fqName, name, klass.array, klass.args); imports.add(ref); return ref; @@ -44,7 +50,7 @@ public class Imports { if (i.isPrimitive() || i.inUnnamedPackage()) { continue; } - body.add("import " + i.fqName + ";"); + body.add("import " + i.importName() + ";"); } if (!imports.isEmpty()) { body.add(""); 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) { |