From bd081410b1c6b0e54a4f0c45dd4fcfc0bffd8d21 Mon Sep 17 00:00:00 2001 From: Arne H Juul Date: Thu, 9 Dec 2021 14:30:07 +0000 Subject: add more convenience functions * accept lambdas for struct members and map values also --- .../com/yahoo/config/codegen/BuilderGenerator.java | 31 ++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java') 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 bbbb8676e3f..937d04b35bd 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java @@ -142,7 +142,19 @@ public class BuilderGenerator { return "public Builder " + n.getName() + "(" + builderType(n) + " " + INTERNAL_PREFIX + "builder) {\n" + // " " + n.getName() + " = " + INTERNAL_PREFIX + "builder;\n" + // " return this;\n" + // + "}\n" + // + "/**\n" + // + " * Make a new builder and run the supplied function on it before adding it to the list\n" + // + " * @param __func lambda that modifies the given builder\n" + // + " * @return this builder\n" + // + " */\n" + // + "public Builder " + n.getName() + "(java.util.function.Consumer<" + builderType(n) + "> __func) {\n" + // + " " + builderType(n) + " __inner = new " + builderType(n) +"();\n" + // + " __func.accept(__inner);\n" + // + " " + n.getName() + " = __inner;\n" + // + " return this;\n" + // "}"; + } private static String innerArraySetters(InnerCNode n) { @@ -207,8 +219,7 @@ public class BuilderGenerator { } private static String innerMapSetters(CNode n) { - return "public Builder " + n.getName() + "(String " + INTERNAL_PREFIX + "key, " + builderType(n) + " " + INTERNAL_PREFIX - + "value) {\n" + // + String r = "public Builder " + n.getName() + "(String " + INTERNAL_PREFIX + "key, " + builderType(n) + " " + INTERNAL_PREFIX + "value) {\n" + // " " + n.getName() + ".put(" + INTERNAL_PREFIX + "key, " + INTERNAL_PREFIX + "value);\n" + // " return this;\n" + // "}\n" + // @@ -217,6 +228,22 @@ public class BuilderGenerator { " " + n.getName() + ".putAll(" + INTERNAL_PREFIX + "values);\n" + // " return this;\n" + // "}"; + if (n instanceof InnerCNode) { + r = r + + "\n\n" + // + "/**\n" + // + " * Make a new builder and run the supplied function on it before using it as the value\n" + // + " * @param __func lambda that modifies the given builder\n" + // + " * @return this builder\n" + // + " */\n" + // + "public Builder " + n.getName() + "(String __key, java.util.function.Consumer<" + builderType(n) + "> __func) {\n" + // + " " + builderType(n) + " __inner = new " + builderType(n) +"();\n" + // + " __func.accept(__inner);\n" + // + " " + n.getName() + ".put(__key, __inner);\n" + // + " return this;\n" + // + "}"; + } + return r; } private static String privateLeafMapSetter(CNode n) { -- cgit v1.2.3