diff options
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model')
2 files changed, 27 insertions, 10 deletions
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java index 13e1b03..cf68cba 100644 --- a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java +++ b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/ClassG.java @@ -2,6 +2,7 @@ package io.trygvis.container.compiler.model; import javax.lang.model.type.TypeMirror; import java.io.PrintWriter; +import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -18,10 +19,6 @@ public class ClassG { private final List<MethodRef> methods = new ArrayList<>(); private final List<Constructor> constructors = new ArrayList<>(); -// public ClassG(String packageName, String className) { -// this(packageName, className, null); -// } - public ClassG(String packageName, String className, String extendsClass) { this.packageName = packageName; this.className = className; @@ -74,7 +71,14 @@ public class ClassG { public FieldRef addField(Class<?> klass, String name) { TypeRef type = addImport(klass); - FieldRef ref = new FieldRef(type, name); + FieldRef ref = new FieldRef(Modifier.PRIVATE | Modifier.FINAL, type, name); + fields.add(ref); + return ref; + } + + public FieldRef addPublicFinalField(Class<?> klass, String name) { + TypeRef type = addImport(klass); + FieldRef ref = new FieldRef(Modifier.PUBLIC | Modifier.FINAL, type, name); fields.add(ref); return ref; } @@ -92,8 +96,10 @@ public class ClassG { } public void write(PrintWriter writer) { - writer.println("package " + packageName + ";"); - writer.println(); + if(packageName.length() > 0) { + writer.println("package " + packageName + ";"); + writer.println(); + } for (TypeRef i : imports) { if (i.isPrimitive()) { continue; @@ -101,10 +107,13 @@ public class ClassG { writer.println("import " + i.canonicalName() + ";"); } writer.println(); - writer.println("public class " + className + " extends " + extendsClass + " {"); + + String extendsString = extendsClass == null ? "" : " extends " + extendsClass; + + writer.println("public class " + className + extendsString + " {"); for (FieldRef field : fields) { writer.println(); - writer.println(" private final " + field.klass.name + " " + field.name + ";"); + writer.println(" " + field.toJava() + ";"); } for (Constructor constructor : constructors) { 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 29a2c51..c6b81a0 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 @@ -1,14 +1,22 @@ package io.trygvis.container.compiler.model; +import java.lang.reflect.Modifier; + public class FieldRef implements Comparable<FieldRef> { + public final int modifiers; public final TypeRef klass; public final String name; - public FieldRef(TypeRef klass, String name) { + public FieldRef(int modifiers, TypeRef klass, String name) { + this.modifiers = modifiers; this.klass = klass; this.name = name; } + public String toJava() { + return Modifier.toString(modifiers) + " " + klass.name + " " + name; + } + @Override public boolean equals(Object o) { if (this == o) return true; |