summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-08-04 07:25:45 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-08-04 12:14:17 +0000
commitbdc43e2dda007965b770cd0a778d6a2f2634d276 (patch)
tree990cb7bd1babbc9c3b9d77e880c290ed383afb16 /document
parentbd3399a2677b32888ef2588adf1c976ed4cdb5cb (diff)
Remove the unused [header] and [body] fieldsets to simplify backend optimization during get.
Diffstat (limited to 'document')
-rw-r--r--document/abi-spec.json32
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/BodyFields.java40
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java23
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/HeaderFields.java41
-rw-r--r--document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java64
-rw-r--r--document/src/tests/fieldsettest.cpp31
-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.cpp13
-rw-r--r--document/src/vespa/document/fieldset/fieldsets.cpp77
-rw-r--r--document/src/vespa/document/fieldset/fieldsets.h19
11 files changed, 43 insertions, 314 deletions
diff --git a/document/abi-spec.json b/document/abi-spec.json
index 7a0637db1aa..9740dfea996 100644
--- a/document/abi-spec.json
+++ b/document/abi-spec.json
@@ -3376,22 +3376,6 @@
],
"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": []
- },
"com.yahoo.document.fieldset.DocIdOnly": {
"superClass": "java.lang.Object",
"interfaces": [
@@ -3454,22 +3438,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": [
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/FieldSetRepo.java b/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java
index a7035439903..862a374f182 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()); }
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());
@@ -97,10 +96,6 @@ public class FieldSetRepo {
return "[all]";
} else if (fieldSet instanceof NoFields) {
return "[none]";
- } else if (fieldSet instanceof BodyFields) {
- return "[body]";
- } else if (fieldSet instanceof HeaderFields) {
- return "[header]";
} else if (fieldSet instanceof DocIdOnly) {
return "[docid]";
} else {
@@ -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/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java b/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java
index 404b069277b..5219285fbba 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);
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,8 +123,6 @@ 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,byteattr:30", doCopyFields(doc, "testdoc:floatattr,byteattr"));
}
@@ -159,8 +139,6 @@ 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,byteattr:30", doStripFields(doc, "testdoc:floatattr,byteattr"));
}
@@ -171,9 +149,7 @@ public class FieldSetTestCase extends DocumentTestCaseBase {
{
"[all]",
"[none]",
- "[header]",
"[docid]",
- "[body]",
"testdoc:rawattr",
"testdoc:rawattr,intattr"
};
diff --git a/document/src/tests/fieldsettest.cpp b/document/src/tests/fieldsettest.cpp
index b0cad61b72a..f77bd9bfb09 100644
--- a/document/src/tests/fieldsettest.cpp
+++ b/document/src/tests/fieldsettest.cpp
@@ -43,8 +43,6 @@ TEST_F(FieldSetTest, testParsing)
(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]"));
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,13 +194,8 @@ 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]"));
EXPECT_EQ(std::string("content: megafoo megabar\n"
"headerval: 5678\n"
"hstringval: hello fantastic world\n"),
@@ -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));
}
}
@@ -263,8 +243,6 @@ TEST_F(FieldSetTest, testDocumentSubsetCopy)
const char* fieldSets[] = {
"[all]",
"[none]",
- "[header]",
- "[body]",
"testdoctype1:hstringval,content"
};
for (size_t i = 0; i < sizeof(fieldSets) / sizeof(fieldSets[0]); ++i) {
@@ -281,9 +259,7 @@ TEST_F(FieldSetTest, testSerialize)
const char* fieldSets[] = {
"[all]",
"[none]",
- "[header]",
"[docid]",
- "[body]",
"testdoctype1:content",
"testdoctype1:content,hstringval"
};
@@ -301,15 +277,10 @@ 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]"));
EXPECT_EQ(std::string(""),
doStripFields(*src, repo, "[id]"));
- EXPECT_EQ(std::string("headerval: 5678\n"
- "hstringval: hello fantastic world\n"),
- doStripFields(*src, repo, "[header]"));
EXPECT_EQ(std::string("content: megafoo megabar\n"
"headerval: 5678\n"
"hstringval: hello fantastic world\n"),
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..c7d91ec5175 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);
@@ -113,10 +108,6 @@ FieldSetRepo::serialize(const FieldSet& fieldSet)
return "[all]";
case FieldSet::NONE:
return "[none]";
- case FieldSet::HEADER:
- return "[header]";
- case FieldSet::BODY:
- return "[body]";
case FieldSet::DOCID:
return "[docid]";
default:
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: