summaryrefslogtreecommitdiffstats
path: root/configgen/src/main/java/com/yahoo/config/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'configgen/src/main/java/com/yahoo/config/codegen')
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java17
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java11
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java1
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java12
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;