summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/graph/ModelNode.java1
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java29
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/CNode.java1
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/ClassBuilder.java7
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/CodegenRuntimeException.java4
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java4
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java3
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/DefLine.java4
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/DefParser.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/DefaultValue.java1
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/InnerCNode.java10
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java10
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java38
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java1
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/MakeConfigProperties.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/NormalizedDefinition.java1
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/PropertyException.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/ReservedWords.java3
-rw-r--r--configgen/src/test/java/com/yahoo/config/codegen/JavaClassBuilderTest.java16
-rw-r--r--configgen/src/test/java/com/yahoo/config/codegen/NormalizedDefinitionTest.java1
-rw-r--r--configgen/src/test/resources/allfeatures.reference45
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/MinimalQueryInserter.java3
-rw-r--r--container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java62
30 files changed, 188 insertions, 78 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/graph/ModelNode.java b/config-model/src/main/java/com/yahoo/config/model/graph/ModelNode.java
index 9573b66c215..6e5e530d902 100644
--- a/config-model/src/main/java/com/yahoo/config/model/graph/ModelNode.java
+++ b/config-model/src/main/java/com/yahoo/config/model/graph/ModelNode.java
@@ -18,7 +18,6 @@ import java.util.*;
* Only Collection, not Collection subtypes can be used.
*
* @author Ulf Lilleengen
- * @since 5.1
*/
public class ModelNode<MODEL extends ConfigModel> implements ConfigModelInstanceFactory<MODEL> {
diff --git a/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java b/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
index 528393e4135..ae8e8fe7de5 100644
--- a/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
@@ -149,7 +149,7 @@ public class ApplicationDeployTest {
DocumentmanagerConfig.Builder b = new DocumentmanagerConfig.Builder();
model.getConfig(b, VespaModel.ROOT_CONFIGID);
//String docMan = model.getConfig("documentmanager", "").toString();
- DocumentmanagerConfig dc = new DocumentmanagerConfig(b);
+ DocumentmanagerConfig dc = b.build();
String docMan=ConfigInstance.serialize(dc).toString();
int pFlags = Pattern.MULTILINE + Pattern.DOTALL;
Pattern base = Pattern.compile(".*name.*base\\.header.*", pFlags);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java
index 71db60065aa..084cbcfdfc0 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java
@@ -180,7 +180,7 @@ public class AttributeSettingsTestCase extends SearchDefinitionTestCase {
AttributeFields attributes = new AttributeFields(getSearchWithMutables());
AttributesConfig.Builder builder = new AttributesConfig.Builder();
attributes.getConfig(builder);
- AttributesConfig cfg = new AttributesConfig(builder);
+ AttributesConfig cfg = builder.build();
assertEquals("a", cfg.attribute().get(0).name());
assertFalse(cfg.attribute().get(0).ismutable());
@@ -197,7 +197,7 @@ public class AttributeSettingsTestCase extends SearchDefinitionTestCase {
IndexingScript script = new IndexingScript(getSearchWithMutables());
IlscriptsConfig.Builder builder = new IlscriptsConfig.Builder();
script.getConfig(builder);
- IlscriptsConfig cfg = new IlscriptsConfig(builder);
+ IlscriptsConfig cfg = builder.build();
assertEquals(1, cfg.ilscript().size());
IlscriptsConfig.Ilscript ils = cfg.ilscript(0);
assertEquals("test", ils.doctype());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
index f37a39d6f93..8ad6abbbb42 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
@@ -67,7 +67,7 @@ public class InheritanceTestCase extends AbstractExportingTestCase {
builder.build();
DocumentmanagerConfig.Builder b = new DocumentmanagerConfig.Builder();
DerivedConfiguration.exportDocuments(new DocumentManager().produce(builder.getModel(), b), outDir.getPath());
- DocumentmanagerConfig dc = new DocumentmanagerConfig(b);
+ DocumentmanagerConfig dc = b.build();
assertEquals(17, dc.datatype().size());
assertNotNull(structType("child.body", dc));
DocumentmanagerConfig.Datatype.Structtype childHeader = structType("child.header", dc);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
index ba19a8312f6..17c767f4029 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
@@ -110,7 +110,7 @@ public class SummaryMapTestCase extends SearchDefinitionTestCase {
SummarymapConfig.Builder scb = new SummarymapConfig.Builder();
summaryMap.getConfig(scb);
- SummarymapConfig c = new SummarymapConfig(scb);
+ SummarymapConfig c = scb.build();
assertEquals(-1, c.defaultoutputclass());
assertEquals(c.override().size(), 6);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java
index 48032706cc0..37b49955bbf 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java
@@ -29,7 +29,7 @@ public class VsmFieldsTestCase {
VsmFields vsmFields = new VsmFields(search);
VsmfieldsConfig.Builder cfgBuilder = new VsmfieldsConfig.Builder();
vsmFields.getConfig(cfgBuilder);
- VsmfieldsConfig cfg = new VsmfieldsConfig(cfgBuilder);
+ VsmfieldsConfig cfg = cfgBuilder.build();
assertEquals(1, cfg.fieldspec().size());
VsmfieldsConfig.Fieldspec fieldSpec = cfg.fieldspec().get(0);
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);
}
}
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/CNode.java b/configgen/src/main/java/com/yahoo/config/codegen/CNode.java
index 9dc7923b71b..ea88e115530 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/CNode.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/CNode.java
@@ -174,4 +174,5 @@ public abstract class CNode {
", version='" + defVersion + '\'' +
'}';
}
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/ClassBuilder.java b/configgen/src/main/java/com/yahoo/config/codegen/ClassBuilder.java
index 720212845b0..890be3e371b 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/ClassBuilder.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/ClassBuilder.java
@@ -2,12 +2,11 @@
package com.yahoo.config.codegen;
/**
- * @author <a href="gv@yahoo-inc.com">G. Voldengen</a>
+ * @author gjoranv
*/
public interface ClassBuilder {
- /**
- * Generate config class file(s).
- */
+ /** Generate config class file(s). */
public void createConfigClasses();
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/CodegenRuntimeException.java b/configgen/src/main/java/com/yahoo/config/codegen/CodegenRuntimeException.java
index b4ca53d02db..9b32ccf8733 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/CodegenRuntimeException.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/CodegenRuntimeException.java
@@ -4,9 +4,10 @@ package com.yahoo.config.codegen;
/**
* This exception is thrown on internal errors.
*
- * @author <a href="gv@yahoo-inc.com">G. Voldengen</a>
+ * @author gjoranv
*/
public class CodegenRuntimeException extends RuntimeException {
+
public CodegenRuntimeException(String s, Throwable cause) {
super(s, cause);
}
@@ -18,4 +19,5 @@ public class CodegenRuntimeException extends RuntimeException {
public CodegenRuntimeException(String s) {
super(s);
}
+
}
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 9980cf565b1..f7c6267a6bb 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java
@@ -26,6 +26,7 @@ import static java.util.Arrays.stream;
* @author ollivir
*/
public class ConfigGenerator {
+
// TODO: don't take indent as method param - the caller should indent
public static String generateContent(String indent, InnerCNode node, boolean isOuter) {
CNode[] children = node.getChildren();
@@ -441,4 +442,5 @@ public class ConfigGenerator {
return rawType;
}
}
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java b/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java
index 995ef419f30..3f714fdd22c 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java
@@ -11,7 +11,8 @@ public class ConfiggenUtil {
/**
* Create class name from def name
- * @param defName The file name without the '.def' suffix
+ *
+ * @param defName the file name without the '.def' suffix
*/
public static String createClassName(String defName) {
String className = Arrays.stream(defName.split("-"))
@@ -41,4 +42,5 @@ public class ConfiggenUtil {
}
return true;
}
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java b/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java
index 44180b3f863..e8b9353b238 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java
@@ -15,11 +15,11 @@ import java.util.Arrays;
import java.util.StringTokenizer;
import java.util.stream.Collectors;
-
/**
* This class autogenerates C++ code for the C++ config, based on a CNode tree given.
*/
public class CppClassBuilder implements ClassBuilder {
+
private final CNode root;
private final NormalizedDefinition nd;
private final File rootDir;
@@ -1126,4 +1126,5 @@ public class CppClassBuilder implements ClassBuilder {
return defaultVal;
}
}
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java b/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java
index e35cfd14b5c..5d2dc2e13e8 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java
@@ -4,9 +4,8 @@ package com.yahoo.config.codegen;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-/**
- */
public class DefLine {
+
private final static Pattern defaultPattern = Pattern.compile("^\\s*default\\s*=\\s*(\\S+)");
private final static Pattern rangePattern = Pattern.compile("^\\s*range\\s*=\\s*([\\(\\[].*?[\\)\\]])");
private final static Pattern restartPattern = Pattern.compile("^\\s*restart\\s*");
@@ -270,5 +269,6 @@ public class DefLine {
throw new IllegalArgumentException("'" + name + "' cannot start with '" + ReservedWords.INTERNAL_PREFIX + "'");
}
}
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/DefParser.java b/configgen/src/main/java/com/yahoo/config/codegen/DefParser.java
index 09a751bdde7..4822b0cf271 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/DefParser.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/DefParser.java
@@ -14,6 +14,7 @@ import java.util.regex.Pattern;
* @author hmusum
*/
public class DefParser {
+
public static final String DEFAULT_PACKAGE_PREFIX = "com.yahoo.";
static final Pattern commentPattern = Pattern.compile("^\\s*#+\\s*(.*?)\\s*$");
@@ -231,4 +232,5 @@ public class DefParser {
super(s, cause);
}
}
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/DefaultValue.java b/configgen/src/main/java/com/yahoo/config/codegen/DefaultValue.java
index 972a29f201e..07632788d86 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/DefaultValue.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/DefaultValue.java
@@ -13,7 +13,6 @@ public class DefaultValue {
// The variable type. Always set UNLESS the value is null.
private DefLine.Type type = null;
-
/**
* Null value
*/
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/InnerCNode.java b/configgen/src/main/java/com/yahoo/config/codegen/InnerCNode.java
index 1e33bfbff26..1d1510e7197 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/InnerCNode.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/InnerCNode.java
@@ -82,8 +82,7 @@ public class InnerCNode extends CNode {
* @param comment comment extracted from the .def-file.
*/
@Override
- protected void setLeaf(String name, DefLine defLine, String comment)
- throws IllegalArgumentException {
+ protected void setLeaf(String name, DefLine defLine, String comment) throws IllegalArgumentException {
if (name.indexOf('.') < 0) {
throw new IllegalArgumentException("Parameter with name '" + name +
"' cannot be a leaf node as it has already been declared as an inner node.");
@@ -92,13 +91,6 @@ public class InnerCNode extends CNode {
String childName = name.substring(name.indexOf('.') + 1);
CNode child = createOrGetChild(defLine.getType(), childName);
-/*
- System.out.println("\nAdding child name: " + name);
- System.out.println(" getName: " + child.getName());
- System.out.println(" full name: " + child.getFullName());
- System.out.println(" classname: " + child.getClassName());
- System.out.println(" full classname: " + child.getFullClassName());
-*/
restart |= defLine.getRestart();
child.setLeaf(childName, defLine, comment);
children.put(child.getName(), child);
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 00498094db5..e30b59b642a 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java
@@ -22,6 +22,7 @@ import static com.yahoo.config.codegen.DefParser.DEFAULT_PACKAGE_PREFIX;
* @author ollivir
*/
public class JavaClassBuilder implements ClassBuilder {
+
public static final String INDENTATION = " ";
private final InnerCNode root;
@@ -141,11 +142,9 @@ public class JavaClassBuilder implements ClassBuilder {
* config class for the given node. The name will be based on the given basis
* string, but the basis itself is not a possible return value.
*
- * @param node
- * The node to find a unused symbol name for.
- * @param basis
- * The basis for the generated symbol name.
- * @return A name that is not used in the given config node.
+ * @param node the node to find a unused symbol name for.
+ * @param basis the basis for the generated symbol name.
+ * @return a name that is not used in the given config node.
*/
static String createUniqueSymbol(CNode node, String basis) {
Set<String> usedSymbols = Arrays.stream(node.getChildren()).map(CNode::getName).collect(Collectors.toSet());
@@ -167,4 +166,5 @@ public class JavaClassBuilder implements ClassBuilder {
public String javaPackage() {
return javaPackage;
}
+
}
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 1fff74dd194..7623987656a 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java
@@ -10,9 +10,7 @@ public abstract class LeafCNode extends CNode {
private DefaultValue defaultValue = null;
private boolean restart = false;
- /**
- * Constructor for the leaf nodes.
- */
+ /** Constructor for the leaf nodes */
protected LeafCNode(InnerCNode parent, String name) {
super(parent, name);
}
@@ -20,26 +18,16 @@ public abstract class LeafCNode extends CNode {
public static LeafCNode newInstance(DefLine.Type type, InnerCNode parent, String name) {
try {
switch (type.name) {
- case "int":
- return new IntegerLeaf(parent, name);
- case "long":
- return new LongLeaf(parent, name);
- case "double":
- return new DoubleLeaf(parent, name);
- case "bool":
- return new BooleanLeaf(parent, name);
- case "string":
- return new StringLeaf(parent, name);
- case "reference":
- return new ReferenceLeaf(parent, name);
- case "file":
- return new FileLeaf(parent, name);
- case "path":
- return new PathLeaf(parent, name);
- case "enum":
- return new EnumLeaf(parent, name, type.enumArray);
- default:
- return null;
+ case "int": return new IntegerLeaf(parent, name);
+ case "long": return new LongLeaf(parent, name);
+ case "double": return new DoubleLeaf(parent, name);
+ case "bool": return new BooleanLeaf(parent, name);
+ case "string": return new StringLeaf(parent, name);
+ case "reference": return new ReferenceLeaf(parent, name);
+ case "file": return new FileLeaf(parent, name);
+ case "path": return new PathLeaf(parent, name);
+ case "enum": return new EnumLeaf(parent, name, type.enumArray);
+ default: return null;
}
} catch (NumberFormatException e) {
return null;
@@ -77,7 +65,7 @@ public abstract class LeafCNode extends CNode {
}
/**
- * @param defaultValue The value to check.
+ * @param defaultValue the value to check.
* @throws IllegalArgumentException if the value is illegal according to the node type.
*/
public void checkDefaultValue(DefaultValue defaultValue) throws IllegalArgumentException {
@@ -243,7 +231,7 @@ public abstract class LeafCNode extends CNode {
return "enum";
}
- /** @return This enum's legal values. */
+ /** Returns this enum's legal values. */
public String[] getLegalValues() {
return legalValues;
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java b/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java
index ef9af1c2b11..ac6bbea617e 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java
@@ -137,5 +137,6 @@ public class MakeConfig {
return longName.substring(lastDot + 1);
}
}
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/MakeConfigProperties.java b/configgen/src/main/java/com/yahoo/config/codegen/MakeConfigProperties.java
index ca10e973ba2..13807e63e53 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/MakeConfigProperties.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/MakeConfigProperties.java
@@ -9,7 +9,7 @@ import java.util.StringTokenizer;
/**
* Encapsulates data extracted from system properties.
*
- * @author <a href="gv@yahoo-inc.com">Gjoran Voldengen</a>
+ * @author gjoranv
*/
public class MakeConfigProperties {
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/NormalizedDefinition.java b/configgen/src/main/java/com/yahoo/config/codegen/NormalizedDefinition.java
index 3250fc69ae8..71f9f1ece18 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/NormalizedDefinition.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/NormalizedDefinition.java
@@ -198,4 +198,5 @@ public class NormalizedDefinition {
public String getDefMd5() {
return defMd5;
}
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/PropertyException.java b/configgen/src/main/java/com/yahoo/config/codegen/PropertyException.java
index ff29c63a634..1c6891e279a 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/PropertyException.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/PropertyException.java
@@ -2,7 +2,9 @@
package com.yahoo.config.codegen;
public class PropertyException extends Exception {
+
PropertyException(String s) {
super(s);
}
+
}
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/ReservedWords.java b/configgen/src/main/java/com/yahoo/config/codegen/ReservedWords.java
index 6726229269e..623028d70d8 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/ReservedWords.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/ReservedWords.java
@@ -8,9 +8,7 @@ import java.util.regex.Pattern;
* Reserved words that cannot be used as variable names in a config definition file.
*
* @author hmusum
- * @since 2009-06-24
*/
-
public class ReservedWords {
public static final String INTERNAL_PREFIX = "__";
@@ -68,5 +66,4 @@ public class ReservedWords {
return allKeyWords.get(word);
}
-
}
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/JavaClassBuilderTest.java b/configgen/src/test/java/com/yahoo/config/codegen/JavaClassBuilderTest.java
index 744f8c9b1a2..381d587e3c3 100644
--- a/configgen/src/test/java/com/yahoo/config/codegen/JavaClassBuilderTest.java
+++ b/configgen/src/test/java/com/yahoo/config/codegen/JavaClassBuilderTest.java
@@ -8,6 +8,7 @@ import java.io.IOException;
import java.io.StringReader;
import java.nio.file.FileSystems;
import java.nio.file.Files;
+import java.util.List;
import static com.yahoo.config.codegen.ConfiggenUtil.createClassName;
import static com.yahoo.config.codegen.JavaClassBuilder.createUniqueSymbol;
@@ -15,12 +16,14 @@ import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
/**
* @author gjoranv
* @author ollivir
*/
public class JavaClassBuilderTest {
+
private static final String TEST_DIR = "target/test-classes/";
private static final String DEF_NAME = TEST_DIR + "allfeatures.def";
private static final String REFERENCE_NAME = TEST_DIR + "allfeatures.reference";
@@ -103,14 +106,19 @@ public class JavaClassBuilderTest {
@Test
public void verify_generated_class_against_reference() throws IOException {
- final String testDefinition = String.join("\n", Files.readAllLines(FileSystems.getDefault().getPath(DEF_NAME)));
- final String referenceClass = String.join("\n", Files.readAllLines(FileSystems.getDefault().getPath(REFERENCE_NAME))) + "\n";
+ String testDefinition = String.join("\n", Files.readAllLines(FileSystems.getDefault().getPath(DEF_NAME)));
+ List<String> referenceClassLines = Files.readAllLines(FileSystems.getDefault().getPath(REFERENCE_NAME));
DefParser parser = new DefParser("allfeatures", new StringReader(testDefinition));
InnerCNode root = parser.getTree();
JavaClassBuilder builder = new JavaClassBuilder(root, parser.getNormalizedDefinition(), null, null);
- String configClass = builder.getConfigClass("AllfeaturesConfig");
+ String[] configClassLines = builder.getConfigClass("AllfeaturesConfig").split("\n");
- assertEquals(referenceClass, configClass);
+ for (int i = 0; i < referenceClassLines.size(); i++) {
+ if (configClassLines.length <= i)
+ fail("Missing lines i generated comnfig class. First missing line:\n" + referenceClassLines.get(i));
+ assertEquals("Line " + i, referenceClassLines.get(i), configClassLines[i]);
+ }
}
+
}
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/NormalizedDefinitionTest.java b/configgen/src/test/java/com/yahoo/config/codegen/NormalizedDefinitionTest.java
index 0d8135e67de..cbb0d9c4082 100644
--- a/configgen/src/test/java/com/yahoo/config/codegen/NormalizedDefinitionTest.java
+++ b/configgen/src/test/java/com/yahoo/config/codegen/NormalizedDefinitionTest.java
@@ -73,4 +73,5 @@ public class NormalizedDefinitionTest {
assertNotNull(fileReader);
fileReader.close();
}
+
}
diff --git a/configgen/src/test/resources/allfeatures.reference b/configgen/src/test/resources/allfeatures.reference
index ebc21e8255c..1916e37c1cc 100644
--- a/configgen/src/test/resources/allfeatures.reference
+++ b/configgen/src/test/resources/allfeatures.reference
@@ -573,6 +573,11 @@ public final class AllfeaturesConfig extends ConfigInstance {
public final String getDefName() { return CONFIG_DEF_NAME; }
@java.lang.Override
public final String getDefNamespace() { return CONFIG_DEF_NAMESPACE; }
+
+ public AllfeaturesConfig build() {
+ return new AllfeaturesConfig(this);
+ }
+
}
// Some random bool without a default value. These comments exist to check
@@ -1129,6 +1134,11 @@ public final class AllfeaturesConfig extends ConfigInstance {
private Builder bar(String __value) {
return bar(Integer.valueOf(__value));
}
+
+ public Basic_struct build() {
+ return new Basic_struct(this);
+ }
+
}
// A basic struct
@@ -1203,6 +1213,11 @@ public final class AllfeaturesConfig extends ConfigInstance {
inner1 = __builder;
return this;
}
+
+ public Struct_of_struct build() {
+ return new Struct_of_struct(this);
+ }
+
}
private final Inner0 inner0;
@@ -1281,6 +1296,11 @@ public final class AllfeaturesConfig extends ConfigInstance {
private Builder index(String __value) {
return index(Integer.valueOf(__value));
}
+
+ public Inner0 build() {
+ return new Inner0(this);
+ }
+
}
// A struct of struct
@@ -1363,6 +1383,11 @@ public final class AllfeaturesConfig extends ConfigInstance {
private Builder index(String __value) {
return index(Integer.valueOf(__value));
}
+
+ public Inner1 build() {
+ return new Inner1(this);
+ }
+
}
private final StringNode name;
@@ -1502,6 +1527,11 @@ public final class AllfeaturesConfig extends ConfigInstance {
anotherArray = __builders;
return this;
}
+
+ public MyArray build() {
+ return new MyArray(this);
+ }
+
}
private final IntegerNode intVal;
@@ -1653,6 +1683,11 @@ public final class AllfeaturesConfig extends ConfigInstance {
private Builder foo(String __value) {
return foo(Integer.valueOf(__value));
}
+
+ public AnotherArray build() {
+ return new AnotherArray(this);
+ }
+
}
private final IntegerNode foo;
@@ -1790,6 +1825,11 @@ public final class AllfeaturesConfig extends ConfigInstance {
anotherArray = __builders;
return this;
}
+
+ public MyMap build() {
+ return new MyMap(this);
+ }
+
}
private final IntegerNode intVal;
@@ -1941,6 +1981,11 @@ public final class AllfeaturesConfig extends ConfigInstance {
private Builder foo(String __value) {
return foo(Integer.valueOf(__value));
}
+
+ public AnotherArray build() {
+ return new AnotherArray(this);
+ }
+
}
private final IntegerNode foo;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/MinimalQueryInserter.java b/container-search/src/main/java/com/yahoo/search/yql/MinimalQueryInserter.java
index a20949e3dfd..91992c3e29e 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/MinimalQueryInserter.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/MinimalQueryInserter.java
@@ -36,9 +36,6 @@ public class MinimalQueryInserter extends Searcher {
private static final CompoundName MAX_HITS = new CompoundName("maxHits");
private static final CompoundName MAX_OFFSET = new CompoundName("maxOffset");
- public MinimalQueryInserter() {
- }
-
@Override
public Result search(Query query, Execution execution) {
if (query.properties().get(YQL) == null) {
diff --git a/container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java b/container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java
index 5c2a749f858..e07fbd46845 100644
--- a/container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java
@@ -82,7 +82,7 @@ public class JSONSearchHandlerTestCase {
}
@Test
- public void testBadJSON() throws Exception{
+ public void testBadJSON() {
String json = "Not a valid JSON-string";
RequestHandlerTestDriver.MockResponseHandler responseHandler = driver.sendRequest(uri, com.yahoo.jdisc.http.HttpRequest.Method.POST, json, JSON_CONTENT_TYPE);
String response = responseHandler.readAll();
diff --git a/container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java b/container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java
index 2b0398a8e45..e60d84db3d0 100644
--- a/container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java
@@ -19,9 +19,12 @@ import com.yahoo.prelude.query.AndItem;
import com.yahoo.prelude.query.CompositeItem;
import com.yahoo.prelude.query.Highlight;
import com.yahoo.prelude.query.IndexedItem;
+import com.yahoo.prelude.query.IntItem;
import com.yahoo.prelude.query.Item;
+import com.yahoo.prelude.query.Limit;
import com.yahoo.prelude.query.OrItem;
import com.yahoo.prelude.query.QueryException;
+import com.yahoo.prelude.query.RangeItem;
import com.yahoo.prelude.query.RankItem;
import com.yahoo.prelude.query.WordItem;
import com.yahoo.processing.request.CompoundName;
@@ -770,6 +773,65 @@ public class QueryTestCase {
}
}
+ @Test
+ public void queryLanguageAlternatives() {
+ // Given:
+ // Person = {
+ // Name: 'Joe',
+ // Hobbies: ['sports','books','bonzais'],
+ // Phones: [{Number: '12-3456-7890', areaCode: 'NY'},{Number: '22-3456-7890', areaCode: 'CA'}],
+ // Mother: {
+ // Name: 'Mom',
+ // Birthyear: '1961'
+ // }
+ //}
+
+ { // Select all Persons whose hobbies contains 'sport'
+ // YQL
+ Query yqlQuery = new Query(httpEncode("?query=select * from Persons where hobbies contains 'sports';&type=yql"));
+ assertEquals("hobbies:sports", yqlQuery.getModel().getQueryTree().toString());
+
+ // JSON
+ Query jsonQuery = new Query(httpEncode("?select.where={\"contains\" : [ \"hobbies\", \"sports\" ]}&type=select"));
+ assertEquals("hobbies:sports", jsonQuery.getModel().getQueryTree().toString());
+
+ // Programmatically
+ Query query = new Query();
+ query.getModel().getQueryTree().setRoot(new WordItem("sports", "hobbies"));
+ assertEquals("hobbies:sports", query.getModel().getQueryTree().toString());
+ }
+
+ { // Select all Persons whose Phones areaCode equals 'NY'
+ // YQL
+ Query yqlQuery = new Query(httpEncode("?query=select * from Persons where phones.areaCode contains 'NY';&type=yql"));
+ assertEquals("phones.areaCode:NY", yqlQuery.getModel().getQueryTree().toString());
+
+ // JSON
+ Query jsonQuery = new Query(httpEncode("?select.where={\"contains\" : [ \"phones.areaCode\", \"NY\" ]}&type=select"));
+ assertEquals("phones.areaCode:NY", jsonQuery.getModel().getQueryTree().toString());
+
+ // Programmatically
+ Query query = new Query();
+ query.getModel().getQueryTree().setRoot(new WordItem("NY", "phones.areaCode"));
+ assertEquals("phones.areaCode:NY", query.getModel().getQueryTree().toString());
+ }
+
+ { // Select all Persons whose Mother's Birthyear is greater than 1960
+ // YQL
+ Query yqlQuery = new Query(httpEncode("?query=select * from Persons where mother.Birthyear > 1960;&type=yql"));
+ assertEquals("mother.Birthyear:>1960", yqlQuery.getModel().getQueryTree().toString());
+
+ // JSON
+ Query jsonQuery = new Query(httpEncode("?select.where={\"range\" : [ \"mother.Birthyear\", { \">\": 1960}]}&type=select"));
+ assertEquals("mother.Birthyear:>1960", jsonQuery.getModel().getQueryTree().toString());
+
+ // Programmatically
+ Query query = new Query();
+ query.getModel().getQueryTree().setRoot(new IntItem(">1960", "mother.Birthyear"));
+ assertEquals("mother.Birthyear:>1960", query.getModel().getQueryTree().toString());
+ }
+ }
+
private void assertDetectionText(String expectedDetectionText, String queryString, String ... indexSpecs) {
Query q = new Query(httpEncode("/?query=" + queryString));
SearchDefinition sd = new SearchDefinition("testSearchDefinition");