diff options
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java')
-rw-r--r-- | container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java new file mode 100644 index 0000000..43800ce --- /dev/null +++ b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/Constructor.java @@ -0,0 +1,38 @@ +package io.trygvis.container.compiler.model; + +import java.util.ArrayList; +import java.util.List; + +import static org.springframework.util.StringUtils.collectionToDelimitedString; + +public class Constructor { + + private final ClassG g; + private final Parameters parameters; + private final List<String> body; + + public Constructor(ClassG g, Parameters parameters, List<String> body) { + this.g = g; + this.parameters = parameters; + this.body = body; + } + + public List<String> write() { + List<String> body = new ArrayList<>(); + + List<String> ps = new ArrayList<>(); + for (ParameterRef p : parameters) { + ps.add(p.klass.name + " " + p.name); + } + + String params = collectionToDelimitedString(ps, ", "); + + body.add(" public " + g.className + "(" + params + ") {"); + for (String s : this.body) { + body.add(" " + s); + } + body.add(" }"); + + return body; + } +} |