diff options
Diffstat (limited to 'configgen/src/main')
4 files changed, 37 insertions, 4 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 7789a2b2cfb..b3c4d0c5ff8 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java @@ -3,6 +3,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 java.util.ArrayList; import java.util.List; @@ -169,7 +170,7 @@ public class BuilderGenerator { } private static String privateLeafNodeSetter(LeafCNode n) { - if ("String".equals(builderType(n)) || "FileReference".equals(builderType(n))) { + if ("String".equals(builderType(n)) || "FileReference".equals(builderType(n)) || "UrlReference".equals(builderType(n))) { return ""; } else { return "\n\n" + // @@ -197,7 +198,7 @@ public class BuilderGenerator { } private static String privateLeafMapSetter(CNode n) { - if ("String".equals(builderType(n)) || "FileReference".equals(builderType(n))) { + if ("String".equals(builderType(n)) || "FileReference".equals(builderType(n)) || "UrlReference".equals(builderType(n))) { return ""; } else { return "\n\n" + // @@ -219,7 +220,7 @@ public class BuilderGenerator { : ""; String bType = builderType(n); - String stringSetter = "String".equals(bType) || "FileReference".equals(bType) ? "" + String stringSetter = "String".equals(bType) || "FileReference".equals(bType) || "UrlReference".equals(bType) ? "" : String.format("\nprivate Builder %s(String %svalue) {\n" + // " return %s(%s.valueOf(%svalue));\n" + // "}", name, INTERNAL_PREFIX, name, boxedDataType(n), INTERNAL_PREFIX); @@ -251,6 +252,12 @@ public class BuilderGenerator { return name + "(" + nodeClass(child) + ".toFileReferenceMap(config." + name + "));"; } else if (child instanceof PathLeaf) { return name + "(config." + name + ".getFileReference());"; + } else if (child instanceof UrlLeaf && isArray) { + return name + "(" + nodeClass(child) + ".toUrlReferences(config." + name + "));"; + } else if (child instanceof UrlLeaf && isMap) { + return name + "(" + nodeClass(child) + ".toUrlReferenceMap(config." + name + "));"; + } else if (child instanceof UrlLeaf) { + return name + "(config." + name + ".getUrlReference());"; } else if (child instanceof LeafCNode) { return name + "(config." + name + "());"; } else if (child instanceof InnerCNode && isArray) { @@ -340,6 +347,8 @@ public class BuilderGenerator { return "String"; } else if (node instanceof PathLeaf) { return "FileReference"; + } else if (node instanceof UrlLeaf) { + return "UrlReference"; } else if (node instanceof LeafCNode && (node.isArray || node.isMap)) { return boxedDataType(node); } else { @@ -352,6 +361,8 @@ public class BuilderGenerator { return "String"; } else if (node instanceof PathLeaf) { return "FileReference"; + } else if (node instanceof UrlLeaf) { + return "UrlReference"; } else { return boxedDataType(node); } diff --git a/configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java b/configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java index f7c6267a6bb..4da546a7179 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java @@ -10,6 +10,7 @@ import com.yahoo.config.codegen.LeafCNode.LongLeaf; import com.yahoo.config.codegen.LeafCNode.PathLeaf; import com.yahoo.config.codegen.LeafCNode.ReferenceLeaf; import com.yahoo.config.codegen.LeafCNode.StringLeaf; +import com.yahoo.config.codegen.LeafCNode.UrlLeaf; import java.util.LinkedList; import java.util.List; @@ -163,12 +164,16 @@ public class ConfigGenerator { return name + " = LeafNodeVector.createFileNodeVector(builder." + name + ");"; } else if (child instanceof PathLeaf && isArray) { return name + " = LeafNodeVector.createPathNodeVector(builder." + name + ");"; + } else if (child instanceof UrlLeaf && isArray) { + return name + " = LeafNodeVector.createUrlNodeVector(builder." + name + ");"; } else if (child instanceof LeafCNode && isArray) { return name + " = new LeafNodeVector<>(builder." + name + ", new " + className + "());"; } else if (child instanceof FileLeaf && isMap) { return name + " = LeafNodeMaps.asFileNodeMap(builder." + name + ");"; } else if (child instanceof PathLeaf && isMap) { return name + " = LeafNodeMaps.asPathNodeMap(builder." + name + ");"; + } else if (child instanceof UrlLeaf && isMap) { + return name + " = LeafNodeMaps.asUrlNodeMap(builder." + name + ");"; } else if (child instanceof LeafCNode && isMap) { return name + " = LeafNodeMaps.asNodeMap(builder." + name + ", new " + className + "());"; } else if (child instanceof InnerCNode && isArray) { @@ -178,7 +183,7 @@ public class ConfigGenerator { } else if (child instanceof InnerCNode) { return name + " = new " + className + "(builder." + name + ", throwIfUninitialized);"; } else if (child instanceof LeafCNode) { - return name + " = (builder." + name + " == null) ?\n" +// + return name + " = (builder." + name + " == null) ?\n" + " new " + className + "(" + scalarDefault((LeafCNode) child) + ") : new " + className + "(builder." + name + ");"; } else { throw new IllegalStateException("Cannot create assignment for node"); // should not happen @@ -391,6 +396,8 @@ public class ConfigGenerator { return "FileNode"; } else if (node instanceof PathLeaf) { return "PathNode"; + } else if (node instanceof UrlLeaf) { + return "UrlNode"; } else if (node instanceof IntegerLeaf) { return "IntegerNode"; } else if (node instanceof LongLeaf) { @@ -417,6 +424,8 @@ public class ConfigGenerator { return "FileReference"; } else if (node instanceof PathLeaf) { return "Path"; + } else if (node instanceof UrlLeaf) { + return "File"; } else if (node instanceof IntegerLeaf) { return "int"; } else if (node instanceof LongLeaf) { diff --git a/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java b/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java index e30b59b642a..5c447191614 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java @@ -71,6 +71,7 @@ public class JavaClassBuilder implements ClassBuilder { "package " + javaPackage + ";\n" + // "\n" + // "import java.util.*;\n" + // + "import java.io.File;\n" + // "import java.nio.file.Path;\n" + // "import edu.umd.cs.findbugs.annotations.NonNull;\n" + // getImportFrameworkClasses(root.getNamespace()); diff --git a/configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java b/configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java index 7623987656a..e8dd4221f0e 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java @@ -27,6 +27,7 @@ public abstract class LeafCNode extends CNode { case "file": return new FileLeaf(parent, name); case "path": return new PathLeaf(parent, name); case "enum": return new EnumLeaf(parent, name, type.enumArray); + case "url" : return new UrlLeaf(parent, name); default: return null; } } catch (NumberFormatException e) { @@ -217,6 +218,17 @@ public abstract class LeafCNode extends CNode { } } + public static class UrlLeaf extends NoClassNoDefaultLeafCNode { + UrlLeaf(InnerCNode parent, String name) { + super(parent, name); + } + + @Override + public String getType() { + return "url"; + } + } + public static class EnumLeaf extends LeafCNode { private final String[] legalValues; |