aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2020-08-05 09:09:29 +0200
committerGitHub <noreply@github.com>2020-08-05 09:09:29 +0200
commit78d1d7c83099639947edb423c67df4961a2cf5e4 (patch)
tree52b17fad75ba741518f59f01f0a3ab1372a8774b
parent2e82ff0ff2e24811d96c42126d81526da7ea3779 (diff)
parent2e225436140011754c7d467d5174624d4e451552 (diff)
Merge pull request #13985 from vespa-engine/balder/minor-fieldset-cleanup
Balder/minor fieldset cleanup
-rw-r--r--document/abi-spec.json44
-rwxr-xr-xdocument/src/main/java/com/yahoo/document/DocumentType.java8
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/AllFields.java7
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/BodyFields.java40
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/DocIdOnly.java7
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java35
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/HeaderFields.java41
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/NoFields.java7
-rw-r--r--document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java80
-rw-r--r--document/src/tests/fieldsettest.cpp59
-rw-r--r--document/src/vespa/document/base/field.cpp2
-rw-r--r--document/src/vespa/document/fieldset/fieldset.h15
-rw-r--r--document/src/vespa/document/fieldset/fieldsetrepo.cpp20
-rw-r--r--document/src/vespa/document/fieldset/fieldsets.cpp77
-rw-r--r--document/src/vespa/document/fieldset/fieldsets.h19
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java3
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java3
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java3
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java3
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentMessage.java3
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java7
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/local/LocalDocumentApiTestCase.java3
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java3
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java11
-rw-r--r--documentapi/src/tests/policies/policies_test.cpp8
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.cpp14
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.h28
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp5
-rw-r--r--persistence/src/vespa/persistence/conformancetest/conformancetest.cpp9
-rw-r--r--searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp4
-rw-r--r--storage/src/tests/distributor/distributortest.cpp3
-rw-r--r--storage/src/tests/distributor/externaloperationhandlertest.cpp5
-rw-r--r--storage/src/tests/distributor/getoperationtest.cpp3
-rw-r--r--storage/src/tests/distributor/twophaseupdateoperationtest.cpp10
-rw-r--r--storage/src/tests/distributor/visitoroperationtest.cpp10
-rw-r--r--storage/src/tests/persistence/common/filestortestfixture.cpp4
-rw-r--r--storage/src/tests/persistence/filestorage/filestormanagertest.cpp24
-rw-r--r--storage/src/tests/persistence/persistencequeuetest.cpp7
-rw-r--r--storage/src/tests/persistence/persistencetestutils.cpp8
-rw-r--r--storage/src/tests/persistence/persistencetestutils.h8
-rw-r--r--storage/src/tests/persistence/testandsettest.cpp3
-rw-r--r--storage/src/tests/storageserver/bouncertest.cpp3
-rw-r--r--storage/src/tests/storageserver/communicationmanagertest.cpp6
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp7
-rw-r--r--storage/src/vespa/storage/persistence/bucketprocessor.cpp5
-rw-r--r--storage/src/vespa/storage/visiting/visitor.cpp3
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp13
-rw-r--r--storageapi/src/vespa/storageapi/message/visitor.cpp4
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java3
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/OperationHandlerImplTest.java3
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespaget/CommandLineOptions.java8
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java5
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java19
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java6
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTestCase.java7
55 files changed, 233 insertions, 512 deletions
diff --git a/document/abi-spec.json b/document/abi-spec.json
index 7a0637db1aa..e53cf09f07e 100644
--- a/document/abi-spec.json
+++ b/document/abi-spec.json
@@ -3374,23 +3374,9 @@
"public com.yahoo.document.fieldset.FieldSet clone()",
"public bridge synthetic java.lang.Object clone()"
],
- "fields": []
- },
- "com.yahoo.document.fieldset.BodyFields": {
- "superClass": "java.lang.Object",
- "interfaces": [
- "com.yahoo.document.fieldset.FieldSet"
- ],
- "attributes": [
- "public"
- ],
- "methods": [
- "public void <init>()",
- "public boolean contains(com.yahoo.document.fieldset.FieldSet)",
- "public com.yahoo.document.fieldset.FieldSet clone()",
- "public bridge synthetic java.lang.Object clone()"
- ],
- "fields": []
+ "fields": [
+ "public static final java.lang.String NAME"
+ ]
},
"com.yahoo.document.fieldset.DocIdOnly": {
"superClass": "java.lang.Object",
@@ -3406,7 +3392,9 @@
"public com.yahoo.document.fieldset.FieldSet clone()",
"public bridge synthetic java.lang.Object clone()"
],
- "fields": []
+ "fields": [
+ "public static final java.lang.String NAME"
+ ]
},
"com.yahoo.document.fieldset.FieldCollection": {
"superClass": "java.util.ArrayList",
@@ -3454,22 +3442,6 @@
],
"fields": []
},
- "com.yahoo.document.fieldset.HeaderFields": {
- "superClass": "java.lang.Object",
- "interfaces": [
- "com.yahoo.document.fieldset.FieldSet"
- ],
- "attributes": [
- "public"
- ],
- "methods": [
- "public void <init>()",
- "public boolean contains(com.yahoo.document.fieldset.FieldSet)",
- "public com.yahoo.document.fieldset.FieldSet clone()",
- "public bridge synthetic java.lang.Object clone()"
- ],
- "fields": []
- },
"com.yahoo.document.fieldset.NoFields": {
"superClass": "java.lang.Object",
"interfaces": [
@@ -3484,7 +3456,9 @@
"public com.yahoo.document.fieldset.FieldSet clone()",
"public bridge synthetic java.lang.Object clone()"
],
- "fields": []
+ "fields": [
+ "public static final java.lang.String NAME"
+ ]
},
"com.yahoo.document.idstring.IdIdString": {
"superClass": "com.yahoo.document.idstring.IdString",
diff --git a/document/src/main/java/com/yahoo/document/DocumentType.java b/document/src/main/java/com/yahoo/document/DocumentType.java
index f73fd634e0e..af4aa62f21f 100755
--- a/document/src/main/java/com/yahoo/document/DocumentType.java
+++ b/document/src/main/java/com/yahoo/document/DocumentType.java
@@ -4,6 +4,7 @@ package com.yahoo.document;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.yahoo.document.datatypes.FieldValue;
+import com.yahoo.document.fieldset.AllFields;
import com.yahoo.document.serialization.DocumentWriter;
import com.yahoo.vespa.objects.Ids;
import com.yahoo.vespa.objects.ObjectVisitor;
@@ -34,7 +35,6 @@ import java.util.Set;
// TODO: Remove header/body concept on Vespa 8
public class DocumentType extends StructuredDataType {
- private static final String ALL = "[all]";
public static final String DOCUMENT = "[document]";
public static final int classId = registerClass(Ids.document + 58, DocumentType.class);
private StructDataType headerType;
@@ -215,8 +215,8 @@ public class DocumentType extends StructuredDataType {
this.fieldSets.put(entry.getKey(), ImmutableSet.copyOf(fields));
}
- if ( ! this.fieldSets.containsKey(ALL)) {
- this.fieldSets.put(ALL, getAllUniqueFields());
+ if ( ! this.fieldSets.containsKey(AllFields.NAME)) {
+ this.fieldSets.put(AllFields.NAME, getAllUniqueFields());
}
}
@@ -454,7 +454,7 @@ public class DocumentType extends StructuredDataType {
* @return an unmodifiable snapshot of the all fields in this type
*/
public Set<Field> fieldSetAll() {
- return fieldSet(ALL);
+ return fieldSet(AllFields.NAME);
}
public Set<Field> fieldSet(String name) {
diff --git a/document/src/main/java/com/yahoo/document/fieldset/AllFields.java b/document/src/main/java/com/yahoo/document/fieldset/AllFields.java
index 7087e959328..247d2829124 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/AllFields.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/AllFields.java
@@ -2,13 +2,10 @@
package com.yahoo.document.fieldset;
/**
- * Created with IntelliJ IDEA.
- * User: thomasg
- * Date: 4/25/12
- * Time: 3:18 PM
- * To change this template use File | Settings | File Templates.
+ * @author Thomas Gundersen
*/
public class AllFields implements FieldSet {
+ public static final String NAME = "[all]";
@Override
public boolean contains(FieldSet o) {
return true;
diff --git a/document/src/main/java/com/yahoo/document/fieldset/BodyFields.java b/document/src/main/java/com/yahoo/document/fieldset/BodyFields.java
deleted file mode 100644
index 1fd0d1129fa..00000000000
--- a/document/src/main/java/com/yahoo/document/fieldset/BodyFields.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.document.fieldset;
-
-import com.yahoo.document.Field;
-
-/**
- * @deprecated do not use
- */
-@Deprecated // TODO: Remove on Vespa 8
-public class BodyFields implements FieldSet {
- @Override
- public boolean contains(FieldSet o) {
- if (o instanceof BodyFields || o instanceof DocIdOnly || o instanceof NoFields) {
- return true;
- }
-
- if (o instanceof Field) {
- return !((Field) o).isHeader();
- }
-
- if (o instanceof FieldCollection) {
- FieldCollection c = (FieldCollection)o;
- for (Field f : c) {
- if (f.isHeader()) {
- return false;
- }
- }
-
- return true;
- } else {
- return false;
- }
- }
-
- @Override
- public FieldSet clone() throws CloneNotSupportedException {
- return new BodyFields();
- }
-
-}
diff --git a/document/src/main/java/com/yahoo/document/fieldset/DocIdOnly.java b/document/src/main/java/com/yahoo/document/fieldset/DocIdOnly.java
index 29b8348d501..eeac213e2b4 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/DocIdOnly.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/DocIdOnly.java
@@ -2,13 +2,10 @@
package com.yahoo.document.fieldset;
/**
- * Created with IntelliJ IDEA.
- * User: thomasg
- * Date: 4/25/12
- * Time: 3:21 PM
- * To change this template use File | Settings | File Templates.
+ * @author Thomas Gundersen
*/
public class DocIdOnly implements FieldSet {
+ public static final String NAME = "[id]";
@Override
public boolean contains(FieldSet o) {
return (o instanceof DocIdOnly || o instanceof NoFields);
diff --git a/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java b/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java
index a7035439903..285c78ef0ab 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java
@@ -7,27 +7,27 @@ import com.yahoo.document.DocumentTypeManager;
import com.yahoo.document.Field;
import com.yahoo.document.datatypes.FieldValue;
-import java.lang.String;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
/**
* TODO: Move to document and implement
*/
public class FieldSetRepo {
- @SuppressWarnings("deprecation")
FieldSet parseSpecialValues(String name)
{
- if (name.equals("[id]")) { return new DocIdOnly(); }
- else if (name.equals("[all]")) { return (new AllFields()); }
- else if (name.equals("[none]")) { return (new NoFields()); }
- else if (name.equals("[header]")) { return (new HeaderFields()); }
+ if (name.equals(DocIdOnly.NAME)) { return new DocIdOnly(); }
+ else if (name.equals(AllFields.NAME)) { return (new AllFields()); }
+ else if (name.equals(NoFields.NAME)) { return (new NoFields()); }
else if (name.equals("[docid]")) { return (new DocIdOnly()); }
- else if (name.equals("[body]")) { return (new BodyFields()); }
else {
throw new IllegalArgumentException(
"The only special names (enclosed in '[]') allowed are " +
- "id, all, none, header, body");
+ "id, all, none");
}
}
@@ -40,7 +40,7 @@ public class FieldSetRepo {
StringTokenizer tokenizer = new StringTokenizer(fieldNames, ",");
FieldCollection collection = new FieldCollection(type);
- for (; tokenizer.hasMoreTokens(); ) {
+ while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken();
Field f = type.getField(token);
if (f == null) {
@@ -74,14 +74,13 @@ public class FieldSetRepo {
return parseFieldCollection(docMan, type, fields);
}
- @SuppressWarnings("deprecation")
public String serialize(FieldSet fieldSet) {
if (fieldSet instanceof Field) {
return ((Field)fieldSet).getName();
} else if (fieldSet instanceof FieldCollection) {
FieldCollection c = ((FieldCollection)fieldSet);
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
for (Field f : c) {
if (buffer.length() == 0) {
buffer.append(c.getDocumentType().getName());
@@ -94,15 +93,11 @@ public class FieldSetRepo {
return buffer.toString();
} else if (fieldSet instanceof AllFields) {
- return "[all]";
+ return AllFields.NAME;
} else if (fieldSet instanceof NoFields) {
- return "[none]";
- } else if (fieldSet instanceof BodyFields) {
- return "[body]";
- } else if (fieldSet instanceof HeaderFields) {
- return "[header]";
+ return NoFields.NAME;
} else if (fieldSet instanceof DocIdOnly) {
- return "[docid]";
+ return DocIdOnly.NAME;
} else {
throw new IllegalArgumentException("Unknown field set type " + fieldSet);
}
@@ -127,7 +122,7 @@ public class FieldSetRepo {
* Strips all fields not wanted by the given field set from the document.
*/
public void stripFields(Document target, FieldSet fieldSet) {
- List<Field> toStrip = new ArrayList<Field>();
+ List<Field> toStrip = new ArrayList<>();
for (Iterator<Map.Entry<Field, FieldValue>> i = target.iterator(); i.hasNext();) {
Map.Entry<Field, FieldValue> v = i.next();
diff --git a/document/src/main/java/com/yahoo/document/fieldset/HeaderFields.java b/document/src/main/java/com/yahoo/document/fieldset/HeaderFields.java
deleted file mode 100644
index 220de1ab416..00000000000
--- a/document/src/main/java/com/yahoo/document/fieldset/HeaderFields.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.document.fieldset;
-
-import com.yahoo.document.Field;
-
-/**
- * @deprecated do not use
- */
-@Deprecated // TODO: Remove on Vespa 8
-public class HeaderFields implements FieldSet {
-
- @Override
- public boolean contains(FieldSet o) {
- if (o instanceof HeaderFields || o instanceof DocIdOnly || o instanceof NoFields) {
- return true;
- }
-
- if (o instanceof Field) {
- return ((Field)o).isHeader();
- }
-
- if (o instanceof FieldCollection) {
- FieldCollection c = (FieldCollection)o;
- for (Field f : c) {
- if (!f.isHeader()) {
- return false;
- }
- }
-
- return true;
- } else {
- return false;
- }
- }
-
- @Override
- public FieldSet clone() throws CloneNotSupportedException {
- return new HeaderFields();
- }
-
-}
diff --git a/document/src/main/java/com/yahoo/document/fieldset/NoFields.java b/document/src/main/java/com/yahoo/document/fieldset/NoFields.java
index fe3426db143..91663067db0 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/NoFields.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/NoFields.java
@@ -2,13 +2,10 @@
package com.yahoo.document.fieldset;
/**
- * Created with IntelliJ IDEA.
- * User: thomasg
- * Date: 4/25/12
- * Time: 3:18 PM
- * To change this template use File | Settings | File Templates.
+ * @author Thomas Gundersen
*/
public class NoFields implements FieldSet {
+ public static final String NAME = "[none]";
@Override
public boolean contains(FieldSet o) {
return (o instanceof NoFields);
diff --git a/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java b/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java
index 404b069277b..fa0e3c82d01 100644
--- a/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java
+++ b/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java
@@ -13,6 +13,7 @@ import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
/**
* Test for field sets
@@ -20,25 +21,19 @@ import static org.junit.Assert.assertTrue;
public class FieldSetTestCase extends DocumentTestCaseBase {
@Test
- @SuppressWarnings("deprecation")
public void testClone() throws Exception {
assertTrue(new AllFields().clone() instanceof AllFields);
assertTrue(new NoFields().clone() instanceof NoFields);
- assertTrue(new HeaderFields().clone() instanceof HeaderFields);
- assertTrue(new BodyFields().clone() instanceof BodyFields);
assertTrue(new DocIdOnly().clone() instanceof DocIdOnly);
}
@Test
- @SuppressWarnings("deprecation")
public void testParsing() {
FieldSetRepo repo = new FieldSetRepo();
- assertTrue(repo.parse(docMan, "[all]") instanceof AllFields);
- assertTrue(repo.parse(docMan, "[none]") instanceof NoFields);
- assertTrue(repo.parse(docMan, "[id]") instanceof DocIdOnly);
- assertTrue(repo.parse(docMan, "[header]") instanceof HeaderFields);
- assertTrue(repo.parse(docMan, "[body]") instanceof BodyFields);
+ assertTrue(repo.parse(docMan, AllFields.NAME) instanceof AllFields);
+ assertTrue(repo.parse(docMan, NoFields.NAME) instanceof NoFields);
+ assertTrue(repo.parse(docMan, DocIdOnly.NAME) instanceof DocIdOnly);
FieldCollection collection = (FieldCollection)repo.parse(docMan, "testdoc:stringattr,intattr");
assertEquals(2, collection.size());
@@ -61,50 +56,37 @@ public class FieldSetTestCase extends DocumentTestCaseBase {
void assertError(String str) {
try {
new FieldSetRepo().parse(docMan, str);
- assertTrue(false);
+ fail();
} catch (Exception e) {
}
}
@Test
- @SuppressWarnings("deprecation")
public void testContains() throws Exception {
- Field headerField = testDocType.getField("intattr");
- Field bodyField = testDocType.getField("rawattr");
-
- assertFalse(headerField.contains(testDocType.getField("byteattr")));
- assertTrue(headerField.contains(testDocType.getField("intattr")));
- assertFalse(headerField.contains(bodyField));
- assertTrue(headerField.contains(new DocIdOnly()));
- assertTrue(headerField.contains(new NoFields()));
- assertFalse(headerField.contains(new AllFields()));
- assertFalse(headerField.contains(new HeaderFields()));
- assertFalse(headerField.contains(new BodyFields()));
-
- assertFalse(new NoFields().contains(headerField));
+ Field intAttr = testDocType.getField("intattr");
+ Field rawAttr = testDocType.getField("rawattr");
+
+ assertFalse(intAttr.contains(testDocType.getField("byteattr")));
+ assertTrue(intAttr.contains(testDocType.getField("intattr")));
+ assertFalse(intAttr.contains(rawAttr));
+ assertTrue(intAttr.contains(new DocIdOnly()));
+ assertTrue(intAttr.contains(new NoFields()));
+ assertFalse(intAttr.contains(new AllFields()));
+
+ assertFalse(new NoFields().contains(intAttr));
assertFalse(new NoFields().contains(new AllFields()));
assertFalse(new NoFields().contains(new DocIdOnly()));
- assertTrue(new AllFields().contains(new HeaderFields()));
- assertTrue(new AllFields().contains(headerField));
- assertTrue(new AllFields().contains(bodyField));
- assertTrue(new AllFields().contains(new BodyFields()));
+ assertTrue(new AllFields().contains(intAttr));
+ assertTrue(new AllFields().contains(rawAttr));
assertTrue(new AllFields().contains(new DocIdOnly()));
assertTrue(new AllFields().contains(new NoFields()));
assertTrue(new AllFields().contains(new AllFields()));
assertTrue(new DocIdOnly().contains(new NoFields()));
assertTrue(new DocIdOnly().contains(new DocIdOnly()));
- assertFalse(new DocIdOnly().contains(headerField));
-
- assertTrue(new HeaderFields().contains(headerField));
- assertTrue(new HeaderFields().contains(bodyField));
- assertTrue(new HeaderFields().contains(new DocIdOnly()));
- assertTrue(new HeaderFields().contains(new NoFields()));
+ assertFalse(new DocIdOnly().contains(intAttr));
- assertNotContains("[body]", "testdoc:rawattr");
- assertContains("[header]", "testdoc:intattr");
- assertContains("[header]", "testdoc:rawattr");
assertContains("testdoc:rawattr,intattr", "testdoc:intattr");
assertNotContains("testdoc:intattr", "testdoc:rawattr,intattr");
assertContains("testdoc:intattr,rawattr", "testdoc:rawattr,intattr");
@@ -116,17 +98,17 @@ public class FieldSetTestCase extends DocumentTestCaseBase {
}
String stringifyFields(Document doc) {
- String retVal = "";
+ StringBuilder retVal = new StringBuilder();
for (Iterator<Map.Entry<Field, FieldValue>> i = doc.iterator(); i.hasNext(); ) {
Map.Entry<Field, FieldValue> v = i.next();
if (retVal.length() > 0) {
- retVal += ",";
+ retVal.append(",");
}
- retVal += v.getKey().getName() + ":" + v.getValue().toString();
+ retVal.append(v.getKey().getName()).append(":").append(v.getValue().toString());
}
- return retVal;
+ return retVal.toString();
}
String doCopyFields(Document source, String fieldSet) {
@@ -141,9 +123,7 @@ public class FieldSetTestCase extends DocumentTestCaseBase {
Document doc = getTestDocument();
doc.removeFieldValue("rawattr");
- assertEquals("", doCopyFields(doc, "[body]"));
- assertEquals("floatattr:3.56,stringattr:tjohei,intattr:50,byteattr:30", doCopyFields(doc, "[header]"));
- assertEquals("floatattr:3.56,stringattr:tjohei,intattr:50,byteattr:30", doCopyFields(doc, "[all]"));
+ assertEquals("floatattr:3.56,stringattr:tjohei,intattr:50,byteattr:30", doCopyFields(doc, AllFields.NAME));
assertEquals("floatattr:3.56,byteattr:30", doCopyFields(doc, "testdoc:floatattr,byteattr"));
}
@@ -159,9 +139,7 @@ public class FieldSetTestCase extends DocumentTestCaseBase {
Document doc = getTestDocument();
doc.removeFieldValue("rawattr");
- assertEquals("", doStripFields(doc, "[body]"));
- assertEquals("floatattr:3.56,stringattr:tjohei,intattr:50,byteattr:30", doStripFields(doc, "[header]"));
- assertEquals("floatattr:3.56,stringattr:tjohei,intattr:50,byteattr:30", doStripFields(doc, "[all]"));
+ assertEquals("floatattr:3.56,stringattr:tjohei,intattr:50,byteattr:30", doStripFields(doc, AllFields.NAME));
assertEquals("floatattr:3.56,byteattr:30", doStripFields(doc, "testdoc:floatattr,byteattr"));
}
@@ -169,11 +147,9 @@ public class FieldSetTestCase extends DocumentTestCaseBase {
public void testSerialize() {
String fieldSets[] =
{
- "[all]",
- "[none]",
- "[header]",
- "[docid]",
- "[body]",
+ AllFields.NAME,
+ NoFields.NAME,
+ DocIdOnly.NAME,
"testdoc:rawattr",
"testdoc:rawattr,intattr"
};
diff --git a/document/src/tests/fieldsettest.cpp b/document/src/tests/fieldsettest.cpp
index b0cad61b72a..b82cca86ce7 100644
--- a/document/src/tests/fieldsettest.cpp
+++ b/document/src/tests/fieldsettest.cpp
@@ -40,11 +40,9 @@ TEST_F(FieldSetTest, testParsing)
FieldSetRepo repo;
- (void) dynamic_cast<AllFields&>(*repo.parse(docRepo, "[all]"));
- (void) dynamic_cast<NoFields&>(*repo.parse(docRepo, "[none]"));
- (void) dynamic_cast<DocIdOnly&>(*repo.parse(docRepo, "[id]"));
- (void) dynamic_cast<HeaderFields&>(*repo.parse(docRepo, "[header]"));
- (void) dynamic_cast<BodyFields&>(*repo.parse(docRepo, "[body]"));
+ (void) dynamic_cast<AllFields&>(*repo.parse(docRepo, AllFields::NAME));
+ (void) dynamic_cast<NoFields&>(*repo.parse(docRepo, NoFields::NAME));
+ (void) dynamic_cast<DocIdOnly&>(*repo.parse(docRepo, DocIdOnly::NAME));
FieldSet::UP set = repo.parse(docRepo, "testdoctype1:headerval,content");
FieldCollection& coll = dynamic_cast<FieldCollection&>(*set);
@@ -88,13 +86,10 @@ TEST_F(FieldSetTest, testContains)
const DocumentType& type = *repo.getDocumentType("testdoctype1");
const Field& headerField = type.getField("headerval");
- const Field& bodyField = type.getField("content");
NoFields none;
AllFields all;
DocIdOnly id;
- HeaderFields h;
- BodyFields b;
EXPECT_EQ(false, headerField.contains(type.getField("headerlongval")));
EXPECT_EQ(true, headerField.contains(headerField));
@@ -109,17 +104,7 @@ TEST_F(FieldSetTest, testContains)
EXPECT_EQ(false, none.contains(id));
EXPECT_EQ(true, id.contains(none));
- EXPECT_EQ(true, h.contains(headerField));
- EXPECT_EQ(false, h.contains(bodyField));
-
- EXPECT_EQ(false, b.contains(headerField));
- EXPECT_EQ(true, b.contains(bodyField));
-
FieldSetRepo r;
- EXPECT_EQ(true, checkContains(r, repo, "[body]",
- "testdoctype1:content"));
- EXPECT_EQ(false, checkContains(r, repo, "[header]",
- "testdoctype1:content"));
EXPECT_EQ(true, checkContains(r, repo,
"testdoctype1:content,headerval",
"testdoctype1:content"));
@@ -209,17 +194,12 @@ TEST_F(FieldSetTest, testCopyDocumentFields)
const DocumentTypeRepo& repo = testDocMan.getTypeRepo();
Document::UP src(createTestDocument(testDocMan));
- EXPECT_EQ(std::string("content: megafoo megabar\n"),
- doCopyFields(*src, repo, "[body]"));
EXPECT_EQ(std::string(""),
- doCopyFields(*src, repo, "[none]"));
- EXPECT_EQ(std::string("headerval: 5678\n"
- "hstringval: hello fantastic world\n"),
- doCopyFields(*src, repo, "[header]"));
+ doCopyFields(*src, repo, NoFields::NAME));
EXPECT_EQ(std::string("content: megafoo megabar\n"
"headerval: 5678\n"
"hstringval: hello fantastic world\n"),
- doCopyFields(*src, repo, "[all]"));
+ doCopyFields(*src, repo, AllFields::NAME));
EXPECT_EQ(std::string("content: megafoo megabar\n"
"hstringval: hello fantastic world\n"),
doCopyFields(*src, repo, "testdoctype1:hstringval,content"));
@@ -228,7 +208,7 @@ TEST_F(FieldSetTest, testCopyDocumentFields)
Document dest(src->getType(), DocumentId("id:ns:" + src->getType().getName() + "::bar"));
dest.setValue(dest.getField("content"), StringFieldValue("overwriteme"));
EXPECT_EQ(std::string("content: megafoo megabar\n"),
- doCopyFields(*src, repo, "[body]", &dest));
+ doCopyFields(*src, repo, src->getType().getName() + ":content", &dest));
}
}
@@ -256,15 +236,13 @@ TEST_F(FieldSetTest, testDocumentSubsetCopy)
EXPECT_TRUE(doc.get());
EXPECT_EQ(src->getId(), doc->getId());
EXPECT_EQ(src->getType(), doc->getType());
- EXPECT_EQ(doCopyFields(*src, repo, "[all]"),
+ EXPECT_EQ(doCopyFields(*src, repo, AllFields::NAME),
stringifyFields(*doc));
}
const char* fieldSets[] = {
- "[all]",
- "[none]",
- "[header]",
- "[body]",
+ AllFields::NAME,
+ NoFields::NAME,
"testdoctype1:hstringval,content"
};
for (size_t i = 0; i < sizeof(fieldSets) / sizeof(fieldSets[0]); ++i) {
@@ -279,11 +257,9 @@ TEST_F(FieldSetTest, testSerialize)
const DocumentTypeRepo& docRepo = testDocMan.getTypeRepo();
const char* fieldSets[] = {
- "[all]",
- "[none]",
- "[header]",
- "[docid]",
- "[body]",
+ AllFields::NAME,
+ NoFields::NAME,
+ DocIdOnly::NAME,
"testdoctype1:content",
"testdoctype1:content,hstringval"
};
@@ -301,19 +277,14 @@ TEST_F(FieldSetTest, testStripFields)
const DocumentTypeRepo& repo = testDocMan.getTypeRepo();
Document::UP src(createTestDocument(testDocMan));
- EXPECT_EQ(std::string("content: megafoo megabar\n"),
- doStripFields(*src, repo, "[body]"));
EXPECT_EQ(std::string(""),
- doStripFields(*src, repo, "[none]"));
+ doStripFields(*src, repo, NoFields::NAME));
EXPECT_EQ(std::string(""),
- doStripFields(*src, repo, "[id]"));
- EXPECT_EQ(std::string("headerval: 5678\n"
- "hstringval: hello fantastic world\n"),
- doStripFields(*src, repo, "[header]"));
+ doStripFields(*src, repo, DocIdOnly::NAME));
EXPECT_EQ(std::string("content: megafoo megabar\n"
"headerval: 5678\n"
"hstringval: hello fantastic world\n"),
- doStripFields(*src, repo, "[all]"));
+ doStripFields(*src, repo, AllFields::NAME));
EXPECT_EQ(std::string("content: megafoo megabar\n"
"hstringval: hello fantastic world\n"),
doStripFields(*src, repo, "testdoctype1:hstringval,content"));
diff --git a/document/src/vespa/document/base/field.cpp b/document/src/vespa/document/base/field.cpp
index be5d94ce7f0..e85703d203c 100644
--- a/document/src/vespa/document/base/field.cpp
+++ b/document/src/vespa/document/base/field.cpp
@@ -62,8 +62,6 @@ Field::contains(const FieldSet& fields) const
case NONE:
case DOCID:
return true;
- case HEADER:
- case BODY:
case ALL:
return false;
}
diff --git a/document/src/vespa/document/fieldset/fieldset.h b/document/src/vespa/document/fieldset/fieldset.h
index 309a7caf517..6c9acadcf5d 100644
--- a/document/src/vespa/document/fieldset/fieldset.h
+++ b/document/src/vespa/document/fieldset/fieldset.h
@@ -20,14 +20,12 @@ public:
SET,
ALL,
NONE,
- HEADER, // Special collection used by VDS
- BODY, // Special collection used by VDS
DOCID
};
typedef std::unique_ptr<FieldSet> UP;
- virtual ~FieldSet() {};
+ virtual ~FieldSet() = default;
/**
* @return Return true if all the fields in "fields" are contained in
@@ -54,9 +52,7 @@ public:
* needs to only contain fields matching a given field set and can
* readily be modified in-place.
*/
- static void copyFields(Document& dest,
- const Document& src,
- const FieldSet& fields);
+ static void copyFields(Document& dest, const Document& src, const FieldSet& fields);
/**
* Creates a copy of document src containing only the fields given by
@@ -64,16 +60,13 @@ public:
* See comment for copyFields() for performance notes.
* @return The new, (partially) copied document instance.
*/
- static std::unique_ptr<Document> createDocumentSubsetCopy(
- const Document& src,
- const FieldSet& fields);
+ static std::unique_ptr<Document> createDocumentSubsetCopy(const Document& src, const FieldSet& fields);
/**
* Strip all fields _except_ the ones that are contained within the
* fieldsToKeep fieldset. Modifies original document in-place.
*/
- static void stripFields(Document& doc,
- const FieldSet& fieldsToKeep);
+ static void stripFields(Document& doc, const FieldSet& fieldsToKeep);
};
}
diff --git a/document/src/vespa/document/fieldset/fieldsetrepo.cpp b/document/src/vespa/document/fieldset/fieldsetrepo.cpp
index aa14cfc2b80..e3212f3bd25 100644
--- a/document/src/vespa/document/fieldset/fieldsetrepo.cpp
+++ b/document/src/vespa/document/fieldset/fieldsetrepo.cpp
@@ -22,16 +22,12 @@ parseSpecialValues(vespalib::stringref name)
fs.reset(new AllFields());
} else if ((name.size() == 6) && (name[1] == 'n') && (name[2] == 'o') && (name[3] == 'n') && (name[4] == 'e') && (name[5] == ']')) {
fs.reset(new NoFields());
- } else if ((name.size() == 8) && (name[1] == 'h') && (name[2] == 'e') && (name[3] == 'a') && (name[4] == 'd') && (name[5] == 'e') && (name[6] == 'r') && (name[7] == ']')) {
- fs.reset(new HeaderFields());
} else if ((name.size() == 7) && (name[1] == 'd') && (name[2] == 'o') && (name[3] == 'c') && (name[4] == 'i') && (name[5] == 'd') && (name[6] == ']')) {
fs.reset(new DocIdOnly());
- } else if ((name.size() == 6) && (name[1] == 'b') && (name[2] == 'o') && (name[3] == 'd') && (name[4] == 'y') && (name[5] == ']')) {
- fs.reset(new BodyFields());
} else {
throw vespalib::IllegalArgumentException(
"The only special names (enclosed in '[]') allowed are "
- "id, all, none, header, body, not '" + name + "'.");
+ "id, all, none, not '" + name + "'.");
}
return fs;
}
@@ -43,8 +39,7 @@ parseFieldCollection(const DocumentTypeRepo& repo,
{
const DocumentType* typePtr = repo.getDocumentType(docType);
if (!typePtr) {
- throw vespalib::IllegalArgumentException(
- "Unknown document type " + docType);
+ throw vespalib::IllegalArgumentException("Unknown document type " + docType);
}
const DocumentType& type(*typePtr);
@@ -90,7 +85,6 @@ FieldSetRepo::serialize(const FieldSet& fieldSet)
switch (fieldSet.getType()) {
case FieldSet::FIELD:
return static_cast<const Field&>(fieldSet).getName();
- break;
case FieldSet::SET:
{
const FieldCollection& collection = static_cast<const FieldCollection&>(fieldSet);
@@ -110,15 +104,11 @@ FieldSetRepo::serialize(const FieldSet& fieldSet)
return stream.str();
}
case FieldSet::ALL:
- return "[all]";
+ return AllFields::NAME;
case FieldSet::NONE:
- return "[none]";
- case FieldSet::HEADER:
- return "[header]";
- case FieldSet::BODY:
- return "[body]";
+ return NoFields::NAME;
case FieldSet::DOCID:
- return "[docid]";
+ return DocIdOnly::NAME;
default:
return "";
}
diff --git a/document/src/vespa/document/fieldset/fieldsets.cpp b/document/src/vespa/document/fieldset/fieldsets.cpp
index 1f9ea32273b..1a6cd5e6b84 100644
--- a/document/src/vespa/document/fieldset/fieldsets.cpp
+++ b/document/src/vespa/document/fieldset/fieldsets.cpp
@@ -6,70 +6,7 @@
namespace document {
-bool
-HeaderFields::contains(const FieldSet& fields) const
-{
- switch (fields.getType()) {
- case FIELD:
- return static_cast<const Field&>(fields).isHeaderField();
- case SET:
- {
- const FieldCollection& coll = static_cast<const FieldCollection&>(fields);
- for (Field::Set::const_iterator iter = coll.getFields().begin();
- iter != coll.getFields().end();
- ++iter) {
- if (!(*iter)->isHeaderField()) {
- return false;
- }
- }
-
- return true;
- }
- case NONE:
- case DOCID:
- case HEADER:
- return true;
- case BODY:
- case ALL:
- return false;
- }
-
- return false;
-}
-
-bool
-BodyFields::contains(const FieldSet& fields) const
-{
- switch (fields.getType()) {
- case FIELD:
- return !static_cast<const Field&>(fields).isHeaderField();
- case SET:
- {
- const FieldCollection& coll = static_cast<const FieldCollection&>(fields);
- for (Field::Set::const_iterator iter = coll.getFields().begin();
- iter != coll.getFields().end();
- ++iter) {
- if ((*iter)->isHeaderField()) {
- return false;
- }
- }
-
- return true;
- }
- case NONE:
- case DOCID:
- case BODY:
- return true;
- case HEADER:
- case ALL:
- return false;
- }
-
- return false;
-}
-
-FieldCollection::FieldCollection(const DocumentType& type,
- const Field::Set& s)
+FieldCollection::FieldCollection(const DocumentType& type, const Field::Set& s)
: _set(s),
_docType(type)
{
@@ -104,8 +41,6 @@ FieldCollection::contains(const FieldSet& fields) const
case NONE:
case DOCID:
return true;
- case BODY:
- case HEADER:
case ALL:
return false;
}
@@ -126,9 +61,7 @@ FieldCollection::insert(const Field::Set& c)
}
void
-FieldSet::copyFields(Document& dest,
- const Document& src,
- const FieldSet& fields)
+FieldSet::copyFields(Document& dest, const Document& src, const FieldSet& fields)
{
if (fields.getType() == ALL) {
dest.getFields() = src.getFields();
@@ -146,8 +79,7 @@ FieldSet::copyFields(Document& dest,
}
Document::UP
-FieldSet::createDocumentSubsetCopy(const Document& src,
- const FieldSet& fields)
+FieldSet::createDocumentSubsetCopy(const Document& src, const FieldSet& fields)
{
auto ret = std::make_unique<Document>(src.getType(), src.getId());
copyFields(*ret, src, fields);
@@ -155,8 +87,7 @@ FieldSet::createDocumentSubsetCopy(const Document& src,
}
void
-FieldSet::stripFields(Document& doc,
- const FieldSet& fieldsToKeep)
+FieldSet::stripFields(Document& doc, const FieldSet& fieldsToKeep)
{
if (fieldsToKeep.getType() == ALL) {
return;
diff --git a/document/src/vespa/document/fieldset/fieldsets.h b/document/src/vespa/document/fieldset/fieldsets.h
index 1ff34e2d882..7b8ec6bbff0 100644
--- a/document/src/vespa/document/fieldset/fieldsets.h
+++ b/document/src/vespa/document/fieldset/fieldsets.h
@@ -10,6 +10,7 @@ class DocumentType;
class AllFields final : public FieldSet
{
public:
+ static constexpr const char * NAME = "[all]";
bool contains(const FieldSet&) const override { return true; }
Type getType() const override { return ALL; }
FieldSet* clone() const override { return new AllFields(); }
@@ -18,6 +19,7 @@ public:
class NoFields final : public FieldSet
{
public:
+ static constexpr const char * NAME = "[none]";
bool contains(const FieldSet& f) const override { return f.getType() == NONE; }
Type getType() const override { return NONE; }
FieldSet* clone() const override { return new NoFields(); }
@@ -26,6 +28,7 @@ public:
class DocIdOnly final : public FieldSet
{
public:
+ static constexpr const char * NAME = "[id]";
bool contains(const FieldSet& fields) const override {
return fields.getType() == DOCID || fields.getType() == NONE;
}
@@ -33,22 +36,6 @@ public:
FieldSet* clone() const override { return new DocIdOnly(); }
};
-class HeaderFields final : public FieldSet
-{
-public:
- bool contains(const FieldSet& fields) const override;
- Type getType() const override { return HEADER; }
- FieldSet* clone() const override { return new HeaderFields(); }
-};
-
-class BodyFields final : public FieldSet
-{
-public:
- bool contains(const FieldSet& fields) const override;
- Type getType() const override { return BODY; }
- FieldSet* clone() const override { return new BodyFields(); }
-};
-
class FieldCollection : public FieldSet
{
public:
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java
index 5b511a1dea8..6a059699b2b 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java
@@ -3,6 +3,7 @@ package com.yahoo.documentapi;
import com.yahoo.document.BucketId;
import com.yahoo.document.FixedBucketSpaces;
+import com.yahoo.document.fieldset.AllFields;
import com.yahoo.documentapi.messagebus.loadtypes.LoadType;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
import com.yahoo.messagebus.ThrottlePolicy;
@@ -29,7 +30,7 @@ public class VisitorParameters extends Parameters {
private long fromTimestamp = 0;
private long toTimestamp = 0;
boolean visitRemoves = false;
- private String fieldSet = "[all]";
+ private String fieldSet = AllFields.NAME;
boolean visitInconsistentBuckets = false;
private ProgressToken resumeToken = null;
private String resumeFileName = "";
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
index 493871d45c0..ab39e4c30ff 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
@@ -5,6 +5,7 @@ import com.yahoo.document.Document;
import com.yahoo.document.DocumentId;
import com.yahoo.document.DocumentPut;
import com.yahoo.document.DocumentUpdate;
+import com.yahoo.document.fieldset.AllFields;
import com.yahoo.documentapi.AsyncParameters;
import com.yahoo.documentapi.AsyncSession;
import com.yahoo.documentapi.DocumentIdResponse;
@@ -114,7 +115,7 @@ public class MessageBusAsyncSession implements MessageBusSession, AsyncSession {
@Override
public Result get(DocumentId id, DocumentProtocol.Priority pri) {
- GetDocumentMessage msg = new GetDocumentMessage(id, "[all]");
+ GetDocumentMessage msg = new GetDocumentMessage(id, AllFields.NAME);
msg.setPriority(pri);
return send(msg);
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java
index 9a16cef2f84..a9621950b88 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java
@@ -6,6 +6,7 @@ import com.yahoo.document.DocumentId;
import com.yahoo.document.DocumentPut;
import com.yahoo.document.DocumentRemove;
import com.yahoo.document.DocumentUpdate;
+import com.yahoo.document.fieldset.AllFields;
import com.yahoo.documentapi.AsyncParameters;
import com.yahoo.documentapi.DocumentAccessException;
import com.yahoo.documentapi.Response;
@@ -135,7 +136,7 @@ public class MessageBusSyncSession implements MessageBusSession, SyncSession, Re
@Override
public Document get(DocumentId id, Duration timeout) {
- return get(id, "[all]", DocumentProtocol.Priority.NORMAL_1, timeout);
+ return get(id, AllFields.NAME, DocumentProtocol.Priority.NORMAL_1, timeout);
}
@Override
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java
index c4e17141237..990585f39e1 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java
@@ -3,6 +3,7 @@ package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
import com.yahoo.document.FixedBucketSpaces;
+import com.yahoo.document.fieldset.AllFields;
import java.util.ArrayList;
import java.util.Iterator;
@@ -23,7 +24,7 @@ public class CreateVisitorMessage extends DocumentMessage {
private long fromTime = 0;
private long toTime = 0;
private boolean visitRemoves = false;
- private String fieldSet = "[all]";
+ private String fieldSet = AllFields.NAME;
private boolean visitInconsistentBuckets = false;
private Map<String, byte[]> params = new TreeMap<>();
private int maxBucketsPerVisitor = 1;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentMessage.java
index cd115cfbf0e..f65550bbf0f 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentMessage.java
@@ -2,6 +2,7 @@
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.DocumentId;
+import com.yahoo.document.fieldset.AllFields;
import java.util.Arrays;
@@ -10,7 +11,7 @@ import java.util.Arrays;
*/
public class GetDocumentMessage extends DocumentMessage {
- final static String DEFAULT_FIELD_SET = "[all]";
+ final static String DEFAULT_FIELD_SET = AllFields.NAME;
private DocumentId documentId = null;
private String fieldSet = DEFAULT_FIELD_SET;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java
index 61e0c9ba8b3..5941c2ac0e2 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
+import com.yahoo.document.fieldset.AllFields;
import com.yahoo.documentapi.messagebus.loadtypes.LoadType;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
import org.junit.Test;
@@ -23,7 +24,7 @@ public class VisitorParametersTestCase {
params.setRoute("extraterrestrial/highway");
params.setTimeoutMs(1337);
params.setMaxPending(111);
- params.setFieldSet("[header]");
+ params.setFieldSet(AllFields.NAME);
params.setLoadType(loadType);
params.setVisitRemoves(true);
params.setVisitInconsistentBuckets(true);
@@ -59,7 +60,7 @@ public class VisitorParametersTestCase {
assertEquals("extraterrestrial/highway", copy.getRoute().toString());
assertEquals(1337, copy.getTimeoutMs());
assertEquals(111, copy.getMaxPending());
- assertEquals("[header]", copy.getFieldSet());
+ assertEquals(AllFields.NAME, copy.getFieldSet());
assertEquals(loadType, copy.getLoadType());
assertEquals(true, copy.getVisitRemoves());
assertEquals(true, copy.getVisitInconsistentBuckets());
@@ -98,7 +99,7 @@ public class VisitorParametersTestCase {
" Visitor library parameters:\n" +
" groovy : dudes\n" +
" ninja : turtles\n" +
- " Field set: [header]\n" +
+ " Field set: [all]\n" +
" Route: extraterrestrial/highway\n" +
" Weight: 1.0\n" +
" Max firstpass hits: 555\n" +
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/local/LocalDocumentApiTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/local/LocalDocumentApiTestCase.java
index d1361e50973..69dc7c6da74 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/local/LocalDocumentApiTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/local/LocalDocumentApiTestCase.java
@@ -8,6 +8,7 @@ import com.yahoo.document.DocumentRemove;
import com.yahoo.document.DocumentType;
import com.yahoo.document.DocumentUpdate;
import com.yahoo.document.datatypes.StringFieldValue;
+import com.yahoo.document.fieldset.DocIdOnly;
import com.yahoo.document.select.parser.ParseException;
import com.yahoo.document.update.FieldUpdate;
import com.yahoo.documentapi.AsyncParameters;
@@ -183,7 +184,7 @@ public class LocalDocumentApiTestCase extends AbstractDocumentApiTestCase {
((StringFieldValue) doc3.getFieldValue("artist")).getString());
// Visit the documents again, retrieving none of the document fields
- parameters.setFieldSet("[id]");
+ parameters.setFieldSet(DocIdOnly.NAME);
received.clear();
access.createVisitorSession(parameters).waitUntilDone(0);
assertSame(VisitorControlHandler.CompletionCode.SUCCESS,
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java
index fb9cec88836..c054ec860ca 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java
@@ -7,6 +7,7 @@ import com.yahoo.document.DocumentPut;
import com.yahoo.document.DocumentTypeManager;
import com.yahoo.document.DocumentTypeManagerConfigurer;
import com.yahoo.document.DocumentUpdate;
+import com.yahoo.document.fieldset.AllFields;
import com.yahoo.documentapi.messagebus.protocol.ANDPolicy;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
import com.yahoo.documentapi.messagebus.protocol.DocumentRouteSelectorPolicy;
@@ -368,7 +369,7 @@ public class PolicyTestCase {
PolicyTestFrame frame = new PolicyTestFrame(manager);
frame.setHop(new HopSpec("test", getDocumentRouteSelectorRawConfig())
.addRecipient("foo").addRecipient("bar"));
- frame.setMessage(new GetDocumentMessage(new DocumentId("id:ns:testdoc::yarn"), "[all]"));
+ frame.setMessage(new GetDocumentMessage(new DocumentId("id:ns:testdoc::yarn"), AllFields.NAME));
List<RoutingNode> selected = frame.select(2);
for (int i = 0, len = selected.size(); i < len; ++i) {
Document doc = null;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java
index 9d0011ef05d..35e0c21f93f 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java
@@ -3,6 +3,8 @@ package com.yahoo.documentapi.messagebus.test;
import com.yahoo.document.BucketId;
import com.yahoo.document.DocumentId;
+import com.yahoo.document.fieldset.AllFields;
+import com.yahoo.document.fieldset.DocIdOnly;
import com.yahoo.document.select.parser.ParseException;
import com.yahoo.documentapi.*;
import com.yahoo.documentapi.messagebus.MessageBusVisitorSession;
@@ -472,7 +474,7 @@ public class MessageBusVisitorSessionTestCase {
if (msg.getMaxPendingReplyCount() != 32) {
sb.append("max pending=").append(msg.getMaxPendingReplyCount()).append("\n");
}
- if (!"[all]".equals(msg.getFieldSet())) {
+ if (!AllFields.NAME.equals(msg.getFieldSet())) {
sb.append("fieldset=").append(msg.getFieldSet()).append("\n");
}
if (msg.getVisitInconsistentBuckets()) {
@@ -712,14 +714,13 @@ public class MessageBusVisitorSessionTestCase {
params.setRoute("extraterrestrial/highway");
params.setTimeoutMs(1337);
params.setMaxPending(111);
- params.setFieldSet("[header]");
+ params.setFieldSet(DocIdOnly.NAME);
params.setLoadType(new LoadType(3, "samnmax", DocumentProtocol.Priority.HIGH_3));
params.setVisitRemoves(true);
params.setVisitInconsistentBuckets(true);
params.setTraceLevel(9);
- MessageBusVisitorSession visitorSession = createVisitorSession(
- sender, receiver, executor, params);
+ MessageBusVisitorSession visitorSession = createVisitorSession(sender, receiver, executor, params);
visitorSession.start();
// Process initial task which sends a single CreateVisitor.
@@ -735,7 +736,7 @@ public class MessageBusVisitorSessionTestCase {
"from timestamp=9001\n" +
"to timestamp=10001\n" +
"max pending=111\n" +
- "fieldset=[header]\n" +
+ "fieldset=[id]\n" +
"visit inconsistent=true\n" +
"visit removes=true\n" +
"parameters=[\n" +
diff --git a/documentapi/src/tests/policies/policies_test.cpp b/documentapi/src/tests/policies/policies_test.cpp
index 0f0b9bd4504..61a8618556b 100644
--- a/documentapi/src/tests/policies/policies_test.cpp
+++ b/documentapi/src/tests/policies/policies_test.cpp
@@ -329,7 +329,7 @@ Test::testExternSend()
mbus::DestinationSession::UP ds = dst.mb.createDestinationSession("session", true, dr);
// Send message from local node to remote cluster and resolve route there.
- mbus::Message::UP msg(new GetDocumentMessage(DocumentId("id:ns:testdoc::"), 0));
+ mbus::Message::UP msg = std::make_unique<GetDocumentMessage>(DocumentId("id:ns:testdoc::"));
msg->getTrace().setLevel(9);
msg->setRoute(mbus::Route::parse(vespalib::make_string("[Extern:tcp/localhost:%d;itr/session] default", slobrok.port())));
@@ -365,7 +365,7 @@ Test::testExternMultipleSlobroks()
std::make_shared<DocumentProtocol>(_loadTypes, _repo));
mbus::DestinationSession::UP ds = dst.mb.createDestinationSession("session", true, dr);
- mbus::Message::UP msg(new GetDocumentMessage(DocumentId("id:ns:testdoc::"), 0));
+ mbus::Message::UP msg = std::make_unique<GetDocumentMessage>(DocumentId("id:ns:testdoc::"));
msg->setRoute(mbus::Route::parse(vespalib::make_string("[Extern:%s;dst/session]", spec.c_str())));
ASSERT_TRUE(ss->send(std::move(msg)).isAccepted());
ASSERT_TRUE((msg = dr.getMessage(TIMEOUT)));
@@ -381,7 +381,7 @@ Test::testExternMultipleSlobroks()
std::make_shared<DocumentProtocol>(_loadTypes, _repo));
mbus::DestinationSession::UP ds = dst.mb.createDestinationSession("session", true, dr);
- mbus::Message::UP msg(new GetDocumentMessage(DocumentId("id:ns:testdoc::"), 0));
+ mbus::Message::UP msg = std::make_unique<GetDocumentMessage>(DocumentId("id:ns:testdoc::"));
msg->setRoute(mbus::Route::parse(vespalib::make_string("[Extern:%s;dst/session]", spec.c_str())));
ASSERT_TRUE(ss->send(std::move(msg)).isAccepted());
ASSERT_TRUE((msg = dr.getMessage(TIMEOUT)));
@@ -615,7 +615,7 @@ Test::testDocumentRouteSelector()
.addRecipient("foo")
.addRecipient("bar"));
- frame.setMessage(make_unique<GetDocumentMessage>(DocumentId("id:ns:testdoc::"), 0));
+ frame.setMessage(make_unique<GetDocumentMessage>(DocumentId("id:ns:testdoc::")));
EXPECT_TRUE(frame.testSelect(StringList().add("foo")));
mbus::Message::UP put = make_unique<PutDocumentMessage>(make_shared<Document>(*_docType, DocumentId("id:ns:testdoc::")));
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.cpp
index 821af8e256b..acc3e61843e 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.cpp
@@ -3,20 +3,21 @@
#include "getdocumentmessage.h"
#include "getdocumentreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
+#include <vespa/document/fieldset/fieldsets.h>
namespace documentapi {
GetDocumentMessage::GetDocumentMessage() :
DocumentMessage(),
_documentId(),
- _fieldSet("[all]")
+ _fieldSet(document::AllFields::NAME)
{}
-GetDocumentMessage::GetDocumentMessage(const document::DocumentId &documentId, int flags) :
+GetDocumentMessage::GetDocumentMessage(const document::DocumentId &documentId) :
DocumentMessage(),
- _documentId(documentId)
+ _documentId(documentId),
+ _fieldSet(document::AllFields::NAME)
{
- setFlags(flags);
}
GetDocumentMessage::GetDocumentMessage(const document::DocumentId &documentId,
@@ -27,13 +28,12 @@ GetDocumentMessage::GetDocumentMessage(const document::DocumentId &documentId,
{
}
-GetDocumentMessage::~GetDocumentMessage() {
-}
+GetDocumentMessage::~GetDocumentMessage() = default;
DocumentReply::UP
GetDocumentMessage::doCreateReply() const
{
- return DocumentReply::UP(new GetDocumentReply());
+ return std::make_unique<GetDocumentReply>();
}
uint32_t
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.h
index 619367faf4d..d157b68c4ed 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.h
@@ -21,11 +21,6 @@ public:
typedef std::unique_ptr<GetDocumentMessage> UP;
typedef std::shared_ptr<GetDocumentMessage> SP;
- enum {
- FLAG_NONE = 0,
- FLAG_ONLY_HEADER = 1
- };
-
/**
* Constructs a new message for deserialization.
*/
@@ -35,9 +30,8 @@ public:
* Constructs a new document get message.
*
* @param documentId The identifier of the document to retrieve.
- * @param flags How to retrieve the document.
*/
- GetDocumentMessage(const document::DocumentId &documentId, int flags = 0);
+ explicit GetDocumentMessage(const document::DocumentId &documentId);
/**
* Constructs a new document get message.
@@ -45,8 +39,7 @@ public:
* @param documentId The identifier of the document to retrieve.
* @param fieldSet The fields to retrieve (comma-separated)
*/
- GetDocumentMessage(const document::DocumentId &documentId,
- vespalib::stringref fieldSet);
+ GetDocumentMessage(const document::DocumentId &documentId, vespalib::stringref fieldSet);
~GetDocumentMessage();
@@ -65,23 +58,6 @@ public:
void setDocumentId(const document::DocumentId &documentId);
/**
- * Returs the storage flags of this message.
- *
- * @return The storage flags.
- */
- int getFlags() const { return (_fieldSet == "[header]" ? FLAG_ONLY_HEADER :
- FLAG_NONE); };
-
- /**
- * Sets the storage flags of this message.
- *
- * @param flags The flags to set.
- */
- void setFlags(int flags) {
- _fieldSet = (flags == FLAG_ONLY_HEADER) ? "[header]" : "[all]";
- }
-
- /**
* Returns the fields to be retrieved by the get.
*/
const string& getFieldSet() const { return _fieldSet; }
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
index 453e93fd7eb..26e5344df2d 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
@@ -5,6 +5,7 @@
#include <vespa/vespalib/objects/nbostream.h>
#include <vespa/vespalib/util/growablebytebuffer.h>
#include <vespa/document/util/bytebuffer.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <climits>
using document::FixedBucketSpaces;
@@ -24,7 +25,7 @@ CreateVisitorMessage::CreateVisitorMessage() :
_fromTime(0),
_toTime(0),
_visitRemoves(false),
- _fieldSet("[all]"),
+ _fieldSet(document::AllFields::NAME),
_visitInconsistentBuckets(false),
_params(),
_version(42),
@@ -47,7 +48,7 @@ CreateVisitorMessage::CreateVisitorMessage(const string& libraryName,
_fromTime(0),
_toTime(0),
_visitRemoves(false),
- _fieldSet("[all]"),
+ _fieldSet(document::AllFields::NAME),
_visitInconsistentBuckets(false),
_params(),
_version(42),
diff --git a/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp b/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp
index 036a2b87692..3d15d09814f 100644
--- a/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp
+++ b/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp
@@ -43,8 +43,7 @@ PersistenceProvider::UP getSpi(ConformanceTest::PersistenceFactory &factory,
enum SELECTION_FIELDS
{
METADATA_ONLY = 0,
- FIELDS_HEADER = 1,
- FIELDS_BODY = 2
+ ALL_FIELDS = 1
};
CreateIteratorResult
@@ -52,13 +51,11 @@ createIterator(PersistenceProvider& spi,
const Bucket& b,
const Selection& sel,
IncludedVersions versions = NEWEST_DOCUMENT_ONLY,
- int fields = FIELDS_HEADER | FIELDS_BODY)
+ int fields = ALL_FIELDS)
{
document::FieldSet::UP fieldSet;
- if (fields & FIELDS_BODY) {
+ if (fields & ALL_FIELDS) {
fieldSet.reset(new document::AllFields());
- } else if (fields & FIELDS_HEADER) {
- fieldSet.reset(new document::HeaderFields());
} else {
fieldSet.reset(new document::DocIdOnly());
}
diff --git a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp
index 9342ddd4b8a..b76d433337b 100644
--- a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp
+++ b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp
@@ -748,7 +748,9 @@ TEST("require that document selection and timestamp range works together") {
}
TEST("require that fieldset limits fields returned") {
- DocumentIterator itr(bucket(5), document::HeaderFields(), selectAll(), newestV(), -1, false);
+ document::FieldCollection limited(getDocType());
+ limited.insert(getDocType().getField("header"));
+ DocumentIterator itr(bucket(5), limited, selectAll(), newestV(), -1, false);
itr.add(doc_with_fields("id:ns:foo::xxx1", Timestamp(1), bucket(5)));
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
diff --git a/storage/src/tests/distributor/distributortest.cpp b/storage/src/tests/distributor/distributortest.cpp
index 0da860d0542..dc0a01448af 100644
--- a/storage/src/tests/distributor/distributortest.cpp
+++ b/storage/src/tests/distributor/distributortest.cpp
@@ -8,6 +8,7 @@
#include <vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h>
#include <tests/distributor/distributortestutil.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/document/test/make_bucket_space.h>
#include <vespa/storage/config/config-stor-distributormanager.h>
@@ -755,7 +756,7 @@ auto make_dummy_get_command_for_bucket_1() {
return std::make_shared<api::GetCommand>(
makeDocumentBucket(document::BucketId(0)),
document::DocumentId("id:foo:testdoctype1:n=1:foo"),
- "[all]");
+ document::AllFields::NAME);
}
}
diff --git a/storage/src/tests/distributor/externaloperationhandlertest.cpp b/storage/src/tests/distributor/externaloperationhandlertest.cpp
index 03ba148277e..1f0fba90200 100644
--- a/storage/src/tests/distributor/externaloperationhandlertest.cpp
+++ b/storage/src/tests/distributor/externaloperationhandlertest.cpp
@@ -8,6 +8,7 @@
#include <vespa/storageapi/message/persistence.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/update/documentupdate.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/vespalib/gtest/gtest.h>
@@ -157,13 +158,13 @@ ExternalOperationHandlerTest::findOwned1stNotOwned2ndInStates(
std::shared_ptr<api::GetCommand>
ExternalOperationHandlerTest::makeGetCommand(const vespalib::string& id) const {
- return std::make_shared<api::GetCommand>(makeDocumentBucket(document::BucketId(0)), DocumentId(id), "[all]");
+ return std::make_shared<api::GetCommand>(makeDocumentBucket(document::BucketId(0)), DocumentId(id), document::AllFields::NAME);
}
std::shared_ptr<api::GetCommand>
ExternalOperationHandlerTest::makeGetCommandForUser(uint64_t id) const {
DocumentId docId(vespalib::make_string("id:foo:test:n=%" PRIu64 ":bar", id));
- return std::make_shared<api::GetCommand>(makeDocumentBucket(document::BucketId(0)), docId, "[all]");
+ return std::make_shared<api::GetCommand>(makeDocumentBucket(document::BucketId(0)), docId, document::AllFields::NAME);
}
std::shared_ptr<api::UpdateCommand> ExternalOperationHandlerTest::makeUpdateCommand(
diff --git a/storage/src/tests/distributor/getoperationtest.cpp b/storage/src/tests/distributor/getoperationtest.cpp
index d4d14314790..09e4f41d275 100644
--- a/storage/src/tests/distributor/getoperationtest.cpp
+++ b/storage/src/tests/distributor/getoperationtest.cpp
@@ -3,6 +3,7 @@
#include <vespa/config/helper/configgetter.h>
#include <vespa/document/config/config-documenttypes.h>
#include <vespa/document/repo/documenttyperepo.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/storage/bucketdb/bucketdatabase.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
#include <vespa/storage/distributor/externaloperationhandler.h>
@@ -53,7 +54,7 @@ struct GetOperationTest : Test, DistributorTestUtil {
}
void sendGet(api::InternalReadConsistency consistency = api::InternalReadConsistency::Strong) {
- auto msg = std::make_shared<api::GetCommand>(makeDocumentBucket(BucketId(0)), docId, "[all]");
+ auto msg = std::make_shared<api::GetCommand>(makeDocumentBucket(BucketId(0)), docId, document::AllFields::NAME);
op = std::make_unique<GetOperation>(
getExternalOperationHandler(), getDistributorBucketSpace(),
getDistributorBucketSpace().getBucketDatabase().acquire_read_guard(),
diff --git a/storage/src/tests/distributor/twophaseupdateoperationtest.cpp b/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
index e42e7684f81..635e5b9883b 100644
--- a/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
+++ b/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
@@ -1,18 +1,16 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/helper/configgetter.h>
-#include <vespa/document/config/config-documenttypes.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/base/testdocrepo.h>
#include <vespa/document/update/arithmeticvalueupdate.h>
-#include <iomanip>
-#include <tests/common/dummystoragelink.h>
#include <vespa/storage/distributor/externaloperationhandler.h>
#include <vespa/storageapi/message/persistence.h>
#include <vespa/storage/distributor/operations/external/twophaseupdateoperation.h>
#include <tests/distributor/distributortestutil.h>
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/storage/distributor/distributor.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/vespalib/gtest/gtest.h>
#include <gmock/gmock.h>
@@ -1100,13 +1098,13 @@ TEST_F(ThreePhaseUpdateTest, metadata_only_gets_are_sent_if_3phase_update_enable
ASSERT_EQ("Get => 0,Get => 1", _sender.getCommands(true));
{
auto& get_cmd = dynamic_cast<const api::GetCommand&>(*_sender.command(0));
- EXPECT_EQ("[none]", get_cmd.getFieldSet());
+ EXPECT_EQ(document::NoFields::NAME, get_cmd.getFieldSet());
EXPECT_EQ(get_cmd.internal_read_consistency(), api::InternalReadConsistency::Weak);
checkMessageSettingsPropagatedTo(_sender.command(0));
}
{
auto& get_cmd = dynamic_cast<const api::GetCommand&>(*_sender.command(1));
- EXPECT_EQ("[none]", get_cmd.getFieldSet());
+ EXPECT_EQ(document::NoFields::NAME, get_cmd.getFieldSet());
EXPECT_EQ(get_cmd.internal_read_consistency(), api::InternalReadConsistency::Weak);
checkMessageSettingsPropagatedTo(_sender.command(1));
}
@@ -1125,7 +1123,7 @@ TEST_F(ThreePhaseUpdateTest, full_document_get_sent_to_replica_with_highest_time
ASSERT_EQ("Get => 1", _sender.getCommands(true, false, 2));
{
auto& get_cmd = dynamic_cast<const api::GetCommand&>(*_sender.command(2));
- EXPECT_EQ("[all]", get_cmd.getFieldSet());
+ EXPECT_EQ(document::AllFields::NAME, get_cmd.getFieldSet());
EXPECT_EQ(get_cmd.internal_read_consistency(), api::InternalReadConsistency::Strong);
}
}
diff --git a/storage/src/tests/distributor/visitoroperationtest.cpp b/storage/src/tests/distributor/visitoroperationtest.cpp
index 5d7871376cb..8a9d8063525 100644
--- a/storage/src/tests/distributor/visitoroperationtest.cpp
+++ b/storage/src/tests/distributor/visitoroperationtest.cpp
@@ -9,11 +9,9 @@
#include <vespa/storage/distributor/distributormetricsset.h>
#include <tests/distributor/distributortestutil.h>
#include <vespa/storage/distributor/distributor.h>
-#include <tests/common/dummystoragelink.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/document/test/make_bucket_space.h>
#include <vespa/vespalib/gtest/gtest.h>
-#include <gmock/gmock.h>
-#include <ostream>
using namespace document;
using namespace storage::api;
@@ -57,7 +55,7 @@ struct VisitorOperationTest : Test, DistributorTestUtil {
makeBucketSpace(), libraryName, instanceId, docSelection);
cmd->setControlDestination("controldestination");
cmd->setDataDestination("datadestination");
- cmd->setFieldSet("[header]");
+ cmd->setFieldSet(document::AllFields::NAME);
if (visitRemoves) {
cmd->setVisitRemoves();
}
@@ -176,7 +174,7 @@ VisitorOperationTest::doStandardVisitTest(const std::string& clusterState)
msg->setToTime(0);
msg->addBucketToBeVisited(id);
msg->addBucketToBeVisited(nullId);
- msg->setFieldSet("[header]");
+ msg->setFieldSet(document::AllFields::NAME);
msg->setVisitRemoves();
msg->setTimeout(1234ms);
msg->getTrace().setLevel(7);
@@ -201,7 +199,7 @@ VisitorOperationTest::doStandardVisitTest(const std::string& clusterState)
EXPECT_EQ(1, cvc->getBuckets().size());
EXPECT_EQ(api::Timestamp(10), cvc->getFromTime());
EXPECT_GT(cvc->getToTime(), 0);
- EXPECT_EQ("[header]", cvc->getFieldSet());
+ EXPECT_EQ(document::AllFields::NAME, cvc->getFieldSet());
EXPECT_TRUE(cvc->visitRemoves());
EXPECT_EQ(1234ms, cvc->getTimeout());
EXPECT_EQ(7, cvc->getTrace().getLevel());
diff --git a/storage/src/tests/persistence/common/filestortestfixture.cpp b/storage/src/tests/persistence/common/filestortestfixture.cpp
index 63b7885fc53..352f1326463 100644
--- a/storage/src/tests/persistence/common/filestortestfixture.cpp
+++ b/storage/src/tests/persistence/common/filestortestfixture.cpp
@@ -5,6 +5,7 @@
#include <vespa/persistence/dummyimpl/dummypersistence.h>
#include <tests/persistence/common/filestortestfixture.h>
#include <vespa/document/repo/documenttyperepo.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/persistence/spi/test.h>
#include <sstream>
@@ -96,8 +97,7 @@ FileStorTestFixture::TestFileStorComponents::sendDummyGet(
{
std::ostringstream id;
id << "id:foo:testdoctype1:n=" << bid.getId() << ":0";
- std::shared_ptr<api::GetCommand> cmd(
- new api::GetCommand(makeDocumentBucket(bid), document::DocumentId(id.str()), "[all]"));
+ auto cmd = std::make_shared<api::GetCommand>(makeDocumentBucket(bid), document::DocumentId(id.str()), document::AllFields::NAME);
cmd->setAddress(makeSelfAddress());
cmd->setPriority(255);
top.sendDown(cmd);
diff --git a/storage/src/tests/persistence/filestorage/filestormanagertest.cpp b/storage/src/tests/persistence/filestorage/filestormanagertest.cpp
index bf0083311fb..b7f2cb81956 100644
--- a/storage/src/tests/persistence/filestorage/filestormanagertest.cpp
+++ b/storage/src/tests/persistence/filestorage/filestormanagertest.cpp
@@ -6,6 +6,7 @@
#include <tests/persistence/filestorage/forwardingmessagesender.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/storage/storageserver/statemanager.h>
#include <vespa/storage/bucketdb/bucketmanager.h>
#include <vespa/storage/persistence/persistencethread.h>
@@ -20,7 +21,6 @@
#include <vespa/persistence/spi/test.h>
#include <vespa/config/common/exceptions.h>
#include <vespa/fastos/file.h>
-#include <vespa/vespalib/util/time.h>
#include <vespa/vespalib/gtest/gtest.h>
#include <atomic>
#include <thread>
@@ -281,7 +281,7 @@ TEST_F(FileStorManagerTest, header_only_put) {
}
// Getting it
{
- auto cmd = std::make_shared<api::GetCommand>(makeDocumentBucket(bid), doc->getId(), "[all]");
+ auto cmd = std::make_shared<api::GetCommand>(makeDocumentBucket(bid), doc->getId(), document::AllFields::NAME);
cmd->setAddress(address);
top.sendDown(cmd);
top.waitForMessages(1, _waitTime);
@@ -870,7 +870,7 @@ TEST_F(FileStorManagerTest, split1) {
document::BucketId bucket(
17, i % 3 == 0 ? 0x10001 : 0x0100001);
auto cmd = std::make_shared<api::GetCommand>(
- makeDocumentBucket(bucket), documents[i]->getId(), "[all]");
+ makeDocumentBucket(bucket), documents[i]->getId(), document::AllFields::NAME);
api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 3);
cmd->setAddress(address);
filestorHandler.schedule(cmd, 0);
@@ -906,7 +906,7 @@ TEST_F(FileStorManagerTest, split1) {
documents[i]->getId()).getRawId());
}
auto cmd = std::make_shared<api::GetCommand>(
- makeDocumentBucket(bucket), documents[i]->getId(), "[all]");
+ makeDocumentBucket(bucket), documents[i]->getId(), document::AllFields::NAME);
api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 3);
cmd->setAddress(address);
filestorHandler.schedule(cmd, 0);
@@ -993,7 +993,7 @@ TEST_F(FileStorManagerTest, split_single_group) {
for (uint32_t i=0; i<documents.size(); ++i) {
document::BucketId bucket(17, state ? 0x10001 : 0x00001);
auto cmd = std::make_shared<api::GetCommand>
- (makeDocumentBucket(bucket), documents[i]->getId(), "[all]");
+ (makeDocumentBucket(bucket), documents[i]->getId(), document::AllFields::NAME);
api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 3);
cmd->setAddress(address);
filestorHandler.schedule(cmd, 0);
@@ -1221,7 +1221,7 @@ TEST_F(FileStorManagerTest, join) {
for (uint32_t i=0; i<documents.size(); ++i) {
document::BucketId bucket(16, 1);
auto cmd = std::make_shared<api::GetCommand>(
- makeDocumentBucket(bucket), documents[i]->getId(), "[all]");
+ makeDocumentBucket(bucket), documents[i]->getId(), document::AllFields::NAME);
api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 3);
cmd->setAddress(address);
filestorHandler.schedule(cmd, 0);
@@ -1245,8 +1245,7 @@ createIterator(DummyStorageLink& link,
const document::BucketId& bucketId,
const std::string& docSel,
framework::MicroSecTime fromTime = framework::MicroSecTime(0),
- framework::MicroSecTime toTime = framework::MicroSecTime::max(),
- bool headerOnly = false)
+ framework::MicroSecTime toTime = framework::MicroSecTime::max())
{
spi::Bucket bucket(makeSpiBucket(bucketId));
@@ -1256,7 +1255,7 @@ createIterator(DummyStorageLink& link,
selection.setToTimestamp(spi::Timestamp(toTime.getTime()));
auto createIterCmd = std::make_shared<CreateIteratorCommand>(
makeDocumentBucket(bucket), selection,
- headerOnly ? "[header]" : "[all]",
+ document::AllFields::NAME,
spi::NEWEST_DOCUMENT_ONLY);
link.sendDown(createIterCmd);
link.waitForMessages(1, FileStorManagerTest::LONG_WAITTIME);
@@ -1358,7 +1357,7 @@ TEST_F(FileStorManagerTest, visiting) {
}
EXPECT_EQ(27u, totalDocs);
}
- // Visit bucket with min and max timestamps set, headers only
+ // Visit bucket with min and max timestamps set
{
document::BucketId bucket(16, 2);
spi::IteratorId iterId(
@@ -1366,8 +1365,7 @@ TEST_F(FileStorManagerTest, visiting) {
ids[1],
"",
framework::MicroSecTime(30),
- framework::MicroSecTime(40),
- true));
+ framework::MicroSecTime(40)));
uint32_t totalDocs = 0;
while (true) {
auto cmd = std::make_shared<GetIterCommand>(makeDocumentBucket(ids[1]), iterId, 16*1024);
@@ -2046,7 +2044,7 @@ TEST_F(FileStorManagerTest, get_command_size_is_added_to_metric) {
document::BucketId bucket(16, 4000);
createBucket(bucket, 0);
auto cmd = std::make_shared<api::GetCommand>(
- makeDocumentBucket(bucket), document::DocumentId("id:foo:testdoctype1::bar"), "[all]");
+ makeDocumentBucket(bucket), document::DocumentId("id:foo:testdoctype1::bar"), document::AllFields::NAME);
assert_request_size_set(c, std::move(cmd), thread_metrics_of(*c.manager)->get[defaultLoadType]);
}
diff --git a/storage/src/tests/persistence/persistencequeuetest.cpp b/storage/src/tests/persistence/persistencequeuetest.cpp
index 3754a82e7ae..289d5462203 100644
--- a/storage/src/tests/persistence/persistencequeuetest.cpp
+++ b/storage/src/tests/persistence/persistencequeuetest.cpp
@@ -1,12 +1,11 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/log/log.h>
-#include <vespa/storageapi/message/bucket.h>
-#include <tests/persistence/common/persistenceproviderwrapper.h>
#include <vespa/persistence/dummyimpl/dummypersistence.h>
#include <tests/persistence/common/filestortestfixture.h>
#include <tests/persistence/filestorage/forwardingmessagesender.h>
#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/document/fieldset/fieldsets.h>
+#include <vespa/log/log.h>
LOG_SETUP(".persistencequeuetest");
@@ -80,7 +79,7 @@ std::shared_ptr<api::StorageMessage> PersistenceQueueTest::createPut(uint64_t bu
std::shared_ptr<api::StorageMessage> PersistenceQueueTest::createGet(uint64_t bucket) const {
auto cmd = std::make_shared<api::GetCommand>(
makeDocumentBucket(document::BucketId(16, bucket)),
- document::DocumentId(vespalib::make_string("id:foo:testdoctype1:n=%" PRIu64 ":0", bucket)), "[all]");
+ document::DocumentId(vespalib::make_string("id:foo:testdoctype1:n=%" PRIu64 ":0", bucket)), document::AllFields::NAME);
cmd->setAddress(makeSelfAddress());
return cmd;
}
diff --git a/storage/src/tests/persistence/persistencetestutils.cpp b/storage/src/tests/persistence/persistencetestutils.cpp
index cf8bf71708d..504767e68c7 100644
--- a/storage/src/tests/persistence/persistencetestutils.cpp
+++ b/storage/src/tests/persistence/persistencetestutils.cpp
@@ -219,15 +219,11 @@ spi::GetResult
PersistenceTestUtils::doGetOnDisk(
uint16_t disk,
const document::BucketId& bucketId,
- const document::DocumentId& docId,
- bool headerOnly)
+ const document::DocumentId& docId)
{
- document::FieldSet::UP fieldSet(new document::AllFields());
+ auto fieldSet = std::make_unique<document::AllFields>();
spi::Context context(defaultLoadType, spi::Priority(0),
spi::Trace::TraceLevel(0));
- if (headerOnly) {
- fieldSet.reset(new document::HeaderFields());
- }
return getPersistenceProvider().get(makeSpiBucket(
bucketId, spi::PartitionId(disk)), *fieldSet, docId, context);
}
diff --git a/storage/src/tests/persistence/persistencetestutils.h b/storage/src/tests/persistence/persistencetestutils.h
index cdd08d42565..6cee3b79ab8 100644
--- a/storage/src/tests/persistence/persistencetestutils.h
+++ b/storage/src/tests/persistence/persistencetestutils.h
@@ -190,14 +190,12 @@ public:
spi::GetResult doGetOnDisk(
uint16_t disk,
const document::BucketId& bucketId,
- const document::DocumentId& docId,
- bool headerOnly);
+ const document::DocumentId& docId);
spi::GetResult doGet(
const document::BucketId& bucketId,
- const document::DocumentId& docId,
- bool headerOnly)
- { return doGetOnDisk(0, bucketId, docId, headerOnly); }
+ const document::DocumentId& docId)
+ { return doGetOnDisk(0, bucketId, docId); }
std::shared_ptr<document::DocumentUpdate> createBodyUpdate(
const document::DocumentId& id,
diff --git a/storage/src/tests/persistence/testandsettest.cpp b/storage/src/tests/persistence/testandsettest.cpp
index 578a90081c7..18d78e1e8cf 100644
--- a/storage/src/tests/persistence/testandsettest.cpp
+++ b/storage/src/tests/persistence/testandsettest.cpp
@@ -7,6 +7,7 @@
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/document/update/documentupdate.h>
#include <vespa/document/update/assignvalueupdate.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/persistence/spi/test.h>
#include <functional>
@@ -252,7 +253,7 @@ TestAndSetTest::createTestDocument()
document::Document::SP TestAndSetTest::retrieveTestDocument()
{
- auto get = std::make_shared<api::GetCommand>(BUCKET, testDocId, "[all]");
+ auto get = std::make_shared<api::GetCommand>(BUCKET, testDocId, document::AllFields::NAME);
auto tracker = thread->handleGet(*get, createTracker(get, BUCKET));
assert(tracker->getResult() == api::ReturnCode::Result::OK);
diff --git a/storage/src/tests/storageserver/bouncertest.cpp b/storage/src/tests/storageserver/bouncertest.cpp
index 29a56b234d0..46dad62de48 100644
--- a/storage/src/tests/storageserver/bouncertest.cpp
+++ b/storage/src/tests/storageserver/bouncertest.cpp
@@ -10,6 +10,7 @@
#include <tests/common/dummystoragelink.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/storageapi/message/persistence.h>
#include <vespa/config/common/exceptions.h>
#include <vespa/vespalib/gtest/gtest.h>
@@ -122,7 +123,7 @@ std::shared_ptr<api::StorageCommand> create_dummy_get_message() {
return std::make_shared<api::GetCommand>(
document::Bucket(document::FixedBucketSpaces::default_space(), document::BucketId(0)),
document::DocumentId("id:ns:foo::bar"),
- "[all]");
+ document::AllFields::NAME);
}
TEST_F(BouncerTest, future_timestamp) {
diff --git a/storage/src/tests/storageserver/communicationmanagertest.cpp b/storage/src/tests/storageserver/communicationmanagertest.cpp
index 8444319b395..0f95f7e7ece 100644
--- a/storage/src/tests/storageserver/communicationmanagertest.cpp
+++ b/storage/src/tests/storageserver/communicationmanagertest.cpp
@@ -11,11 +11,11 @@
#include <tests/common/dummystoragelink.h>
#include <tests/common/testhelper.h>
#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/documentapi/messagebus/messages/getdocumentmessage.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/documentapi/messagebus/messages/removedocumentmessage.h>
#include <vespa/documentapi/messagebus/messages/getdocumentreply.h>
-#include <vespa/vespalib/util/time.h>
#include <thread>
#include <vespa/vespalib/gtest/gtest.h>
@@ -35,7 +35,7 @@ struct CommunicationManagerTest : Test {
{
auto cmd = std::make_shared<api::GetCommand>(makeDocumentBucket(document::BucketId(0)),
document::DocumentId("id:ns:mytype::mydoc"),
- "[all]");
+ document::AllFields::NAME);
cmd->setAddress(api::StorageMessageAddress("storage", lib::NodeType::STORAGE, 1));
cmd->setPriority(priority);
return cmd;
@@ -71,7 +71,7 @@ TEST_F(CommunicationManagerTest, simple) {
// Send a message through from distributor to storage
auto cmd = std::make_shared<api::GetCommand>(
- makeDocumentBucket(document::BucketId(0)), document::DocumentId("id:ns:mytype::mydoc"), "[all]");
+ makeDocumentBucket(document::BucketId(0)), document::DocumentId("id:ns:mytype::mydoc"), document::AllFields::NAME);
cmd->setAddress(api::StorageMessageAddress("storage", lib::NodeType::STORAGE, 1));
distributorLink->sendUp(cmd);
storageLink->waitForMessages(1, MESSAGE_WAIT_TIME_SEC);
diff --git a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp
index 73788d0affe..53940426a63 100644
--- a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp
@@ -9,6 +9,7 @@
#include <vespa/document/datatype/documenttype.h>
#include <vespa/document/fieldvalue/document.h>
#include <vespa/document/select/parser.h>
+#include <vespa/document/fieldset//fieldsets.h>
#include <vespa/vespalib/stllike/hash_map.hpp>
#include <vespa/log/log.h>
@@ -205,7 +206,7 @@ TwoPhaseUpdateOperation::startSafePathUpdate(DistributorMessageSender& sender)
std::shared_ptr<GetOperation>
TwoPhaseUpdateOperation::create_initial_safe_path_get_operation() {
document::Bucket bucket(_updateCmd->getBucket().getBucketSpace(), document::BucketId(0));
- const char* field_set = _use_initial_cheap_metadata_fetch_phase ? "[none]" : "[all]";
+ const char* field_set = _use_initial_cheap_metadata_fetch_phase ? document::NoFields::NAME : document::AllFields::NAME;
auto get = std::make_shared<api::GetCommand>(bucket, _updateCmd->getDocumentId(), field_set);
copyMessageSettings(*_updateCmd, *get);
// Metadata-only Gets just look at the data in the meta-store, not any fields.
@@ -345,7 +346,7 @@ TwoPhaseUpdateOperation::handleFastPathReceive(DistributorMessageSender& sender,
_updateReply = intermediate._reply;
_fast_path_repair_source_node = bestNode.second;
document::Bucket bucket(_updateCmd->getBucket().getBucketSpace(), bestNode.first);
- auto cmd = std::make_shared<api::GetCommand>(bucket, _updateCmd->getDocumentId(), "[all]");
+ auto cmd = std::make_shared<api::GetCommand>(bucket, _updateCmd->getDocumentId(), document::AllFields::NAME);
copyMessageSettings(*_updateCmd, *cmd);
sender.sendToNode(lib::NodeType::STORAGE, _fast_path_repair_source_node, cmd);
@@ -471,7 +472,7 @@ void TwoPhaseUpdateOperation::handle_safe_path_received_metadata_get(
LOG(debug, "Update(%s): sending single payload Get to %s on node %u (had timestamp %" PRIu64 ")",
update_doc_id().c_str(), bucket.toString().c_str(),
newest_replica->node, newest_replica->timestamp);
- auto cmd = std::make_shared<api::GetCommand>(bucket, _updateCmd->getDocumentId(), "[all]");
+ auto cmd = std::make_shared<api::GetCommand>(bucket, _updateCmd->getDocumentId(), document::AllFields::NAME);
copyMessageSettings(*_updateCmd, *cmd);
sender.sendToNode(lib::NodeType::STORAGE, newest_replica->node, cmd);
diff --git a/storage/src/vespa/storage/persistence/bucketprocessor.cpp b/storage/src/vespa/storage/persistence/bucketprocessor.cpp
index d6c549ef6f4..c88b08612d7 100644
--- a/storage/src/vespa/storage/persistence/bucketprocessor.cpp
+++ b/storage/src/vespa/storage/persistence/bucketprocessor.cpp
@@ -48,7 +48,7 @@ BucketProcessor::iterateAll(spi::PersistenceProvider& provider,
= spi::Selection(spi::DocumentSelection(documentSelection));
spi::CreateIteratorResult createIterResult(provider.createIterator(
bucket,
- document::HeaderFields(),
+ document::AllFields(),
sel,
versions,
context));
@@ -64,8 +64,7 @@ BucketProcessor::iterateAll(spi::PersistenceProvider& provider,
IteratorGuard iteratorGuard(provider, iteratorId, context);
while (true) {
- spi::IterateResult result(
- provider.iterate(iteratorId, UINT64_MAX, context));
+ spi::IterateResult result(provider.iterate(iteratorId, UINT64_MAX, context));
if (result.getErrorCode() != spi::Result::ErrorType::NONE) {
vespalib::asciistream ss;
ss << "Failed: " << result.getErrorMessage();
diff --git a/storage/src/vespa/storage/visiting/visitor.cpp b/storage/src/vespa/storage/visiting/visitor.cpp
index c9cda047784..dcd8cc4ba39 100644
--- a/storage/src/vespa/storage/visiting/visitor.cpp
+++ b/storage/src/vespa/storage/visiting/visitor.cpp
@@ -7,6 +7,7 @@
#include <vespa/storage/persistence/messages.h>
#include <vespa/documentapi/messagebus/messages/visitor.h>
#include <vespa/document/select/node.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/vespalib/stllike/hash_map.hpp>
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/util/stringfmt.h>
@@ -165,7 +166,7 @@ Visitor::VisitorOptions::VisitorOptions()
_maxParallel(1),
_maxParallelOneBucket(2),
_maxPending(1),
- _fieldSet("[all]"),
+ _fieldSet(document::AllFields::NAME),
_visitRemoves(false)
{
}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
index 0cfd2160497..8deb689d3a8 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
@@ -10,11 +10,13 @@
#include <vespa/storageapi/message/visitor.h>
#include <vespa/storageapi/message/removelocation.h>
#include <vespa/vespalib/util/exceptions.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/log/log.h>
LOG_SETUP(".storage.api.mbusprot.serialization.4_2");
using document::BucketSpace;
+using document::AllFields;
namespace storage::mbusprot {
@@ -29,7 +31,7 @@ void ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::GetCommand& msg)
buf.putString(msg.getDocumentId().toString());
putBucket(msg.getBucket(), buf);
buf.putLong(msg.getBeforeTimestamp());
- buf.putBoolean(msg.getFieldSet() == "[header]");
+ buf.putBoolean(false);
onEncodeCommand(buf, msg);
}
@@ -39,8 +41,9 @@ ProtocolSerialization4_2::onDecodeGetCommand(BBuf& buf) const
document::DocumentId did(SH::getString(buf));
document::Bucket bucket = getBucket(buf);
api::Timestamp beforeTimestamp(SH::getLong(buf));
- bool headerOnly(SH::getBoolean(buf));
- auto msg = std::make_unique<api::GetCommand>(bucket, did, headerOnly ? "[header]" : "[all]", beforeTimestamp);
+ bool headerOnly(SH::getBoolean(buf)); // Ignored header only flag
+ (void) headerOnly;
+ auto msg = std::make_unique<api::GetCommand>(bucket, did, AllFields::NAME, beforeTimestamp);
onDecodeCommand(buf, *msg);
return msg;
}
@@ -371,7 +374,7 @@ ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::CreateVisitorCommand&
}
buf.putBoolean(msg.visitRemoves());
- buf.putBoolean(msg.getFieldSet() == "[header]");
+ buf.putBoolean(false);
buf.putBoolean(msg.visitInconsistentBuckets());
buf.putInt(vespalib::count_ms(msg.getQueueTimeout()));
msg.getParameters().serialize(buf);
@@ -409,7 +412,7 @@ ProtocolSerialization4_2::onDecodeCreateVisitorCommand(BBuf& buf) const
msg->setVisitRemoves();
}
if (SH::getBoolean(buf)) {
- msg->setFieldSet("[header]");
+ msg->setFieldSet(AllFields::NAME);
}
if (SH::getBoolean(buf)) {
msg->setVisitInconsistentBuckets();
diff --git a/storageapi/src/vespa/storageapi/message/visitor.cpp b/storageapi/src/vespa/storageapi/message/visitor.cpp
index e531e73fea5..faf58361276 100644
--- a/storageapi/src/vespa/storageapi/message/visitor.cpp
+++ b/storageapi/src/vespa/storageapi/message/visitor.cpp
@@ -1,9 +1,9 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitor.h"
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/vespalib/util/array.hpp>
#include <climits>
-#include <ostream>
namespace storage::api {
@@ -32,7 +32,7 @@ CreateVisitorCommand::CreateVisitorCommand(document::BucketSpace bucketSpace,
_instanceId(instanceId),
_visitorId(0),
_visitRemoves(false),
- _fieldSet("[all]"),
+ _fieldSet(document::AllFields::NAME),
_visitInconsistentBuckets(false),
_queueTimeout(2000ms),
_maxPendingReplyCount(2),
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java
index 8f0e70f554c..3d3a8fc52ad 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java
@@ -6,6 +6,7 @@ import com.yahoo.document.DocumentId;
import com.yahoo.document.DocumentRemove;
import com.yahoo.document.FixedBucketSpaces;
import com.yahoo.document.TestAndSetCondition;
+import com.yahoo.document.fieldset.AllFields;
import com.yahoo.document.json.JsonWriter;
import com.yahoo.document.DocumentPut;
import com.yahoo.documentapi.DocumentAccess;
@@ -424,7 +425,7 @@ public class OperationHandlerImpl implements OperationHandler {
// document types in which case we can't explicitly state a single document type.
// This matches legacy /visit API and vespa-visit tool behavior.
params.fieldSet(options.fieldSet.orElse(
- restUri.isRootOnly() ? "[all]" : restUri.getDocumentType() + ":[document]"));
+ restUri.isRootOnly() ? AllFields.NAME : restUri.getDocumentType() + ":[document]"));
params.setMaxBucketsPerVisitor(1);
params.setMaxPending(32);
params.setMaxFirstPassHits(1);
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/OperationHandlerImplTest.java b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/OperationHandlerImplTest.java
index 91c52c4b98b..efb25f0e2b3 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/OperationHandlerImplTest.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/OperationHandlerImplTest.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.restapi;
+import com.yahoo.document.fieldset.AllFields;
import com.yahoo.documentapi.DocumentAccess;
import com.yahoo.documentapi.ProgressToken;
import com.yahoo.documentapi.SyncParameters;
@@ -419,7 +420,7 @@ public class OperationHandlerImplTest {
@Test
public void api_root_visiting_uses_all_fieldset_by_default() throws Exception {
VisitorParameters parameters = generatedVisitParametersFrom(apiRootVisitUri(), "", optionsBuilder().cluster("foo").build());
- assertEquals("[all]", parameters.getFieldSet());
+ assertEquals(AllFields.NAME, parameters.getFieldSet());
}
@Test
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespaget/CommandLineOptions.java b/vespaclient-java/src/main/java/com/yahoo/vespaget/CommandLineOptions.java
index 0bfdcbe75ff..b07c54399af 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespaget/CommandLineOptions.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespaget/CommandLineOptions.java
@@ -1,6 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
+import com.yahoo.document.fieldset.AllFields;
+import com.yahoo.document.fieldset.DocIdOnly;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
@@ -67,7 +69,7 @@ public class CommandLineOptions {
options.addOption(Option.builder("f")
.hasArg(true)
- .desc("Retrieve the specified fields only (see https://docs.vespa.ai/documentation/documents.html#fieldsets) (default '[all]')")
+ .desc("Retrieve the specified fields only (see https://docs.vespa.ai/documentation/documents.html#fieldsets) (default '" + AllFields.NAME + "')")
.longOpt(FIELDSET_OPTION)
.argName("fieldset").build());
@@ -178,9 +180,9 @@ public class CommandLineOptions {
}
if (printIdsOnly) {
- fieldSet = "[id]";
+ fieldSet = DocIdOnly.NAME;
} else if (fieldSet.isEmpty()) {
- fieldSet = "[all]";
+ fieldSet = AllFields.NAME;
}
if (!cluster.isEmpty() && !route.isEmpty()) {
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java
index 83199c76e5a..88eed9dfc59 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java
@@ -2,6 +2,7 @@
package com.yahoo.vespavisit;
import com.yahoo.document.FixedBucketSpaces;
+import com.yahoo.document.fieldset.DocIdOnly;
import com.yahoo.document.select.parser.ParseException;
import com.yahoo.documentapi.ProgressToken;
import com.yahoo.documentapi.VisitorControlHandler;
@@ -479,7 +480,7 @@ public class VdsVisit {
}
if (line.hasOption("i")) {
allParams.setPrintIdsOnly(true);
- params.fieldSet("[id]");
+ params.fieldSet(DocIdOnly.NAME);
}
if (line.hasOption("p")) {
params.setResumeFileName(line.getOptionValue("p"));
@@ -512,7 +513,7 @@ public class VdsVisit {
if (line.hasOption("statistics")) {
allParams.setStatisticsParts(line.getOptionValue("statistics"));
- params.fieldSet("[id]");
+ params.fieldSet(DocIdOnly.NAME);
params.setVisitorLibrary("CountVisitor");
}
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java b/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java
index 50b499b8df2..20d12d3f55f 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java
@@ -1,15 +1,24 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
+import com.yahoo.document.fieldset.AllFields;
+import com.yahoo.document.fieldset.DocIdOnly;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.io.UnsupportedEncodingException;
import java.util.Iterator;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* Test class for {@link CommandLineOptions}
@@ -45,7 +54,7 @@ public class CommandLineOptionsTest {
assertFalse(params.help);
assertFalse(params.documentIds.hasNext());
assertFalse(params.printIdsOnly);
- assertEquals("[all]", params.fieldSet);
+ assertEquals(AllFields.NAME, params.fieldSet);
assertEquals("default-get", params.route);
assertTrue(params.cluster.isEmpty());
assertEquals("client", params.configId);
@@ -92,7 +101,7 @@ public class CommandLineOptionsTest {
public void testInvalidCombination3() {
exception.expect(IllegalArgumentException.class);
exception.expectMessage("Field set option can not be used in combination with print ids option.");
- getParsedOptions("--printids", "--fieldset", "[header]");
+ getParsedOptions("--printids", "--fieldset", AllFields.NAME);
}
@Test
@@ -138,7 +147,7 @@ public class CommandLineOptionsTest {
@Test
public void testPrintids() {
ClientParameters params = getParsedOptions("--printids");
- assertEquals("[id]", params.fieldSet);
+ assertEquals(DocIdOnly.NAME, params.fieldSet);
}
@Test
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java b/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java
index c662e2fed62..d8b5c267bf2 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java
@@ -1,11 +1,11 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
-import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yahoo.document.DataType;
import com.yahoo.document.Document;
import com.yahoo.document.DocumentId;
+import com.yahoo.document.fieldset.AllFields;
import com.yahoo.documentapi.messagebus.MessageBusDocumentAccess;
import com.yahoo.documentapi.messagebus.MessageBusSyncSession;
import com.yahoo.documentapi.messagebus.loadtypes.LoadType;
@@ -96,7 +96,7 @@ public class DocumentRetrieverTest {
.setCluster("")
.setRoute("default")
.setConfigId("client")
- .setFieldSet("[all]")
+ .setFieldSet(AllFields.NAME)
.setPrintIdsOnly(false)
.setHelp(false)
.setShowDocSize(false)
@@ -180,7 +180,7 @@ public class DocumentRetrieverTest {
}
@Test
- public void testJsonOutput() throws DocumentRetrieverException, JsonParseException, IOException {
+ public void testJsonOutput() throws DocumentRetrieverException, IOException {
ClientParameters params = createParameters()
.setDocumentIds(asIterator(DOC_ID_1, DOC_ID_2, DOC_ID_3))
.setJsonOutput(true)
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTestCase.java b/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTestCase.java
index d9efe2c5129..4c8fbb1beee 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTestCase.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTestCase.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespavisit;
+import com.yahoo.document.fieldset.DocIdOnly;
import com.yahoo.document.select.parser.ParseException;
import com.yahoo.documentapi.*;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
@@ -83,7 +84,7 @@ public class VdsVisitTestCase {
assertNotNull(params);
assertEquals(654321, allParams.getFullTimeout());
assertEquals(654321, params.getTimeoutMs());
- assertEquals("[id]", params.getFieldSet());
+ assertEquals(DocIdOnly.NAME, params.getFieldSet());
}
@Test
@@ -98,7 +99,7 @@ public class VdsVisitTestCase {
VisitorParameters params = allParams.getVisitorParameters();
assertNotNull(params);
- assertEquals("[id]", params.getFieldSet());
+ assertEquals(DocIdOnly.NAME, params.getFieldSet());
assertTrue(allParams.isPrintIdsOnly());
}
@@ -295,7 +296,7 @@ public class VdsVisitTestCase {
VisitorParameters params = allParams.getVisitorParameters();
assertNotNull(params);
assertEquals("foo", allParams.getStatisticsParts());
- assertEquals("[id]", params.getFieldSet());
+ assertEquals(DocIdOnly.NAME, params.getFieldSet());
assertEquals("CountVisitor", params.getVisitorLibrary());
}