summaryrefslogtreecommitdiffstats
path: root/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-11-30 14:47:38 -0800
committerJon Bratseth <bratseth@oath.com>2018-11-30 14:47:38 -0800
commitcf6da96964eb010e79117a680199916d946dfc22 (patch)
tree665fb956723c3abd141d7d1b519a92fced83bf3d /configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
parentc0513ac34d2c438e9f97e699659855029e1f06e8 (diff)
Add build() method to config builders
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.java29
1 files changed, 19 insertions, 10 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 bf3fc2902a1..7789a2b2cfb 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
@@ -21,8 +21,8 @@ import static java.util.Arrays.stream;
* @author gjoranv
* @author ollivir
*/
-
public class BuilderGenerator {
+
public static String getBuilder(InnerCNode node) {
return getDeclaration(node) + "\n" + //
indentCode(INDENTATION, getUninitializedScalars(node) + "\n\n" + //
@@ -31,7 +31,8 @@ public class BuilderGenerator {
getBuilderConstructors(node, nodeClass(node)) + "\n\n" + //
getOverrideMethod(node) + "\n\n" + //
getBuilderSetters(node) + "\n" + //
- getSpecialRootBuilderCode(node))
+ getSpecialRootBuilderCode(node) + "\n" + //
+ getBuildMethod(node) + "\n") //
+ "}";
}
@@ -45,6 +46,12 @@ public class BuilderGenerator {
return (node.getParent() == null) ? "\n" + getDispatchCode() + "\n" : "";
}
+ private static String getBuildMethod(InnerCNode node) {
+ return "public " + nodeClass(node) + " build() {\n" +
+ " return new " + nodeClass(node) + "(this);\n" +
+ "}\n";
+ }
+
private static String getDispatchCode() {
// Use full path to @Override, as users are free to define an inner node called
// 'override'. (summarymap.def does)
@@ -119,6 +126,7 @@ public class BuilderGenerator {
}
private static class BuilderSetters {
+
private static String structSetter(InnerCNode n) {
return "public Builder " + n.getName() + "(" + builderType(n) + " " + INTERNAL_PREFIX + "builder) {\n" + //
" " + n.getName() + " = " + INTERNAL_PREFIX + "builder;\n" + //
@@ -227,9 +235,9 @@ public class BuilderGenerator {
}
private static String setBuilderValueFromConfig(CNode child, CNode node) {
- final String name = child.getName();
- final boolean isArray = child.isArray;
- final boolean isMap = child.isMap;
+ String name = child.getName();
+ boolean isArray = child.isArray;
+ boolean isMap = child.isMap;
if (child instanceof FileLeaf && isArray) {
return name + "(" + userDataType(child) + ".toValues(config." + name + "()));";
@@ -255,7 +263,7 @@ public class BuilderGenerator {
}
private static String setInnerArrayBuildersFromConfig(InnerCNode innerArr, CNode node) {
- final String elemName = createUniqueSymbol(node, innerArr.getName());
+ String elemName = createUniqueSymbol(node, innerArr.getName());
return "for (" + userDataType(innerArr) + " " + elemName + " : config." + innerArr.getName() + "()) {\n" + //
" " + innerArr.getName() + "(new " + builderType(innerArr) + "(" + elemName + "));\n" + //
@@ -263,7 +271,7 @@ public class BuilderGenerator {
}
private static String setInnerMapBuildersFromConfig(InnerCNode innerMap) {
- final String entryName = INTERNAL_PREFIX + "entry";
+ String entryName = INTERNAL_PREFIX + "entry";
return "for (Map.Entry<String, " + userDataType(innerMap) + "> " + entryName + " : config." + innerMap.getName()
+ "().entrySet()) {\n" + //
" " + innerMap.getName() + "(" + entryName + ".getKey(), new " + userDataType(innerMap) + ".Builder(" + entryName
@@ -282,7 +290,7 @@ public class BuilderGenerator {
}
private static String conditionStatement(CNode child) {
- final String superior = INTERNAL_PREFIX + "superior";
+ String superior = INTERNAL_PREFIX + "superior";
if (child.isArray) {
return "if (!" + superior + "." + child.getName() + ".isEmpty())";
@@ -314,8 +322,8 @@ public class BuilderGenerator {
}
private static String getOverrideMethod(CNode node) {
- final String superior = INTERNAL_PREFIX + "superior";
- final String method = "override";
+ String superior = INTERNAL_PREFIX + "superior";
+ String method = "override";
return "private Builder " + method + "(Builder " + superior + ") {\n" + //
indentCode(INDENTATION,
@@ -348,4 +356,5 @@ public class BuilderGenerator {
return boxedDataType(node);
}
}
+
}