aboutsummaryrefslogtreecommitdiffstats
path: root/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java')
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java17
1 files changed, 14 insertions, 3 deletions
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java b/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
index a0717a1060f..e7b6455f3e0 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
@@ -4,6 +4,7 @@ package com.yahoo.config.codegen;
import com.yahoo.config.codegen.LeafCNode.FileLeaf;
import com.yahoo.config.codegen.LeafCNode.PathLeaf;
import com.yahoo.config.codegen.LeafCNode.UrlLeaf;
+import com.yahoo.config.codegen.LeafCNode.ModelLeaf;
import java.util.ArrayList;
import java.util.List;
@@ -274,7 +275,7 @@ public class BuilderGenerator {
String type = boxedDataType(n);
if ("UrlReference".equals(bType))
type = bType;
- stringSetter = String.format("\nprivate Builder %s(String %svalue) {\n" + //
+ stringSetter = String.format("\nprivate Builder %s(String %svalue) {\n" +
" return %s(%s.valueOf(%svalue));\n" + //
"}", name, INTERNAL_PREFIX, name, type, INTERNAL_PREFIX);
}
@@ -282,9 +283,9 @@ public class BuilderGenerator {
String getNullGuard = bType.equals(boxedBuilderType(n)) ? String.format(
"\nif (%svalue == null) throw new IllegalArgumentException(\"Null value is not allowed.\");", INTERNAL_PREFIX) : "";
- return String.format("public Builder %s(%s %svalue) {%s\n" + //
+ return String.format("public Builder %s(%s %svalue) {%s\n" +
" %s = %svalue;\n" + //
- "%s", name, bType, INTERNAL_PREFIX, getNullGuard, name, INTERNAL_PREFIX, signalInitialized) + //
+ "%s", name, bType, INTERNAL_PREFIX, getNullGuard, name, INTERNAL_PREFIX, signalInitialized) +
" return this;" + "\n}\n" + stringSetter;
}
}
@@ -312,6 +313,12 @@ public class BuilderGenerator {
return name + "(" + nodeClass(child) + ".toUrlReferenceMap(config." + name + "));";
} else if (child instanceof UrlLeaf) {
return name + "(config." + name + ".getUrlReference());";
+ } else if (child instanceof ModelLeaf && isArray) {
+ return name + "(" + nodeClass(child) + ".toModelReferences(config." + name + "));";
+ } else if (child instanceof ModelLeaf && isMap) {
+ return name + "(" + nodeClass(child) + ".toModelReferenceMap(config." + name + "));";
+ } else if (child instanceof ModelLeaf) {
+ return name + "(config." + name + ".getModelReference());";
} else if (child instanceof LeafCNode) {
return name + "(config." + name + "());";
} else if (child instanceof InnerCNode && isArray) {
@@ -403,6 +410,8 @@ public class BuilderGenerator {
return "FileReference";
} else if (node instanceof UrlLeaf) {
return "UrlReference";
+ } else if (node instanceof ModelLeaf) {
+ return "ModelReference";
} else if (node instanceof LeafCNode && (node.isArray || node.isMap)) {
return boxedDataType(node);
} else {
@@ -417,6 +426,8 @@ public class BuilderGenerator {
return "FileReference";
} else if (node instanceof UrlLeaf) {
return "UrlReference";
+ } else if (node instanceof ModelLeaf) {
+ return "ModelReference";
} else {
return boxedDataType(node);
}