summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-06-16 07:40:42 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-06-16 09:46:17 +0000
commitfcf38c0586e6166ed819a078355502bda4656d01 (patch)
treeba0fca554bccae26a0bdece24e715cc223c02c6a
parentc0d8eff2873a2a352b368fe0e616caf812673a33 (diff)
- Removing body struct from our own usage.
- Deprecate public methods using body struct. - Update expected generated config.
-rw-r--r--config-lib/abi-spec.json2
-rw-r--r--config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java30
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/SDDocumentType.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java3
-rw-r--r--config-model/src/main/javacc/SDParser.jj3
-rw-r--r--config-model/src/test/configmodel/types/documentmanager.cfg75
-rw-r--r--config-model/src/test/configmodel/types/documenttypes.cfg17
-rw-r--r--config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg34
-rw-r--r--config-model/src/test/configmodel/types/references/documentmanager_multiple_imported_fields.cfg109
-rw-r--r--config-model/src/test/configmodel/types/references/documentmanager_ref_to_self_type.cfg9
-rw-r--r--config-model/src/test/configmodel/types/references/documentmanager_refs_to_other_types.cfg79
-rw-r--r--config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg60
-rw-r--r--config-model/src/test/configmodel/types/references/documenttypes_multiple_imported_fields.cfg53
-rw-r--r--config-model/src/test/configmodel/types/references/documenttypes_ref_to_self_type.cfg17
-rw-r--r--config-model/src/test/configmodel/types/references/documenttypes_refs_to_other_types.cfg51
-rw-r--r--config-model/src/test/configmodel/types/references/documenttypes_refs_to_same_type.cfg34
-rw-r--r--config-model/src/test/derived/advanced/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/annotationsinheritance/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/annotationsreference/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/annotationssimple/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/annotationsstruct/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/annotationsstructarray/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/arrays/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/attributeprefetch/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/complex/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/emptydefault/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/id/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/indexswitches/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/inheritance/documentmanager.cfg36
-rw-r--r--config-model/src/test/derived/inheritdiamond/documentmanager.cfg72
-rw-r--r--config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg27
-rw-r--r--config-model/src/test/derived/inheritfromparent/documentmanager.cfg18
-rw-r--r--config-model/src/test/derived/inheritfromparent/documenttypes.cfg34
-rw-r--r--config-model/src/test/derived/mail/documentmanager.cfg13
-rw-r--r--config-model/src/test/derived/prefixexactattribute/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/ranktypes/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/streamingstruct/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/structanyorder/documentmanager.cfg9
-rw-r--r--config-model/src/test/derived/tensor/documenttypes.cfg17
-rw-r--r--config-model/src/test/derived/twostreamingstructs/documentmanager.cfg18
-rw-r--r--config-model/src/test/derived/types/documentmanager.cfg15
-rw-r--r--config-model/src/test/examples/fieldoftypedocument.cfg82
-rwxr-xr-xconfig-model/src/test/examples/structresult.cfg27
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidatorTest.java1
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java1
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/util/documentmanager.docindoc.cfg13
-rw-r--r--document/abi-spec.json2
-rw-r--r--document/src/main/java/com/yahoo/document/Document.java53
-rwxr-xr-xdocument/src/main/java/com/yahoo/document/DocumentType.java77
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java6
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java20
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java15
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java1
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java1
-rw-r--r--document/src/test/document/documentmanager.cfg25
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentSerializationTestCase.java3
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentTestCase.java4
-rw-r--r--document/src/test/java/com/yahoo/document/documentmanager.docindoc.cfg13
-rw-r--r--document/src/tests/data/crossplatform-java-cpp-document.cfg79
-rw-r--r--document/src/vespa/document/config/documentmanager.def2
-rw-r--r--document/src/vespa/document/config/documenttypes.def2
-rw-r--r--documentapi/src/test/cfg/documentmanager.cfg9
-rw-r--r--documentapi/test/cfg/testdoc.cfg48
-rw-r--r--documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java12
-rw-r--r--vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java3
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/MockedOperationHandler.java2
73 files changed, 389 insertions, 1125 deletions
diff --git a/config-lib/abi-spec.json b/config-lib/abi-spec.json
index 0a6a673e39e..fa352d8f6bd 100644
--- a/config-lib/abi-spec.json
+++ b/config-lib/abi-spec.json
@@ -178,8 +178,8 @@
"methods": [
"public void <init>(java.lang.String)",
"public java.lang.String value()",
- "public int hashCode()",
"public boolean equals(java.lang.Object)",
+ "public int hashCode()",
"public java.lang.String toString()",
"public static java.util.List toValues(java.util.Collection)",
"public static java.util.Map toValueMap(java.util.Map)",
diff --git a/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java b/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
index 41a30c4553d..df9f72b2182 100644
--- a/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
+++ b/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
@@ -66,7 +66,6 @@ public final class NewDocumentType extends StructuredDataType implements DataTyp
private final Map<Integer, NewDocumentType> inherits = new LinkedHashMap<>();
private final AnnotationTypeRegistry annotations = new AnnotationTypeRegistry();
private final StructDataType header;
- private final StructDataType body;
private final Set<FieldSet> fieldSets = new LinkedHashSet<>();
private final Set<Name> documentReferences;
// Imported fields are virtual and therefore exist outside of the SD's document field definition
@@ -84,7 +83,6 @@ public final class NewDocumentType extends StructuredDataType implements DataTyp
this(
name,
new StructDataType(name.getName() + ".header"),
- new StructDataType(name.getName() + ".body"),
new FieldSets(),
documentReferences,
importedFieldNames);
@@ -96,14 +94,12 @@ public final class NewDocumentType extends StructuredDataType implements DataTyp
public NewDocumentType(Name name,
StructDataType header,
- StructDataType body,
FieldSets fs,
Set<Name> documentReferences,
Set<String> importedFieldNames) {
super(name.getName());
this.name = name;
this.header = header;
- this.body = body;
if (fs != null) {
this.fieldSets.addAll(fs.userFieldSets().values());
for (FieldSet f : fs.builtInFieldSets().values()) {
@@ -122,7 +118,6 @@ public final class NewDocumentType extends StructuredDataType implements DataTyp
}
public DataType getHeader() { return header; }
- public DataType getBody() { return body; }
public Collection<NewDocumentType> getInherited() { return inherits.values(); }
public NewDocumentType getInherited(Name inherited) { return inherits.get(inherited.getId()); }
public NewDocumentType removeInherited(Name inherited) { return inherits.remove(inherited.getId()); }
@@ -144,23 +139,6 @@ public final class NewDocumentType extends StructuredDataType implements DataTyp
return ret;
}
- /**
- * Data type of the body fields of this and all inherited document types
- * @return merged {@link StructDataType}
- */
- public StructDataType allBody() {
- StructDataType ret = new StructDataType(body.getName());
- for (Field f : body.getFields()) {
- ret.addField(f);
- }
- for (NewDocumentType inherited : getInherited()) {
- for (Field f : ((StructDataType) inherited.getBody()).getFields()) {
- ret.addField(f);
- }
- }
- return ret;
- }
-
@Override
public Class getValueClass() {
return Document.class;
@@ -219,9 +197,6 @@ public final class NewDocumentType extends StructuredDataType implements DataTyp
public Field getField(String name) {
Field field = header.getField(name);
if (field == null) {
- field = body.getField(name);
- }
- if (field == null) {
for (NewDocumentType inheritedType : inherits.values()) {
field = inheritedType.getField(name);
if (field != null) {
@@ -240,9 +215,6 @@ public final class NewDocumentType extends StructuredDataType implements DataTyp
public Field getField(int id) {
Field field = header.getField(id);
if (field == null) {
- field = body.getField(id);
- }
- if (field == null) {
for (NewDocumentType inheritedType : inherits.values()) {
field = inheritedType.getField(id);
if (field != null) {
@@ -261,14 +233,12 @@ public final class NewDocumentType extends StructuredDataType implements DataTyp
}
collection.addAll(header.getFields());
- collection.addAll(body.getFields());
return Collections.unmodifiableCollection(collection);
}
public Collection<Field> getFields() {
Collection<Field> collection = new LinkedList<>();
collection.addAll(header.getFields());
- collection.addAll(body.getFields());
return Collections.unmodifiableCollection(collection);
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java
index d3a78321106..fed35382b21 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java
@@ -338,7 +338,6 @@ public class DocumentModelBuilder {
Map<StructDataType, String> structInheritance = new HashMap<>();
NewDocumentType dt = new NewDocumentType(new NewDocumentType.Name(sdoc.getName()),
sdoc.getDocumentType().contentStruct(),
- sdoc.getDocumentType().getBodyType(),
sdoc.getFieldSets(),
convertDocumentReferencesToNames(sdoc.getDocumentReferences()),
convertTemporaryImportedFieldsToNames(sdoc.getTemporaryImportedFields()));
@@ -391,7 +390,6 @@ public class DocumentModelBuilder {
}
}
handleStruct(dt, sdoc.getDocumentType().contentStruct());
- handleStruct(dt, sdoc.getDocumentType().getBodyType());
extractDataTypesFromFields(dt, sdoc.fieldSet());
return dt;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/SDDocumentType.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/SDDocumentType.java
index b3f98cc6f26..c44bf44f4fe 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/SDDocumentType.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/SDDocumentType.java
@@ -155,7 +155,6 @@ public class SDDocumentType implements Cloneable, Serializable {
public SDDocumentType(String name, Search search) {
docType = new DocumentType(name);
docType.contentStruct().setCompressionConfig(new CompressionConfig());
- docType.getBodyType().setCompressionConfig(new CompressionConfig());
validateId(search);
inherit(VESPA_DOCUMENT);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java
index e0d015cc8b2..9b516767c9b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java
+++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java
@@ -94,8 +94,7 @@ public class DocumentManager {
builder.documenttype(doc);
doc.
name(dt.getName()).
- headerstruct(dt.contentStruct().getId()).
- bodystruct(dt.getBodyType().getId());
+ headerstruct(dt.contentStruct().getId());
for (DocumentType inherited : dt.getInheritedTypes()) {
doc.inherits(new Datatype.Documenttype.Inherits.Builder().name(inherited.getName()));
}
@@ -105,8 +104,7 @@ public class DocumentManager {
builder.documenttype(doc);
doc.
name(dt.getName()).
- headerstruct(dt.getHeader().getId()).
- bodystruct(dt.getBody().getId());
+ headerstruct(dt.getHeader().getId());
for (NewDocumentType inherited : dt.getInherited()) {
doc.inherits(new Datatype.Documenttype.Inherits.Builder().name(inherited.getName()));
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java
index e6bf826dccc..4f075264608 100644
--- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java
+++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java
@@ -42,8 +42,7 @@ public class DocumentTypes {
db.
id(documentType.getId()).
name(documentType.getName()).
- headerstruct(documentType.getHeader().getId()).
- bodystruct(documentType.getBody().getId());
+ headerstruct(documentType.getHeader().getId());
Set<Integer> built = new HashSet<>();
for (NewDocumentType inherited : documentType.getInherited()) {
db.inherits(new DocumenttypesConfig.Documenttype.Inherits.Builder().id(inherited.getId()));
diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj
index 5586b6a24e7..75ef3a831e8 100644
--- a/config-model/src/main/javacc/SDParser.jj
+++ b/config-model/src/main/javacc/SDParser.jj
@@ -586,9 +586,6 @@ void compression(SDDocumentType document, String name) :
if (name == null || name.equals("header")) {
document.getDocumentType().contentStruct().setCompressionConfig(cfg);
}
- if (name == null || name.equals("body")) {
- document.getDocumentType().getBodyType().setCompressionConfig(cfg);
- }
}
}
diff --git a/config-model/src/test/configmodel/types/documentmanager.cfg b/config-model/src/test/configmodel/types/documentmanager.cfg
index 631886181d7..f59dbeeb3ca 100644
--- a/config-model/src/test/configmodel/types/documentmanager.cfg
+++ b/config-model/src/test/configmodel/types/documentmanager.cfg
@@ -214,44 +214,37 @@ datatype[26].structtype[0].field[26].detailedtype ""
datatype[26].structtype[0].field[27].name "other"
datatype[26].structtype[0].field[27].datatype 4
datatype[26].structtype[0].field[27].detailedtype ""
-datatype[27].id 348447225
-datatype[27].structtype[0].name "types.body"
-datatype[27].structtype[0].version 0
-datatype[27].structtype[0].compresstype NONE
-datatype[27].structtype[0].compresslevel 0
-datatype[27].structtype[0].compressthreshold 95
-datatype[27].structtype[0].compressminsize 800
-datatype[28].id -853072901
-datatype[28].documenttype[0].name "types"
-datatype[28].documenttype[0].version 0
-datatype[28].documenttype[0].inherits[0].name "document"
-datatype[28].documenttype[0].inherits[0].version 0
-datatype[28].documenttype[0].headerstruct 1328581348
-datatype[28].documenttype[0].bodystruct 348447225
-datatype[28].documenttype[0].fieldsets{[document]}.fields[0] "Folders"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[1] "abyte"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[2] "album0"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[3] "album1"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[4] "along"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[5] "arrarr"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[6] "arrayfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[7] "arraymapfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[8] "complexarray"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[9] "doublemapfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[10] "floatmapfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[11] "intmapfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[12] "juletre"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[13] "longmapfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[14] "maparr"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[15] "mystructarr"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[16] "mystructfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[17] "mystructmap"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[18] "pos"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[19] "setfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[20] "setfield2"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[21] "setfield3"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[22] "setfield4"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[23] "stringmapfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[24] "structarrayfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[25] "structfield"
-datatype[28].documenttype[0].fieldsets{[document]}.fields[26] "tagfield"
+datatype[27].id -853072901
+datatype[27].documenttype[0].name "types"
+datatype[27].documenttype[0].version 0
+datatype[27].documenttype[0].inherits[0].name "document"
+datatype[27].documenttype[0].inherits[0].version 0
+datatype[27].documenttype[0].headerstruct 1328581348
+datatype[27].documenttype[0].bodystruct 0
+datatype[27].documenttype[0].fieldsets{[document]}.fields[0] "Folders"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[1] "abyte"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[2] "album0"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[3] "album1"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[4] "along"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[5] "arrarr"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[6] "arrayfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[7] "arraymapfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[8] "complexarray"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[9] "doublemapfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[10] "floatmapfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[11] "intmapfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[12] "juletre"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[13] "longmapfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[14] "maparr"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[15] "mystructarr"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[16] "mystructfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[17] "mystructmap"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[18] "pos"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[19] "setfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[20] "setfield2"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[21] "setfield3"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[22] "setfield4"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[23] "stringmapfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[24] "structarrayfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[25] "structfield"
+datatype[27].documenttype[0].fieldsets{[document]}.fields[26] "tagfield"
diff --git a/config-model/src/test/configmodel/types/documenttypes.cfg b/config-model/src/test/configmodel/types/documenttypes.cfg
index 8c88ee4f4e0..8f576715a4f 100644
--- a/config-model/src/test/configmodel/types/documenttypes.cfg
+++ b/config-model/src/test/configmodel/types/documenttypes.cfg
@@ -3,7 +3,7 @@ documenttype[0].id -853072901
documenttype[0].name "types"
documenttype[0].version 0
documenttype[0].headerstruct 1328581348
-documenttype[0].bodystruct 348447225
+documenttype[0].bodystruct 0
documenttype[0].inherits[0].id 8
documenttype[0].datatype[0].id -1865479609
documenttype[0].datatype[0].type MAP
@@ -547,21 +547,6 @@ documenttype[0].datatype[25].sstruct.field[27].name "other"
documenttype[0].datatype[25].sstruct.field[27].id 2443357
documenttype[0].datatype[25].sstruct.field[27].datatype 4
documenttype[0].datatype[25].sstruct.field[27].detailedtype ""
-documenttype[0].datatype[26].id 348447225
-documenttype[0].datatype[26].type STRUCT
-documenttype[0].datatype[26].array.element.id 0
-documenttype[0].datatype[26].map.key.id 0
-documenttype[0].datatype[26].map.value.id 0
-documenttype[0].datatype[26].wset.key.id 0
-documenttype[0].datatype[26].wset.createifnonexistent false
-documenttype[0].datatype[26].wset.removeifzero false
-documenttype[0].datatype[26].annotationref.annotation.id 0
-documenttype[0].datatype[26].sstruct.name "types.body"
-documenttype[0].datatype[26].sstruct.version 0
-documenttype[0].datatype[26].sstruct.compression.type NONE
-documenttype[0].datatype[26].sstruct.compression.level 0
-documenttype[0].datatype[26].sstruct.compression.threshold 95
-documenttype[0].datatype[26].sstruct.compression.minsize 200
documenttype[0].fieldsets{[document]}.fields[0] "Folders"
documenttype[0].fieldsets{[document]}.fields[1] "abyte"
documenttype[0].fieldsets{[document]}.fields[2] "album0"
diff --git a/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg b/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg
index 4f04e901a92..283e5c2fe79 100644
--- a/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg
+++ b/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg
@@ -3,7 +3,7 @@ documenttype[0].id -1368624373
documenttype[0].name "other_doc"
documenttype[0].version 0
documenttype[0].headerstruct 1631005140
-documenttype[0].bodystruct 549879017
+documenttype[0].bodystruct 0
documenttype[0].inherits[0].id 8
documenttype[0].datatype[0].id 1631005140
documenttype[0].datatype[0].type STRUCT
@@ -20,26 +20,11 @@ documenttype[0].datatype[0].sstruct.compression.type NONE
documenttype[0].datatype[0].sstruct.compression.level 0
documenttype[0].datatype[0].sstruct.compression.threshold 95
documenttype[0].datatype[0].sstruct.compression.minsize 200
-documenttype[0].datatype[1].id 549879017
-documenttype[0].datatype[1].type STRUCT
-documenttype[0].datatype[1].array.element.id 0
-documenttype[0].datatype[1].map.key.id 0
-documenttype[0].datatype[1].map.value.id 0
-documenttype[0].datatype[1].wset.key.id 0
-documenttype[0].datatype[1].wset.createifnonexistent false
-documenttype[0].datatype[1].wset.removeifzero false
-documenttype[0].datatype[1].annotationref.annotation.id 0
-documenttype[0].datatype[1].sstruct.name "other_doc.body"
-documenttype[0].datatype[1].sstruct.version 0
-documenttype[0].datatype[1].sstruct.compression.type NONE
-documenttype[0].datatype[1].sstruct.compression.level 0
-documenttype[0].datatype[1].sstruct.compression.threshold 95
-documenttype[0].datatype[1].sstruct.compression.minsize 200
documenttype[1].id -853072901
documenttype[1].name "types"
documenttype[1].version 0
documenttype[1].headerstruct 1328581348
-documenttype[1].bodystruct 348447225
+documenttype[1].bodystruct 0
documenttype[1].inherits[0].id 8
documenttype[1].datatype[0].id -1368624373
documenttype[1].datatype[0].type STRUCT
@@ -75,19 +60,4 @@ documenttype[1].datatype[1].sstruct.field[0].name "doc_field"
documenttype[1].datatype[1].sstruct.field[0].id 819293364
documenttype[1].datatype[1].sstruct.field[0].datatype -1368624373
documenttype[1].datatype[1].sstruct.field[0].detailedtype ""
-documenttype[1].datatype[2].id 348447225
-documenttype[1].datatype[2].type STRUCT
-documenttype[1].datatype[2].array.element.id 0
-documenttype[1].datatype[2].map.key.id 0
-documenttype[1].datatype[2].map.value.id 0
-documenttype[1].datatype[2].wset.key.id 0
-documenttype[1].datatype[2].wset.createifnonexistent false
-documenttype[1].datatype[2].wset.removeifzero false
-documenttype[1].datatype[2].annotationref.annotation.id 0
-documenttype[1].datatype[2].sstruct.name "types.body"
-documenttype[1].datatype[2].sstruct.version 0
-documenttype[1].datatype[2].sstruct.compression.type NONE
-documenttype[1].datatype[2].sstruct.compression.level 0
-documenttype[1].datatype[2].sstruct.compression.threshold 95
-documenttype[1].datatype[2].sstruct.compression.minsize 200
documenttype[1].fieldsets{[document]}.fields[0] "doc_field"
diff --git a/config-model/src/test/configmodel/types/references/documentmanager_multiple_imported_fields.cfg b/config-model/src/test/configmodel/types/references/documentmanager_multiple_imported_fields.cfg
index 7b50176625d..7ae73c23685 100644
--- a/config-model/src/test/configmodel/types/references/documentmanager_multiple_imported_fields.cfg
+++ b/config-model/src/test/configmodel/types/references/documentmanager_multiple_imported_fields.cfg
@@ -29,76 +29,55 @@ datatype[3].structtype[0].field[0].detailedtype ""
datatype[3].structtype[0].field[1].name "person_ref"
datatype[3].structtype[0].field[1].datatype 542332920
datatype[3].structtype[0].field[1].detailedtype ""
-datatype[4].id -255288561
-datatype[4].structtype[0].name "ad.body"
-datatype[4].structtype[0].version 0
-datatype[4].structtype[0].compresstype NONE
-datatype[4].structtype[0].compresslevel 0
-datatype[4].structtype[0].compressthreshold 95
-datatype[4].structtype[0].compressminsize 800
-datatype[5].id 2987301
-datatype[5].documenttype[0].name "ad"
-datatype[5].documenttype[0].version 0
-datatype[5].documenttype[0].inherits[0].name "document"
-datatype[5].documenttype[0].inherits[0].version 0
-datatype[5].documenttype[0].headerstruct 959075962
-datatype[5].documenttype[0].bodystruct -255288561
-datatype[5].documenttype[0].fieldsets{[document]}.fields[0] "campaign_ref"
-datatype[5].documenttype[0].fieldsets{[document]}.fields[1] "person_ref"
-datatype[5].documenttype[0].importedfield[0].name "my_cool_field"
-datatype[5].documenttype[0].importedfield[1].name "my_swag_field"
-datatype[5].documenttype[0].importedfield[2].name "my_name"
-datatype[6].id -2041471955
-datatype[6].structtype[0].name "campaign.header"
-datatype[6].structtype[0].version 0
-datatype[6].structtype[0].compresstype NONE
-datatype[6].structtype[0].compresslevel 0
-datatype[6].structtype[0].compressthreshold 95
-datatype[6].structtype[0].compressminsize 800
-datatype[6].structtype[0].field[0].name "cool_field"
-datatype[6].structtype[0].field[0].datatype 2
-datatype[6].structtype[0].field[0].detailedtype ""
-datatype[6].structtype[0].field[1].name "swag_field"
-datatype[6].structtype[0].field[1].datatype 4
-datatype[6].structtype[0].field[1].detailedtype ""
-datatype[7].id 1448849794
-datatype[7].structtype[0].name "campaign.body"
+datatype[4].id 2987301
+datatype[4].documenttype[0].name "ad"
+datatype[4].documenttype[0].version 0
+datatype[4].documenttype[0].inherits[0].name "document"
+datatype[4].documenttype[0].inherits[0].version 0
+datatype[4].documenttype[0].headerstruct 959075962
+datatype[4].documenttype[0].bodystruct 0
+datatype[4].documenttype[0].fieldsets{[document]}.fields[0] "campaign_ref"
+datatype[4].documenttype[0].fieldsets{[document]}.fields[1] "person_ref"
+datatype[4].documenttype[0].importedfield[0].name "my_cool_field"
+datatype[4].documenttype[0].importedfield[1].name "my_swag_field"
+datatype[4].documenttype[0].importedfield[2].name "my_name"
+datatype[5].id -2041471955
+datatype[5].structtype[0].name "campaign.header"
+datatype[5].structtype[0].version 0
+datatype[5].structtype[0].compresstype NONE
+datatype[5].structtype[0].compresslevel 0
+datatype[5].structtype[0].compressthreshold 95
+datatype[5].structtype[0].compressminsize 800
+datatype[5].structtype[0].field[0].name "cool_field"
+datatype[5].structtype[0].field[0].datatype 2
+datatype[5].structtype[0].field[0].detailedtype ""
+datatype[5].structtype[0].field[1].name "swag_field"
+datatype[5].structtype[0].field[1].datatype 4
+datatype[5].structtype[0].field[1].detailedtype ""
+datatype[6].id -1318255918
+datatype[6].documenttype[0].name "campaign"
+datatype[6].documenttype[0].version 0
+datatype[6].documenttype[0].inherits[0].name "document"
+datatype[6].documenttype[0].inherits[0].version 0
+datatype[6].documenttype[0].headerstruct -2041471955
+datatype[6].documenttype[0].bodystruct 0
+datatype[6].documenttype[0].fieldsets{[document]}.fields[0] "cool_field"
+datatype[6].documenttype[0].fieldsets{[document]}.fields[1] "swag_field"
+datatype[7].id 3129224
+datatype[7].structtype[0].name "person.header"
datatype[7].structtype[0].version 0
datatype[7].structtype[0].compresstype NONE
datatype[7].structtype[0].compresslevel 0
datatype[7].structtype[0].compressthreshold 95
datatype[7].structtype[0].compressminsize 800
-datatype[8].id -1318255918
-datatype[8].documenttype[0].name "campaign"
+datatype[7].structtype[0].field[0].name "name"
+datatype[7].structtype[0].field[0].datatype 2
+datatype[7].structtype[0].field[0].detailedtype ""
+datatype[8].id 443162583
+datatype[8].documenttype[0].name "person"
datatype[8].documenttype[0].version 0
datatype[8].documenttype[0].inherits[0].name "document"
datatype[8].documenttype[0].inherits[0].version 0
-datatype[8].documenttype[0].headerstruct -2041471955
-datatype[8].documenttype[0].bodystruct 1448849794
-datatype[8].documenttype[0].fieldsets{[document]}.fields[0] "cool_field"
-datatype[8].documenttype[0].fieldsets{[document]}.fields[1] "swag_field"
-datatype[9].id 3129224
-datatype[9].structtype[0].name "person.header"
-datatype[9].structtype[0].version 0
-datatype[9].structtype[0].compresstype NONE
-datatype[9].structtype[0].compresslevel 0
-datatype[9].structtype[0].compressthreshold 95
-datatype[9].structtype[0].compressminsize 800
-datatype[9].structtype[0].field[0].name "name"
-datatype[9].structtype[0].field[0].datatype 2
-datatype[9].structtype[0].field[0].detailedtype ""
-datatype[10].id -2003767395
-datatype[10].structtype[0].name "person.body"
-datatype[10].structtype[0].version 0
-datatype[10].structtype[0].compresstype NONE
-datatype[10].structtype[0].compresslevel 0
-datatype[10].structtype[0].compressthreshold 95
-datatype[10].structtype[0].compressminsize 800
-datatype[11].id 443162583
-datatype[11].documenttype[0].name "person"
-datatype[11].documenttype[0].version 0
-datatype[11].documenttype[0].inherits[0].name "document"
-datatype[11].documenttype[0].inherits[0].version 0
-datatype[11].documenttype[0].headerstruct 3129224
-datatype[11].documenttype[0].bodystruct -2003767395
-datatype[11].documenttype[0].fieldsets{[document]}.fields[0] "name" \ No newline at end of file
+datatype[8].documenttype[0].headerstruct 3129224
+datatype[8].documenttype[0].bodystruct 0
+datatype[8].documenttype[0].fieldsets{[document]}.fields[0] "name"
diff --git a/config-model/src/test/configmodel/types/references/documentmanager_ref_to_self_type.cfg b/config-model/src/test/configmodel/types/references/documentmanager_ref_to_self_type.cfg
index e624ffdf7f5..a613c2c034d 100644
--- a/config-model/src/test/configmodel/types/references/documentmanager_ref_to_self_type.cfg
+++ b/config-model/src/test/configmodel/types/references/documentmanager_ref_to_self_type.cfg
@@ -24,18 +24,11 @@ datatype[].structtype[].compressminsize 800
datatype[].structtype[].field[].name "self_ref"
datatype[].structtype[].field[].datatype -1895788438
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -255288561
-datatype[].structtype[].name "ad.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 2987301
datatype[].documenttype[].name "ad"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 959075962
-datatype[].documenttype[].bodystruct -255288561
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "self_ref"
diff --git a/config-model/src/test/configmodel/types/references/documentmanager_refs_to_other_types.cfg b/config-model/src/test/configmodel/types/references/documentmanager_refs_to_other_types.cfg
index 90ddb8c9f8d..2b6e2e852a3 100644
--- a/config-model/src/test/configmodel/types/references/documentmanager_refs_to_other_types.cfg
+++ b/config-model/src/test/configmodel/types/references/documentmanager_refs_to_other_types.cfg
@@ -29,61 +29,40 @@ datatype[3].structtype[0].field[0].detailedtype ""
datatype[3].structtype[0].field[1].name "person_ref"
datatype[3].structtype[0].field[1].datatype 542332920
datatype[3].structtype[0].field[1].detailedtype ""
-datatype[4].id -255288561
-datatype[4].structtype[0].name "ad.body"
-datatype[4].structtype[0].version 0
-datatype[4].structtype[0].compresstype NONE
-datatype[4].structtype[0].compresslevel 0
-datatype[4].structtype[0].compressthreshold 95
-datatype[4].structtype[0].compressminsize 800
-datatype[5].id 2987301
-datatype[5].documenttype[0].name "ad"
-datatype[5].documenttype[0].version 0
-datatype[5].documenttype[0].inherits[0].name "document"
-datatype[5].documenttype[0].inherits[0].version 0
-datatype[5].documenttype[0].headerstruct 959075962
-datatype[5].documenttype[0].bodystruct -255288561
-datatype[5].documenttype[0].fieldsets{[document]}.fields[0] "campaign_ref"
-datatype[5].documenttype[0].fieldsets{[document]}.fields[1] "person_ref"
-datatype[6].id -2041471955
-datatype[6].structtype[0].name "campaign.header"
-datatype[6].structtype[0].version 0
-datatype[6].structtype[0].compresstype NONE
-datatype[6].structtype[0].compresslevel 0
-datatype[6].structtype[0].compressthreshold 95
-datatype[6].structtype[0].compressminsize 800
-datatype[7].id 1448849794
-datatype[7].structtype[0].name "campaign.body"
+datatype[4].id 2987301
+datatype[4].documenttype[0].name "ad"
+datatype[4].documenttype[0].version 0
+datatype[4].documenttype[0].inherits[0].name "document"
+datatype[4].documenttype[0].inherits[0].version 0
+datatype[4].documenttype[0].headerstruct 959075962
+datatype[4].documenttype[0].bodystruct 0
+datatype[4].documenttype[0].fieldsets{[document]}.fields[0] "campaign_ref"
+datatype[4].documenttype[0].fieldsets{[document]}.fields[1] "person_ref"
+datatype[5].id -2041471955
+datatype[5].structtype[0].name "campaign.header"
+datatype[5].structtype[0].version 0
+datatype[5].structtype[0].compresstype NONE
+datatype[5].structtype[0].compresslevel 0
+datatype[5].structtype[0].compressthreshold 95
+datatype[5].structtype[0].compressminsize 800
+datatype[6].id -1318255918
+datatype[6].documenttype[0].name "campaign"
+datatype[6].documenttype[0].version 0
+datatype[6].documenttype[0].inherits[0].name "document"
+datatype[6].documenttype[0].inherits[0].version 0
+datatype[6].documenttype[0].headerstruct -2041471955
+datatype[6].documenttype[0].bodystruct 0
+datatype[7].id 3129224
+datatype[7].structtype[0].name "person.header"
datatype[7].structtype[0].version 0
datatype[7].structtype[0].compresstype NONE
datatype[7].structtype[0].compresslevel 0
datatype[7].structtype[0].compressthreshold 95
datatype[7].structtype[0].compressminsize 800
-datatype[8].id -1318255918
-datatype[8].documenttype[0].name "campaign"
+datatype[8].id 443162583
+datatype[8].documenttype[0].name "person"
datatype[8].documenttype[0].version 0
datatype[8].documenttype[0].inherits[0].name "document"
datatype[8].documenttype[0].inherits[0].version 0
-datatype[8].documenttype[0].headerstruct -2041471955
-datatype[8].documenttype[0].bodystruct 1448849794
-datatype[9].id 3129224
-datatype[9].structtype[0].name "person.header"
-datatype[9].structtype[0].version 0
-datatype[9].structtype[0].compresstype NONE
-datatype[9].structtype[0].compresslevel 0
-datatype[9].structtype[0].compressthreshold 95
-datatype[9].structtype[0].compressminsize 800
-datatype[10].id -2003767395
-datatype[10].structtype[0].name "person.body"
-datatype[10].structtype[0].version 0
-datatype[10].structtype[0].compresstype NONE
-datatype[10].structtype[0].compresslevel 0
-datatype[10].structtype[0].compressthreshold 95
-datatype[10].structtype[0].compressminsize 800
-datatype[11].id 443162583
-datatype[11].documenttype[0].name "person"
-datatype[11].documenttype[0].version 0
-datatype[11].documenttype[0].inherits[0].name "document"
-datatype[11].documenttype[0].inherits[0].version 0
-datatype[11].documenttype[0].headerstruct 3129224
-datatype[11].documenttype[0].bodystruct -2003767395
+datatype[8].documenttype[0].headerstruct 3129224
+datatype[8].documenttype[0].bodystruct 0
diff --git a/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg b/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg
index 1807adeb68d..bab281cca36 100644
--- a/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg
+++ b/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg
@@ -27,40 +27,26 @@ datatype[2].structtype[0].field[0].detailedtype ""
datatype[2].structtype[0].field[1].name "other_campaign_ref"
datatype[2].structtype[0].field[1].datatype 595216861
datatype[2].structtype[0].field[1].detailedtype ""
-datatype[3].id -255288561
-datatype[3].structtype[0].name "ad.body"
-datatype[3].structtype[0].version 0
-datatype[3].structtype[0].compresstype NONE
-datatype[3].structtype[0].compresslevel 0
-datatype[3].structtype[0].compressthreshold 95
-datatype[3].structtype[0].compressminsize 800
-datatype[4].id 2987301
-datatype[4].documenttype[0].name "ad"
-datatype[4].documenttype[0].version 0
-datatype[4].documenttype[0].inherits[0].name "document"
-datatype[4].documenttype[0].inherits[0].version 0
-datatype[4].documenttype[0].headerstruct 959075962
-datatype[4].documenttype[0].bodystruct -255288561
-datatype[4].documenttype[0].fieldsets{[document]}.fields[0] "campaign_ref"
-datatype[4].documenttype[0].fieldsets{[document]}.fields[1] "other_campaign_ref"
-datatype[5].id -2041471955
-datatype[5].structtype[0].name "campaign.header"
-datatype[5].structtype[0].version 0
-datatype[5].structtype[0].compresstype NONE
-datatype[5].structtype[0].compresslevel 0
-datatype[5].structtype[0].compressthreshold 95
-datatype[5].structtype[0].compressminsize 800
-datatype[6].id 1448849794
-datatype[6].structtype[0].name "campaign.body"
-datatype[6].structtype[0].version 0
-datatype[6].structtype[0].compresstype NONE
-datatype[6].structtype[0].compresslevel 0
-datatype[6].structtype[0].compressthreshold 95
-datatype[6].structtype[0].compressminsize 800
-datatype[7].id -1318255918
-datatype[7].documenttype[0].name "campaign"
-datatype[7].documenttype[0].version 0
-datatype[7].documenttype[0].inherits[0].name "document"
-datatype[7].documenttype[0].inherits[0].version 0
-datatype[7].documenttype[0].headerstruct -2041471955
-datatype[7].documenttype[0].bodystruct 1448849794
+datatype[3].id 2987301
+datatype[3].documenttype[0].name "ad"
+datatype[3].documenttype[0].version 0
+datatype[3].documenttype[0].inherits[0].name "document"
+datatype[3].documenttype[0].inherits[0].version 0
+datatype[3].documenttype[0].headerstruct 959075962
+datatype[3].documenttype[0].bodystruct 0
+datatype[3].documenttype[0].fieldsets{[document]}.fields[0] "campaign_ref"
+datatype[3].documenttype[0].fieldsets{[document]}.fields[1] "other_campaign_ref"
+datatype[4].id -2041471955
+datatype[4].structtype[0].name "campaign.header"
+datatype[4].structtype[0].version 0
+datatype[4].structtype[0].compresstype NONE
+datatype[4].structtype[0].compresslevel 0
+datatype[4].structtype[0].compressthreshold 95
+datatype[4].structtype[0].compressminsize 800
+datatype[5].id -1318255918
+datatype[5].documenttype[0].name "campaign"
+datatype[5].documenttype[0].version 0
+datatype[5].documenttype[0].inherits[0].name "document"
+datatype[5].documenttype[0].inherits[0].version 0
+datatype[5].documenttype[0].headerstruct -2041471955
+datatype[5].documenttype[0].bodystruct 0
diff --git a/config-model/src/test/configmodel/types/references/documenttypes_multiple_imported_fields.cfg b/config-model/src/test/configmodel/types/references/documenttypes_multiple_imported_fields.cfg
index 7859703ffe0..242310b57a4 100644
--- a/config-model/src/test/configmodel/types/references/documenttypes_multiple_imported_fields.cfg
+++ b/config-model/src/test/configmodel/types/references/documenttypes_multiple_imported_fields.cfg
@@ -3,7 +3,7 @@ documenttype[0].id 2987301
documenttype[0].name "ad"
documenttype[0].version 0
documenttype[0].headerstruct 959075962
-documenttype[0].bodystruct -255288561
+documenttype[0].bodystruct 0
documenttype[0].inherits[0].id 8
documenttype[0].datatype[0].id 959075962
documenttype[0].datatype[0].type STRUCT
@@ -28,21 +28,6 @@ documenttype[0].datatype[0].sstruct.field[1].name "person_ref"
documenttype[0].datatype[0].sstruct.field[1].id 100779805
documenttype[0].datatype[0].sstruct.field[1].datatype 542332920
documenttype[0].datatype[0].sstruct.field[1].detailedtype ""
-documenttype[0].datatype[1].id -255288561
-documenttype[0].datatype[1].type STRUCT
-documenttype[0].datatype[1].array.element.id 0
-documenttype[0].datatype[1].map.key.id 0
-documenttype[0].datatype[1].map.value.id 0
-documenttype[0].datatype[1].wset.key.id 0
-documenttype[0].datatype[1].wset.createifnonexistent false
-documenttype[0].datatype[1].wset.removeifzero false
-documenttype[0].datatype[1].annotationref.annotation.id 0
-documenttype[0].datatype[1].sstruct.name "ad.body"
-documenttype[0].datatype[1].sstruct.version 0
-documenttype[0].datatype[1].sstruct.compression.type NONE
-documenttype[0].datatype[1].sstruct.compression.level 0
-documenttype[0].datatype[1].sstruct.compression.threshold 95
-documenttype[0].datatype[1].sstruct.compression.minsize 200
documenttype[0].fieldsets{[document]}.fields[0] "campaign_ref"
documenttype[0].fieldsets{[document]}.fields[1] "person_ref"
documenttype[0].referencetype[0].id 595216861
@@ -56,7 +41,7 @@ documenttype[1].id -1318255918
documenttype[1].name "campaign"
documenttype[1].version 0
documenttype[1].headerstruct -2041471955
-documenttype[1].bodystruct 1448849794
+documenttype[1].bodystruct 0
documenttype[1].inherits[0].id 8
documenttype[1].datatype[0].id -2041471955
documenttype[1].datatype[0].type STRUCT
@@ -81,28 +66,13 @@ documenttype[1].datatype[0].sstruct.field[1].name "swag_field"
documenttype[1].datatype[0].sstruct.field[1].id 1691224741
documenttype[1].datatype[0].sstruct.field[1].datatype 4
documenttype[1].datatype[0].sstruct.field[1].detailedtype ""
-documenttype[1].datatype[1].id 1448849794
-documenttype[1].datatype[1].type STRUCT
-documenttype[1].datatype[1].array.element.id 0
-documenttype[1].datatype[1].map.key.id 0
-documenttype[1].datatype[1].map.value.id 0
-documenttype[1].datatype[1].wset.key.id 0
-documenttype[1].datatype[1].wset.createifnonexistent false
-documenttype[1].datatype[1].wset.removeifzero false
-documenttype[1].datatype[1].annotationref.annotation.id 0
-documenttype[1].datatype[1].sstruct.name "campaign.body"
-documenttype[1].datatype[1].sstruct.version 0
-documenttype[1].datatype[1].sstruct.compression.type NONE
-documenttype[1].datatype[1].sstruct.compression.level 0
-documenttype[1].datatype[1].sstruct.compression.threshold 95
-documenttype[1].datatype[1].sstruct.compression.minsize 200
documenttype[1].fieldsets{[document]}.fields[0] "cool_field"
documenttype[1].fieldsets{[document]}.fields[1] "swag_field"
documenttype[2].id 443162583
documenttype[2].name "person"
documenttype[2].version 0
documenttype[2].headerstruct 3129224
-documenttype[2].bodystruct -2003767395
+documenttype[2].bodystruct 0
documenttype[2].inherits[0].id 8
documenttype[2].datatype[0].id 3129224
documenttype[2].datatype[0].type STRUCT
@@ -123,19 +93,4 @@ documenttype[2].datatype[0].sstruct.field[0].name "name"
documenttype[2].datatype[0].sstruct.field[0].id 1160796772
documenttype[2].datatype[0].sstruct.field[0].datatype 2
documenttype[2].datatype[0].sstruct.field[0].detailedtype ""
-documenttype[2].datatype[1].id -2003767395
-documenttype[2].datatype[1].type STRUCT
-documenttype[2].datatype[1].array.element.id 0
-documenttype[2].datatype[1].map.key.id 0
-documenttype[2].datatype[1].map.value.id 0
-documenttype[2].datatype[1].wset.key.id 0
-documenttype[2].datatype[1].wset.createifnonexistent false
-documenttype[2].datatype[1].wset.removeifzero false
-documenttype[2].datatype[1].annotationref.annotation.id 0
-documenttype[2].datatype[1].sstruct.name "person.body"
-documenttype[2].datatype[1].sstruct.version 0
-documenttype[2].datatype[1].sstruct.compression.type NONE
-documenttype[2].datatype[1].sstruct.compression.level 0
-documenttype[2].datatype[1].sstruct.compression.threshold 95
-documenttype[2].datatype[1].sstruct.compression.minsize 200
-documenttype[2].fieldsets{[document]}.fields[0] "name" \ No newline at end of file
+documenttype[2].fieldsets{[document]}.fields[0] "name"
diff --git a/config-model/src/test/configmodel/types/references/documenttypes_ref_to_self_type.cfg b/config-model/src/test/configmodel/types/references/documenttypes_ref_to_self_type.cfg
index ca568aaa43d..f925ac99a25 100644
--- a/config-model/src/test/configmodel/types/references/documenttypes_ref_to_self_type.cfg
+++ b/config-model/src/test/configmodel/types/references/documenttypes_ref_to_self_type.cfg
@@ -3,7 +3,7 @@ documenttype[].id 2987301
documenttype[].name "ad"
documenttype[].version 0
documenttype[].headerstruct 959075962
-documenttype[].bodystruct -255288561
+documenttype[].bodystruct 0
documenttype[].inherits[].id 8
documenttype[].datatype[].id 959075962
documenttype[].datatype[].type STRUCT
@@ -24,21 +24,6 @@ documenttype[].datatype[].sstruct.field[].name "self_ref"
documenttype[].datatype[].sstruct.field[].id 852207313
documenttype[].datatype[].sstruct.field[].datatype -1895788438
documenttype[].datatype[].sstruct.field[].detailedtype ""
-documenttype[].datatype[].id -255288561
-documenttype[].datatype[].type STRUCT
-documenttype[].datatype[].array.element.id 0
-documenttype[].datatype[].map.key.id 0
-documenttype[].datatype[].map.value.id 0
-documenttype[].datatype[].wset.key.id 0
-documenttype[].datatype[].wset.createifnonexistent false
-documenttype[].datatype[].wset.removeifzero false
-documenttype[].datatype[].annotationref.annotation.id 0
-documenttype[].datatype[].sstruct.name "ad.body"
-documenttype[].datatype[].sstruct.version 0
-documenttype[].datatype[].sstruct.compression.type NONE
-documenttype[].datatype[].sstruct.compression.level 0
-documenttype[].datatype[].sstruct.compression.threshold 95
-documenttype[].datatype[].sstruct.compression.minsize 200
documenttype[].fieldsets{[document]}.fields[] "self_ref"
documenttype[].referencetype[].id -1895788438
documenttype[].referencetype[].target_type_id 2987301
diff --git a/config-model/src/test/configmodel/types/references/documenttypes_refs_to_other_types.cfg b/config-model/src/test/configmodel/types/references/documenttypes_refs_to_other_types.cfg
index a7fd3577789..c3aba21a498 100644
--- a/config-model/src/test/configmodel/types/references/documenttypes_refs_to_other_types.cfg
+++ b/config-model/src/test/configmodel/types/references/documenttypes_refs_to_other_types.cfg
@@ -3,7 +3,7 @@ documenttype[0].id 2987301
documenttype[0].name "ad"
documenttype[0].version 0
documenttype[0].headerstruct 959075962
-documenttype[0].bodystruct -255288561
+documenttype[0].bodystruct 0
documenttype[0].inherits[0].id 8
documenttype[0].datatype[0].id 959075962
documenttype[0].datatype[0].type STRUCT
@@ -28,21 +28,6 @@ documenttype[0].datatype[0].sstruct.field[1].name "person_ref"
documenttype[0].datatype[0].sstruct.field[1].id 100779805
documenttype[0].datatype[0].sstruct.field[1].datatype 542332920
documenttype[0].datatype[0].sstruct.field[1].detailedtype ""
-documenttype[0].datatype[1].id -255288561
-documenttype[0].datatype[1].type STRUCT
-documenttype[0].datatype[1].array.element.id 0
-documenttype[0].datatype[1].map.key.id 0
-documenttype[0].datatype[1].map.value.id 0
-documenttype[0].datatype[1].wset.key.id 0
-documenttype[0].datatype[1].wset.createifnonexistent false
-documenttype[0].datatype[1].wset.removeifzero false
-documenttype[0].datatype[1].annotationref.annotation.id 0
-documenttype[0].datatype[1].sstruct.name "ad.body"
-documenttype[0].datatype[1].sstruct.version 0
-documenttype[0].datatype[1].sstruct.compression.type NONE
-documenttype[0].datatype[1].sstruct.compression.level 0
-documenttype[0].datatype[1].sstruct.compression.threshold 95
-documenttype[0].datatype[1].sstruct.compression.minsize 200
documenttype[0].fieldsets{[document]}.fields[0] "campaign_ref"
documenttype[0].fieldsets{[document]}.fields[1] "person_ref"
documenttype[0].referencetype[0].id 595216861
@@ -53,7 +38,7 @@ documenttype[1].id -1318255918
documenttype[1].name "campaign"
documenttype[1].version 0
documenttype[1].headerstruct -2041471955
-documenttype[1].bodystruct 1448849794
+documenttype[1].bodystruct 0
documenttype[1].inherits[0].id 8
documenttype[1].datatype[0].id -2041471955
documenttype[1].datatype[0].type STRUCT
@@ -70,26 +55,11 @@ documenttype[1].datatype[0].sstruct.compression.type NONE
documenttype[1].datatype[0].sstruct.compression.level 0
documenttype[1].datatype[0].sstruct.compression.threshold 95
documenttype[1].datatype[0].sstruct.compression.minsize 200
-documenttype[1].datatype[1].id 1448849794
-documenttype[1].datatype[1].type STRUCT
-documenttype[1].datatype[1].array.element.id 0
-documenttype[1].datatype[1].map.key.id 0
-documenttype[1].datatype[1].map.value.id 0
-documenttype[1].datatype[1].wset.key.id 0
-documenttype[1].datatype[1].wset.createifnonexistent false
-documenttype[1].datatype[1].wset.removeifzero false
-documenttype[1].datatype[1].annotationref.annotation.id 0
-documenttype[1].datatype[1].sstruct.name "campaign.body"
-documenttype[1].datatype[1].sstruct.version 0
-documenttype[1].datatype[1].sstruct.compression.type NONE
-documenttype[1].datatype[1].sstruct.compression.level 0
-documenttype[1].datatype[1].sstruct.compression.threshold 95
-documenttype[1].datatype[1].sstruct.compression.minsize 200
documenttype[2].id 443162583
documenttype[2].name "person"
documenttype[2].version 0
documenttype[2].headerstruct 3129224
-documenttype[2].bodystruct -2003767395
+documenttype[2].bodystruct 0
documenttype[2].inherits[0].id 8
documenttype[2].datatype[0].id 3129224
documenttype[2].datatype[0].type STRUCT
@@ -106,18 +76,3 @@ documenttype[2].datatype[0].sstruct.compression.type NONE
documenttype[2].datatype[0].sstruct.compression.level 0
documenttype[2].datatype[0].sstruct.compression.threshold 95
documenttype[2].datatype[0].sstruct.compression.minsize 200
-documenttype[2].datatype[1].id -2003767395
-documenttype[2].datatype[1].type STRUCT
-documenttype[2].datatype[1].array.element.id 0
-documenttype[2].datatype[1].map.key.id 0
-documenttype[2].datatype[1].map.value.id 0
-documenttype[2].datatype[1].wset.key.id 0
-documenttype[2].datatype[1].wset.createifnonexistent false
-documenttype[2].datatype[1].wset.removeifzero false
-documenttype[2].datatype[1].annotationref.annotation.id 0
-documenttype[2].datatype[1].sstruct.name "person.body"
-documenttype[2].datatype[1].sstruct.version 0
-documenttype[2].datatype[1].sstruct.compression.type NONE
-documenttype[2].datatype[1].sstruct.compression.level 0
-documenttype[2].datatype[1].sstruct.compression.threshold 95
-documenttype[2].datatype[1].sstruct.compression.minsize 200
diff --git a/config-model/src/test/configmodel/types/references/documenttypes_refs_to_same_type.cfg b/config-model/src/test/configmodel/types/references/documenttypes_refs_to_same_type.cfg
index 46a951ae8ea..c5930449dc1 100644
--- a/config-model/src/test/configmodel/types/references/documenttypes_refs_to_same_type.cfg
+++ b/config-model/src/test/configmodel/types/references/documenttypes_refs_to_same_type.cfg
@@ -3,7 +3,7 @@ documenttype[0].id 2987301
documenttype[0].name "ad"
documenttype[0].version 0
documenttype[0].headerstruct 959075962
-documenttype[0].bodystruct -255288561
+documenttype[0].bodystruct 0
documenttype[0].inherits[0].id 8
documenttype[0].datatype[0].id 959075962
documenttype[0].datatype[0].type STRUCT
@@ -28,21 +28,6 @@ documenttype[0].datatype[0].sstruct.field[1].name "other_campaign_ref"
documenttype[0].datatype[0].sstruct.field[1].id 874751172
documenttype[0].datatype[0].sstruct.field[1].datatype 595216861
documenttype[0].datatype[0].sstruct.field[1].detailedtype ""
-documenttype[0].datatype[1].id -255288561
-documenttype[0].datatype[1].type STRUCT
-documenttype[0].datatype[1].array.element.id 0
-documenttype[0].datatype[1].map.key.id 0
-documenttype[0].datatype[1].map.value.id 0
-documenttype[0].datatype[1].wset.key.id 0
-documenttype[0].datatype[1].wset.createifnonexistent false
-documenttype[0].datatype[1].wset.removeifzero false
-documenttype[0].datatype[1].annotationref.annotation.id 0
-documenttype[0].datatype[1].sstruct.name "ad.body"
-documenttype[0].datatype[1].sstruct.version 0
-documenttype[0].datatype[1].sstruct.compression.type NONE
-documenttype[0].datatype[1].sstruct.compression.level 0
-documenttype[0].datatype[1].sstruct.compression.threshold 95
-documenttype[0].datatype[1].sstruct.compression.minsize 200
documenttype[0].fieldsets{[document]}.fields[0] "campaign_ref"
documenttype[0].fieldsets{[document]}.fields[1] "other_campaign_ref"
documenttype[0].referencetype[0].id 595216861
@@ -51,7 +36,7 @@ documenttype[1].id -1318255918
documenttype[1].name "campaign"
documenttype[1].version 0
documenttype[1].headerstruct -2041471955
-documenttype[1].bodystruct 1448849794
+documenttype[1].bodystruct 0
documenttype[1].inherits[0].id 8
documenttype[1].datatype[0].id -2041471955
documenttype[1].datatype[0].type STRUCT
@@ -68,18 +53,3 @@ documenttype[1].datatype[0].sstruct.compression.type NONE
documenttype[1].datatype[0].sstruct.compression.level 0
documenttype[1].datatype[0].sstruct.compression.threshold 95
documenttype[1].datatype[0].sstruct.compression.minsize 200
-documenttype[1].datatype[1].id 1448849794
-documenttype[1].datatype[1].type STRUCT
-documenttype[1].datatype[1].array.element.id 0
-documenttype[1].datatype[1].map.key.id 0
-documenttype[1].datatype[1].map.value.id 0
-documenttype[1].datatype[1].wset.key.id 0
-documenttype[1].datatype[1].wset.createifnonexistent false
-documenttype[1].datatype[1].wset.removeifzero false
-documenttype[1].datatype[1].annotationref.annotation.id 0
-documenttype[1].datatype[1].sstruct.name "campaign.body"
-documenttype[1].datatype[1].sstruct.version 0
-documenttype[1].datatype[1].sstruct.compression.type NONE
-documenttype[1].datatype[1].sstruct.compression.level 0
-documenttype[1].datatype[1].sstruct.compression.threshold 95
-documenttype[1].datatype[1].sstruct.compression.minsize 200
diff --git a/config-model/src/test/derived/advanced/documentmanager.cfg b/config-model/src/test/derived/advanced/documentmanager.cfg
index a0a59fbf7ac..4da92d82fb9 100644
--- a/config-model/src/test/derived/advanced/documentmanager.cfg
+++ b/config-model/src/test/derived/advanced/documentmanager.cfg
@@ -67,20 +67,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "mysummary"
datatype[].structtype[].field[].datatype 2
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -704605648
-datatype[].structtype[].name "advanced.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 686681444
datatype[].documenttype[].name "advanced"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -1337915045
-datatype[].documenttype[].bodystruct -704605648
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{titleabstract}.fields[] "title"
datatype[].documenttype[].fieldsets{default}.fields[] "title"
datatype[].documenttype[].fieldsets{[document]}.fields[] "attributes_src"
diff --git a/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg b/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg
index fae6bd46ad7..aa74ecebd5b 100644
--- a/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg
+++ b/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg
@@ -29,20 +29,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id -1503592268
-datatype[].structtype[].name "annotationsimplicitstruct.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -2099544992
datatype[].documenttype[].name "annotationsimplicitstruct"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -364910881
-datatype[].documenttype[].bodystruct -1503592268
+datatype[].documenttype[].bodystruct 0
annotationtype[].id -269517759
annotationtype[].name "banana"
annotationtype[].datatype 517946310
diff --git a/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg b/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg
index 21baed26dbf..e103218793d 100644
--- a/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg
+++ b/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg
@@ -94,20 +94,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id 1181354668
-datatype[].structtype[].name "annotationsinheritance.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -748546200
datatype[].documenttype[].name "annotationsinheritance"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -1406250281
-datatype[].documenttype[].bodystruct 1181354668
+datatype[].documenttype[].bodystruct 0
annotationtype[].id -269517759
annotationtype[].name "banana"
annotationtype[].datatype 517946310
diff --git a/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg b/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg
index 3ef71148f12..5b5b2ac348f 100644
--- a/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg
+++ b/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg
@@ -57,20 +57,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id 1375438150
-datatype[].structtype[].name "annotationsinheritance2.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -1730091890
datatype[].documenttype[].name "annotationsinheritance2"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 424382193
-datatype[].documenttype[].bodystruct 1375438150
+datatype[].documenttype[].bodystruct 0
annotationtype[].id 1769416289
annotationtype[].name "a"
annotationtype[].datatype -1
diff --git a/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg b/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg
index e9ec2cb3715..1f71057f268 100644
--- a/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg
+++ b/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg
@@ -31,20 +31,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id -570750959
-datatype[].structtype[].name "annotationspolymorphy.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -1383624989
datatype[].documenttype[].name "annotationspolymorphy"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -1552577796
-datatype[].documenttype[].bodystruct -570750959
+datatype[].documenttype[].bodystruct 0
annotationtype[].id 668095690
annotationtype[].name "super"
annotationtype[].datatype -1
diff --git a/config-model/src/test/derived/annotationsreference/documentmanager.cfg b/config-model/src/test/derived/annotationsreference/documentmanager.cfg
index 6526f56a906..737bcbf3cac 100644
--- a/config-model/src/test/derived/annotationsreference/documentmanager.cfg
+++ b/config-model/src/test/derived/annotationsreference/documentmanager.cfg
@@ -65,20 +65,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id 1692909067
-datatype[].structtype[].name "annotationsreference.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -1448377175
datatype[].documenttype[].name "annotationsreference"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 571255414
-datatype[].documenttype[].bodystruct 1692909067
+datatype[].documenttype[].bodystruct 0
annotationtype[].id -269517759
annotationtype[].name "banana"
annotationtype[].datatype 517946310
diff --git a/config-model/src/test/derived/annotationssimple/documentmanager.cfg b/config-model/src/test/derived/annotationssimple/documentmanager.cfg
index d32f0addceb..3af65e96558 100644
--- a/config-model/src/test/derived/annotationssimple/documentmanager.cfg
+++ b/config-model/src/test/derived/annotationssimple/documentmanager.cfg
@@ -19,20 +19,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id -682121732
-datatype[].structtype[].name "annotationssimple.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -1584092648
datatype[].documenttype[].name "annotationssimple"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -1205708249
-datatype[].documenttype[].bodystruct -682121732
+datatype[].documenttype[].bodystruct 0
annotationtype[].id -269517759
annotationtype[].name "banana"
annotationtype[].datatype -1
diff --git a/config-model/src/test/derived/annotationsstruct/documentmanager.cfg b/config-model/src/test/derived/annotationsstruct/documentmanager.cfg
index c91b5c5e97e..0a1cda99a95 100644
--- a/config-model/src/test/derived/annotationsstruct/documentmanager.cfg
+++ b/config-model/src/test/derived/annotationsstruct/documentmanager.cfg
@@ -39,20 +39,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id -1180029319
-datatype[].structtype[].name "annotationsstruct.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -263977093
datatype[].documenttype[].name "annotationsstruct"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 1341437796
-datatype[].documenttype[].bodystruct -1180029319
+datatype[].documenttype[].bodystruct 0
annotationtype[].id -160036815
annotationtype[].name "my_anno"
annotationtype[].datatype -1080124700
diff --git a/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg b/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg
index 22b951b1b5d..fca86c58ffa 100644
--- a/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg
+++ b/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg
@@ -41,20 +41,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id 1616435858
-datatype[].structtype[].name "annotationsstructarray.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 1593733058
datatype[].documenttype[].name "annotationsstructarray"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 94945597
-datatype[].documenttype[].bodystruct 1616435858
+datatype[].documenttype[].bodystruct 0
annotationtype[].id -160036815
annotationtype[].name "my_anno"
annotationtype[].datatype -1080124700
diff --git a/config-model/src/test/derived/arrays/documentmanager.cfg b/config-model/src/test/derived/arrays/documentmanager.cfg
index a2d8e2e78b4..f542a936574 100644
--- a/config-model/src/test/derived/arrays/documentmanager.cfg
+++ b/config-model/src/test/derived/arrays/documentmanager.cfg
@@ -42,20 +42,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "c"
datatype[].structtype[].field[].datatype 1328286588
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -1747896808
-datatype[].structtype[].name "arrays.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -1292863364
datatype[].documenttype[].name "arrays"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 1081627459
-datatype[].documenttype[].bodystruct -1747896808
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{default}.fields[] "a"
datatype[].documenttype[].fieldsets{default}.fields[] "b"
datatype[].documenttype[].fieldsets{default}.fields[] "c"
diff --git a/config-model/src/test/derived/attributeprefetch/documentmanager.cfg b/config-model/src/test/derived/attributeprefetch/documentmanager.cfg
index e27c72fbe50..dc208a86913 100644
--- a/config-model/src/test/derived/attributeprefetch/documentmanager.cfg
+++ b/config-model/src/test/derived/attributeprefetch/documentmanager.cfg
@@ -109,20 +109,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "wsstring"
datatype[].structtype[].field[].datatype 1328286588
datatype[].structtype[].field[].detailedtype ""
-datatype[].id 932425403
-datatype[].structtype[].name "prefetch.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -1458051591
datatype[].documenttype[].name "prefetch"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -109105370
-datatype[].documenttype[].bodystruct 932425403
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "multibyte"
datatype[].documenttype[].fieldsets{[document]}.fields[] "multidouble"
datatype[].documenttype[].fieldsets{[document]}.fields[] "multifloat"
diff --git a/config-model/src/test/derived/complex/documentmanager.cfg b/config-model/src/test/derived/complex/documentmanager.cfg
index 42234e52211..50d5dac1ef9 100644
--- a/config-model/src/test/derived/complex/documentmanager.cfg
+++ b/config-model/src/test/derived/complex/documentmanager.cfg
@@ -98,20 +98,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "exact"
datatype[].structtype[].field[].datatype 2
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -1665926686
-datatype[].structtype[].name "complex.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -1402929550
datatype[].documenttype[].name "complex"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -1749463923
-datatype[].documenttype[].bodystruct -1665926686
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{default}.fields[] "stringfield"
datatype[].documenttype[].fieldsets{default}.fields[] "title"
datatype[].documenttype[].fieldsets{special}.fields[] "special1"
diff --git a/config-model/src/test/derived/emptydefault/documentmanager.cfg b/config-model/src/test/derived/emptydefault/documentmanager.cfg
index b6cb2d06718..e69b2c5d8c3 100644
--- a/config-model/src/test/derived/emptydefault/documentmanager.cfg
+++ b/config-model/src/test/derived/emptydefault/documentmanager.cfg
@@ -25,19 +25,12 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "two"
datatype[].structtype[].field[].datatype 2
datatype[].structtype[].field[].detailedtype ""
-datatype[].id 311791038
-datatype[].structtype[].name "emptydefault.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -1663995626
datatype[].documenttype[].name "emptydefault"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 461724009
-datatype[].documenttype[].bodystruct 311791038
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "one"
datatype[].documenttype[].fieldsets{[document]}.fields[] "two"
diff --git a/config-model/src/test/derived/id/documentmanager.cfg b/config-model/src/test/derived/id/documentmanager.cfg
index 5140abc65fa..8ee82cdd946 100644
--- a/config-model/src/test/derived/id/documentmanager.cfg
+++ b/config-model/src/test/derived/id/documentmanager.cfg
@@ -22,18 +22,11 @@ datatype[].structtype[].compressminsize 800
datatype[].structtype[].field[].name "uri"
datatype[].structtype[].field[].datatype 10
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -1830022377
-datatype[].structtype[].name "id.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 3225629
datatype[].documenttype[].name "id"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -531633022
-datatype[].documenttype[].bodystruct -1830022377
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "uri"
diff --git a/config-model/src/test/derived/indexswitches/documentmanager.cfg b/config-model/src/test/derived/indexswitches/documentmanager.cfg
index 78dbdb7ae74..ffeaab177ba 100644
--- a/config-model/src/test/derived/indexswitches/documentmanager.cfg
+++ b/config-model/src/test/derived/indexswitches/documentmanager.cfg
@@ -31,20 +31,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "source"
datatype[].structtype[].field[].datatype 2
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -1892617122
-datatype[].structtype[].name "indexswitches.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -753375626
datatype[].documenttype[].name "indexswitches"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -555640823
-datatype[].documenttype[].bodystruct -1892617122
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{default}.fields[] "descr"
datatype[].documenttype[].fieldsets{default}.fields[] "title"
datatype[].documenttype[].fieldsets{[document]}.fields[] "descr"
diff --git a/config-model/src/test/derived/inheritance/documentmanager.cfg b/config-model/src/test/derived/inheritance/documentmanager.cfg
index b15ef13ed3f..e054019bd8f 100644
--- a/config-model/src/test/derived/inheritance/documentmanager.cfg
+++ b/config-model/src/test/derived/inheritance/documentmanager.cfg
@@ -25,20 +25,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "overridden"
datatype[].structtype[].field[].datatype 0
datatype[].structtype[].field[].detailedtype ""
-datatype[].id 978262812
-datatype[].structtype[].name "grandparent.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -154107656
datatype[].documenttype[].name "grandparent"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 990971719
-datatype[].documenttype[].bodystruct 978262812
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "onlygrandparent"
datatype[].documenttype[].fieldsets{[document]}.fields[] "overridden"
datatype[].id 1306663898
@@ -54,13 +47,6 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "overridden"
datatype[].structtype[].field[].datatype 0
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -1989003153
-datatype[].structtype[].name "mother.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -158393403
datatype[].documenttype[].name "mother"
datatype[].documenttype[].version 0
@@ -69,7 +55,7 @@ datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 1306663898
-datatype[].documenttype[].bodystruct -1989003153
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "onlygrandparent"
datatype[].documenttype[].fieldsets{[document]}.fields[] "onlymother"
datatype[].documenttype[].fieldsets{[document]}.fields[] "overridden"
@@ -86,13 +72,6 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "overridden"
datatype[].structtype[].field[].datatype 0
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -1742340170
-datatype[].structtype[].name "father.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 986686494
datatype[].documenttype[].name "father"
datatype[].documenttype[].version 0
@@ -101,7 +80,7 @@ datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 2126589281
-datatype[].documenttype[].bodystruct -1742340170
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "onlyfather"
datatype[].documenttype[].fieldsets{[document]}.fields[] "onlygrandparent"
datatype[].documenttype[].fieldsets{[document]}.fields[] "overridden"
@@ -118,13 +97,6 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "overridden"
datatype[].structtype[].field[].datatype 0
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -126593034
-datatype[].structtype[].name "child.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 746267614
datatype[].documenttype[].name "child"
datatype[].documenttype[].version 0
@@ -135,7 +107,7 @@ datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].inherits[].name "mother"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 81425825
-datatype[].documenttype[].bodystruct -126593034
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "onlychild"
datatype[].documenttype[].fieldsets{[document]}.fields[] "onlyfather"
datatype[].documenttype[].fieldsets{[document]}.fields[] "onlygrandparent"
diff --git a/config-model/src/test/derived/inheritdiamond/documentmanager.cfg b/config-model/src/test/derived/inheritdiamond/documentmanager.cfg
index c3ead0d31f8..df3f8908a60 100644
--- a/config-model/src/test/derived/inheritdiamond/documentmanager.cfg
+++ b/config-model/src/test/derived/inheritdiamond/documentmanager.cfg
@@ -1,11 +1,4 @@
enablecompression false
-datatype[].id -126593034
-datatype[].structtype[].name "child.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 336538650
datatype[].structtype[].name "child_struct"
datatype[].structtype[].version 0
@@ -40,7 +33,7 @@ datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].inherits[].name "father"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 81425825
-datatype[].documenttype[].bodystruct -126593034
+datatype[].documenttype[].bodystruct 0
datatype[].id -1913265190
datatype[].structtype[].name "father_struct"
datatype[].structtype[].version 0
@@ -66,27 +59,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id -52742073
-datatype[].structtype[].name "father_search.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 1464571117
datatype[].documenttype[].name "father_search"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -1962244686
-datatype[].documenttype[].bodystruct -52742073
-datatype[].id -1852215954
-datatype[].structtype[].name "mother_search.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
+datatype[].documenttype[].bodystruct 0
datatype[].id -384824039
datatype[].structtype[].name "mother_search.header"
datatype[].structtype[].version 0
@@ -109,7 +88,7 @@ datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -384824039
-datatype[].documenttype[].bodystruct -1852215954
+datatype[].documenttype[].bodystruct 0
datatype[].id 1306663898
datatype[].structtype[].name "mother.header"
datatype[].structtype[].version 0
@@ -117,13 +96,6 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id -1989003153
-datatype[].structtype[].name "mother.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -158393403
datatype[].documenttype[].name "mother"
datatype[].documenttype[].version 0
@@ -132,7 +104,7 @@ datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 1306663898
-datatype[].documenttype[].bodystruct -1989003153
+datatype[].documenttype[].bodystruct 0
datatype[].id -205818510
datatype[].structtype[].name "child_search.header"
datatype[].structtype[].version 0
@@ -140,20 +112,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id -1467672569
-datatype[].structtype[].name "child_search.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -580592339
datatype[].documenttype[].name "child_search"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -205818510
-datatype[].documenttype[].bodystruct -1467672569
+datatype[].documenttype[].bodystruct 0
datatype[].id 111553393
datatype[].structtype[].name "url"
datatype[].structtype[].version 0
@@ -186,13 +151,6 @@ datatype[].structtype[].field[].name "x"
datatype[].structtype[].field[].datatype 0
datatype[].structtype[].field[].name "y"
datatype[].structtype[].field[].datatype 0
-datatype[].id 1845861921
-datatype[].structtype[].name "grandparent_search.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 1530060044
datatype[].structtype[].name "grandparent_search.header"
datatype[].structtype[].version 0
@@ -206,7 +164,7 @@ datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 1530060044
-datatype[].documenttype[].bodystruct 1845861921
+datatype[].documenttype[].bodystruct 0
datatype[].id 990971719
datatype[].structtype[].name "grandparent.header"
datatype[].structtype[].version 0
@@ -214,27 +172,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id 978262812
-datatype[].structtype[].name "grandparent.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -154107656
datatype[].documenttype[].name "grandparent"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 990971719
-datatype[].documenttype[].bodystruct 978262812
-datatype[].id -1742340170
-datatype[].structtype[].name "father.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
+datatype[].documenttype[].bodystruct 0
datatype[].id 2126589281
datatype[].structtype[].name "father.header"
datatype[].structtype[].version 0
@@ -250,4 +194,4 @@ datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 2126589281
-datatype[].documenttype[].bodystruct -1742340170
+datatype[].documenttype[].bodystruct 0
diff --git a/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg b/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg
index 8e2ee3bbc4e..25872641741 100644
--- a/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg
+++ b/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg
@@ -29,20 +29,13 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id 978262812
-datatype[].structtype[].name "grandparent.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -154107656
datatype[].documenttype[].name "grandparent"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 990971719
-datatype[].documenttype[].bodystruct 978262812
+datatype[].documenttype[].bodystruct 0
datatype[].id 836075987
datatype[].structtype[].name "parent.header"
datatype[].structtype[].version 0
@@ -50,13 +43,6 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id -389494616
-datatype[].structtype[].name "parent.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 1175161836
datatype[].documenttype[].name "parent"
datatype[].documenttype[].version 0
@@ -65,7 +51,7 @@ datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 836075987
-datatype[].documenttype[].bodystruct -389494616
+datatype[].documenttype[].bodystruct 0
datatype[].id 81425825
datatype[].structtype[].name "child.header"
datatype[].structtype[].version 0
@@ -76,13 +62,6 @@ datatype[].structtype[].compressminsize 800
datatype[].structtype[].field[].name "child_field"
datatype[].structtype[].field[].datatype 1246084544
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -126593034
-datatype[].structtype[].name "child.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 746267614
datatype[].documenttype[].name "child"
datatype[].documenttype[].version 0
@@ -91,5 +70,5 @@ datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].inherits[].name "parent"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 81425825
-datatype[].documenttype[].bodystruct -126593034
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "child_field"
diff --git a/config-model/src/test/derived/inheritfromparent/documentmanager.cfg b/config-model/src/test/derived/inheritfromparent/documentmanager.cfg
index 7c65a7b72f3..c9cd6fd3042 100644
--- a/config-model/src/test/derived/inheritfromparent/documentmanager.cfg
+++ b/config-model/src/test/derived/inheritfromparent/documentmanager.cfg
@@ -35,20 +35,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "weight"
datatype[].structtype[].field[].datatype 1
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -389494616
-datatype[].structtype[].name "parent.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 1175161836
datatype[].documenttype[].name "parent"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 836075987
-datatype[].documenttype[].bodystruct -389494616
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[]}.fields[] "weight_src"
datatype[].id 81425825
datatype[].structtype[].name "child.header"
@@ -60,13 +53,6 @@ datatype[].structtype[].compressminsize 800
datatype[].structtype[].field[].name "child_field"
datatype[].structtype[].field[].datatype 1091188812
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -126593034
-datatype[].structtype[].name "child.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 746267614
datatype[].documenttype[].name "child"
datatype[].documenttype[].version 0
@@ -75,6 +61,6 @@ datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].inherits[].name "parent"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 81425825
-datatype[].documenttype[].bodystruct -126593034
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[]}.fields[] "child_field"
datatype[].documenttype[].fieldsets{[]}.fields[] "weight_src"
diff --git a/config-model/src/test/derived/inheritfromparent/documenttypes.cfg b/config-model/src/test/derived/inheritfromparent/documenttypes.cfg
index f5ec18c4203..faef3f6923b 100644
--- a/config-model/src/test/derived/inheritfromparent/documenttypes.cfg
+++ b/config-model/src/test/derived/inheritfromparent/documenttypes.cfg
@@ -3,7 +3,7 @@ documenttype[].id 1175161836
documenttype[].name "parent"
documenttype[].version 0
documenttype[].headerstruct 836075987
-documenttype[].bodystruct -389494616
+documenttype[].bodystruct 0
documenttype[].inherits[].id 8
documenttype[].datatype[].id 1091188812
documenttype[].datatype[].type STRUCT
@@ -47,27 +47,12 @@ documenttype[].datatype[].sstruct.field[].name "weight"
documenttype[].datatype[].sstruct.field[].id 1001392207
documenttype[].datatype[].sstruct.field[].datatype 1
documenttype[].datatype[].sstruct.field[].detailedtype ""
-documenttype[].datatype[].id -389494616
-documenttype[].datatype[].type STRUCT
-documenttype[].datatype[].array.element.id 0
-documenttype[].datatype[].map.key.id 0
-documenttype[].datatype[].map.value.id 0
-documenttype[].datatype[].wset.key.id 0
-documenttype[].datatype[].wset.createifnonexistent false
-documenttype[].datatype[].wset.removeifzero false
-documenttype[].datatype[].annotationref.annotation.id 0
-documenttype[].datatype[].sstruct.name "parent.body"
-documenttype[].datatype[].sstruct.version 0
-documenttype[].datatype[].sstruct.compression.type NONE
-documenttype[].datatype[].sstruct.compression.level 0
-documenttype[].datatype[].sstruct.compression.threshold 95
-documenttype[].datatype[].sstruct.compression.minsize 200
documenttype[].fieldsets{[]}.fields[] "weight_src"
documenttype[].id 746267614
documenttype[].name "child"
documenttype[].version 0
documenttype[].headerstruct 81425825
-documenttype[].bodystruct -126593034
+documenttype[].bodystruct 0
documenttype[].inherits[].id 8
documenttype[].inherits[].id 1175161836
documenttype[].datatype[].id 81425825
@@ -89,20 +74,5 @@ documenttype[].datatype[].sstruct.field[].name "child_field"
documenttype[].datatype[].sstruct.field[].id 1814271363
documenttype[].datatype[].sstruct.field[].datatype 1091188812
documenttype[].datatype[].sstruct.field[].detailedtype ""
-documenttype[].datatype[].id -126593034
-documenttype[].datatype[].type STRUCT
-documenttype[].datatype[].array.element.id 0
-documenttype[].datatype[].map.key.id 0
-documenttype[].datatype[].map.value.id 0
-documenttype[].datatype[].wset.key.id 0
-documenttype[].datatype[].wset.createifnonexistent false
-documenttype[].datatype[].wset.removeifzero false
-documenttype[].datatype[].annotationref.annotation.id 0
-documenttype[].datatype[].sstruct.name "child.body"
-documenttype[].datatype[].sstruct.version 0
-documenttype[].datatype[].sstruct.compression.type NONE
-documenttype[].datatype[].sstruct.compression.level 0
-documenttype[].datatype[].sstruct.compression.threshold 95
-documenttype[].datatype[].sstruct.compression.minsize 200
documenttype[].fieldsets{[]}.fields[] "child_field"
documenttype[].fieldsets{[]}.fields[] "weight_src"
diff --git a/config-model/src/test/derived/mail/documentmanager.cfg b/config-model/src/test/derived/mail/documentmanager.cfg
index 2fa9e5923c9..baf122d0241 100644
--- a/config-model/src/test/derived/mail/documentmanager.cfg
+++ b/config-model/src/test/derived/mail/documentmanager.cfg
@@ -37,15 +37,6 @@ datatype[].structtype[].field[].name "subject"
datatype[].structtype[].field[].datatype 2
datatype[].structtype[].field[].name "snippet"
datatype[].structtype[].field[].datatype 2
-datatype[].id -1206550296
-datatype[].arraytype[].datatype 12
-datatype[].id -953584901
-datatype[].structtype[].name "mail.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].structtype[].field[].name "body"
datatype[].structtype[].field[].datatype 12
datatype[].structtype[].field[].name "attachmentcount"
@@ -60,13 +51,15 @@ datatype[].structtype[].field[].name "attachmentcontent"
datatype[].structtype[].field[].datatype 2
datatype[].structtype[].field[].name "attachments"
datatype[].structtype[].field[].datatype -1206550296
+datatype[].id -1206550296
+datatype[].arraytype[].datatype 12
datatype[].id -1081574983
datatype[].documenttype[].name "mail"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -88808602
-datatype[].documenttype[].bodystruct -953584901
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{sender}.fields[] "from"
datatype[].documenttype[].fieldsets{address}.fields[] "cc"
datatype[].documenttype[].fieldsets{address}.fields[] "from"
diff --git a/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg b/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg
index 060510c3578..9ab2da3f686 100644
--- a/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg
+++ b/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg
@@ -34,20 +34,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "indexfield2"
datatype[].structtype[].field[].datatype 2
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -480519133
-datatype[].structtype[].name "prefixexactattribute.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -1812793455
datatype[].documenttype[].name "prefixexactattribute"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -739138930
-datatype[].documenttype[].bodystruct -480519133
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "attributefield1"
datatype[].documenttype[].fieldsets{[document]}.fields[] "attributefield2"
datatype[].documenttype[].fieldsets{[document]}.fields[] "indexfield0"
diff --git a/config-model/src/test/derived/ranktypes/documentmanager.cfg b/config-model/src/test/derived/ranktypes/documentmanager.cfg
index 072a0fff126..a8bb9e904dc 100644
--- a/config-model/src/test/derived/ranktypes/documentmanager.cfg
+++ b/config-model/src/test/derived/ranktypes/documentmanager.cfg
@@ -34,20 +34,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "identity_literal"
datatype[].structtype[].field[].datatype 2
datatype[].structtype[].field[].detailedtype ""
-datatype[].id 1374506021
-datatype[].structtype[].name "ranktypes.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -883421617
datatype[].documenttype[].name "ranktypes"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -471393776
-datatype[].documenttype[].bodystruct 1374506021
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "descr"
datatype[].documenttype[].fieldsets{[document]}.fields[] "identity"
datatype[].documenttype[].fieldsets{[document]}.fields[] "keywords"
diff --git a/config-model/src/test/derived/streamingstruct/documentmanager.cfg b/config-model/src/test/derived/streamingstruct/documentmanager.cfg
index 2cd35c7bdfa..63001ea38ca 100644
--- a/config-model/src/test/derived/streamingstruct/documentmanager.cfg
+++ b/config-model/src/test/derived/streamingstruct/documentmanager.cfg
@@ -119,20 +119,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "snippet2"
datatype[].structtype[].field[].datatype 2
datatype[].structtype[].field[].detailedtype ""
-datatype[].id 1858438651
-datatype[].structtype[].name "streamingstruct.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 1433175737
datatype[].documenttype[].name "streamingstruct"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 731395686
-datatype[].documenttype[].bodystruct 1858438651
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "a"
datatype[].documenttype[].fieldsets{[document]}.fields[] "array1"
datatype[].documenttype[].fieldsets{[document]}.fields[] "array2"
diff --git a/config-model/src/test/derived/structanyorder/documentmanager.cfg b/config-model/src/test/derived/structanyorder/documentmanager.cfg
index c18b1cc11b0..3ffc2f22a9b 100644
--- a/config-model/src/test/derived/structanyorder/documentmanager.cfg
+++ b/config-model/src/test/derived/structanyorder/documentmanager.cfg
@@ -69,20 +69,13 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "structarrayfield"
datatype[].structtype[].field[].datatype -1244829667
datatype[].structtype[].field[].detailedtype ""
-datatype[].id -1503592268
-datatype[].structtype[].name "annotationsimplicitstruct.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id -2099544992
datatype[].documenttype[].name "annotationsimplicitstruct"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct -364910881
-datatype[].documenttype[].bodystruct -1503592268
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "structarrayfield"
datatype[].documenttype[].fieldsets{[document]}.fields[] "structfield"
annotationtype[].id -269517759
diff --git a/config-model/src/test/derived/tensor/documenttypes.cfg b/config-model/src/test/derived/tensor/documenttypes.cfg
index bbf9759659b..acf5c7ed12f 100644
--- a/config-model/src/test/derived/tensor/documenttypes.cfg
+++ b/config-model/src/test/derived/tensor/documenttypes.cfg
@@ -3,7 +3,7 @@ documenttype[].id -1290043429
documenttype[].name "tensor"
documenttype[].version 0
documenttype[].headerstruct 2125927172
-documenttype[].bodystruct -1903234535
+documenttype[].bodystruct 0
documenttype[].inherits[].id 8
documenttype[].datatype[].id 2125927172
documenttype[].datatype[].type STRUCT
@@ -44,21 +44,6 @@ documenttype[].datatype[].sstruct.field[].name "f6"
documenttype[].datatype[].sstruct.field[].id 596352344
documenttype[].datatype[].sstruct.field[].datatype 1
documenttype[].datatype[].sstruct.field[].detailedtype ""
-documenttype[].datatype[].id -1903234535
-documenttype[].datatype[].type STRUCT
-documenttype[].datatype[].array.element.id 0
-documenttype[].datatype[].map.key.id 0
-documenttype[].datatype[].map.value.id 0
-documenttype[].datatype[].wset.key.id 0
-documenttype[].datatype[].wset.createifnonexistent false
-documenttype[].datatype[].wset.removeifzero false
-documenttype[].datatype[].annotationref.annotation.id 0
-documenttype[].datatype[].sstruct.name "tensor.body"
-documenttype[].datatype[].sstruct.version 0
-documenttype[].datatype[].sstruct.compression.type NONE
-documenttype[].datatype[].sstruct.compression.level 0
-documenttype[].datatype[].sstruct.compression.threshold 95
-documenttype[].datatype[].sstruct.compression.minsize 200
documenttype[].fieldsets{[document]}.fields[] "f1"
documenttype[].fieldsets{[document]}.fields[] "f2"
documenttype[].fieldsets{[document]}.fields[] "f3"
diff --git a/config-model/src/test/derived/twostreamingstructs/documentmanager.cfg b/config-model/src/test/derived/twostreamingstructs/documentmanager.cfg
index bb5bb001036..19d00483a5a 100644
--- a/config-model/src/test/derived/twostreamingstructs/documentmanager.cfg
+++ b/config-model/src/test/derived/twostreamingstructs/documentmanager.cfg
@@ -90,20 +90,13 @@ datatype[].structtype[].field[].name "snippet"
datatype[].structtype[].field[].datatype 2
datatype[].structtype[].field[].name "snippet2"
datatype[].structtype[].field[].datatype 2
-datatype[].id 1858438651
-datatype[].structtype[].name "streamingstruct.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].id 1433175737
datatype[].documenttype[].name "streamingstruct"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 731395686
-datatype[].documenttype[].bodystruct 1858438651
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "a"
datatype[].documenttype[].fieldsets{[document]}.fields[] "array1"
datatype[].documenttype[].fieldsets{[document]}.fields[] "array2"
@@ -139,13 +132,6 @@ datatype[].structtype[].compresstype NONE
datatype[].structtype[].compresslevel 0
datatype[].structtype[].compressthreshold 95
datatype[].structtype[].compressminsize 800
-datatype[].id -1417926544
-datatype[].structtype[].name "whatever.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
datatype[].structtype[].field[].name "f1"
datatype[].structtype[].field[].datatype -995681764
datatype[].id -778211548
@@ -154,5 +140,5 @@ datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 355471259
-datatype[].documenttype[].bodystruct -1417926544
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "f1"
diff --git a/config-model/src/test/derived/types/documentmanager.cfg b/config-model/src/test/derived/types/documentmanager.cfg
index a4fcd4f49f6..9556f77f6d9 100644
--- a/config-model/src/test/derived/types/documentmanager.cfg
+++ b/config-model/src/test/derived/types/documentmanager.cfg
@@ -209,28 +209,21 @@ datatype[].structtype[].field[].detailedtype ""
datatype[].structtype[].field[].name "other"
datatype[].structtype[].field[].datatype 4
datatype[].structtype[].field[].detailedtype ""
+datatype[].structtype[].field[].name "complexarray"
+datatype[].structtype[].field[].datatype 1416345047
+datatype[].structtype[].field[].detailedtype ""
datatype[].id -372512406
datatype[].maptype[].keytype 0
datatype[].maptype[].valtype 1707615575
datatype[].id 1416345047
datatype[].arraytype[].datatype -372512406
-datatype[].id 348447225
-datatype[].structtype[].name "types.body"
-datatype[].structtype[].version 0
-datatype[].structtype[].compresstype NONE
-datatype[].structtype[].compresslevel 0
-datatype[].structtype[].compressthreshold 95
-datatype[].structtype[].compressminsize 800
-datatype[].structtype[].field[].name "complexarray"
-datatype[].structtype[].field[].datatype 1416345047
-datatype[].structtype[].field[].detailedtype ""
datatype[].id -853072901
datatype[].documenttype[].name "types"
datatype[].documenttype[].version 0
datatype[].documenttype[].inherits[].name "document"
datatype[].documenttype[].inherits[].version 0
datatype[].documenttype[].headerstruct 1328581348
-datatype[].documenttype[].bodystruct 348447225
+datatype[].documenttype[].bodystruct 0
datatype[].documenttype[].fieldsets{[document]}.fields[] "Folders"
datatype[].documenttype[].fieldsets{[document]}.fields[] "abool"
datatype[].documenttype[].fieldsets{[document]}.fields[] "abyte"
diff --git a/config-model/src/test/examples/fieldoftypedocument.cfg b/config-model/src/test/examples/fieldoftypedocument.cfg
index b7bb444ec93..8074d86b45f 100644
--- a/config-model/src/test/examples/fieldoftypedocument.cfg
+++ b/config-model/src/test/examples/fieldoftypedocument.cfg
@@ -22,51 +22,37 @@ datatype[1].structtype[0].compressminsize 800
datatype[1].structtype[0].field[0].name "soundtrack"
datatype[1].structtype[0].field[0].datatype 1412693671
datatype[1].structtype[0].field[0].detailedtype ""
-datatype[2].id -820813431
-datatype[2].structtype[0].name "book.body"
-datatype[2].structtype[0].version 0
-datatype[2].structtype[0].compresstype NONE
-datatype[2].structtype[0].compresslevel 0
-datatype[2].structtype[0].compressthreshold 95
-datatype[2].structtype[0].compressminsize 800
-datatype[3].id -1383388565
-datatype[3].documenttype[0].name "book"
-datatype[3].documenttype[0].version 0
-datatype[3].documenttype[0].inherits[0].name "document"
-datatype[3].documenttype[0].inherits[0].version 0
-datatype[3].documenttype[0].headerstruct -1344444812
-datatype[3].documenttype[0].bodystruct -820813431
-datatype[3].documenttype[0].fieldsets{[document]}.fields[0] "soundtrack"
-datatype[4].id -1910204744
-datatype[4].structtype[0].name "music.header"
-datatype[4].structtype[0].version 0
-datatype[4].structtype[0].compresstype NONE
-datatype[4].structtype[0].compresslevel 0
-datatype[4].structtype[0].compressthreshold 95
-datatype[4].structtype[0].compressminsize 800
-datatype[4].structtype[0].field[0].name "intfield"
-datatype[4].structtype[0].field[0].datatype 0
-datatype[4].structtype[0].field[0].detailedtype ""
-datatype[4].structtype[0].field[1].name "stringfield"
-datatype[4].structtype[0].field[1].datatype 2
-datatype[4].structtype[0].field[1].detailedtype ""
-datatype[4].structtype[0].field[2].name "longfield"
-datatype[4].structtype[0].field[2].datatype 4
-datatype[4].structtype[0].field[2].detailedtype ""
-datatype[5].id 993120973
-datatype[5].structtype[0].name "music.body"
-datatype[5].structtype[0].version 0
-datatype[5].structtype[0].compresstype NONE
-datatype[5].structtype[0].compresslevel 0
-datatype[5].structtype[0].compressthreshold 95
-datatype[5].structtype[0].compressminsize 800
-datatype[6].id 1412693671
-datatype[6].documenttype[0].name "music"
-datatype[6].documenttype[0].version 0
-datatype[6].documenttype[0].inherits[0].name "document"
-datatype[6].documenttype[0].inherits[0].version 0
-datatype[6].documenttype[0].headerstruct -1910204744
-datatype[6].documenttype[0].bodystruct 993120973
-datatype[6].documenttype[0].fieldsets{[document]}.fields[0] "intfield"
-datatype[6].documenttype[0].fieldsets{[document]}.fields[1] "longfield"
-datatype[6].documenttype[0].fieldsets{[document]}.fields[2] "stringfield"
+datatype[2].id -1383388565
+datatype[2].documenttype[0].name "book"
+datatype[2].documenttype[0].version 0
+datatype[2].documenttype[0].inherits[0].name "document"
+datatype[2].documenttype[0].inherits[0].version 0
+datatype[2].documenttype[0].headerstruct -1344444812
+datatype[2].documenttype[0].bodystruct 0
+datatype[2].documenttype[0].fieldsets{[document]}.fields[0] "soundtrack"
+datatype[3].id -1910204744
+datatype[3].structtype[0].name "music.header"
+datatype[3].structtype[0].version 0
+datatype[3].structtype[0].compresstype NONE
+datatype[3].structtype[0].compresslevel 0
+datatype[3].structtype[0].compressthreshold 95
+datatype[3].structtype[0].compressminsize 800
+datatype[3].structtype[0].field[0].name "intfield"
+datatype[3].structtype[0].field[0].datatype 0
+datatype[3].structtype[0].field[0].detailedtype ""
+datatype[3].structtype[0].field[1].name "stringfield"
+datatype[3].structtype[0].field[1].datatype 2
+datatype[3].structtype[0].field[1].detailedtype ""
+datatype[3].structtype[0].field[2].name "longfield"
+datatype[3].structtype[0].field[2].datatype 4
+datatype[3].structtype[0].field[2].detailedtype ""
+datatype[4].id 1412693671
+datatype[4].documenttype[0].name "music"
+datatype[4].documenttype[0].version 0
+datatype[4].documenttype[0].inherits[0].name "document"
+datatype[4].documenttype[0].inherits[0].version 0
+datatype[4].documenttype[0].headerstruct -1910204744
+datatype[4].documenttype[0].bodystruct 0
+datatype[4].documenttype[0].fieldsets{[document]}.fields[0] "intfield"
+datatype[4].documenttype[0].fieldsets{[document]}.fields[1] "longfield"
+datatype[4].documenttype[0].fieldsets{[document]}.fields[2] "stringfield"
diff --git a/config-model/src/test/examples/structresult.cfg b/config-model/src/test/examples/structresult.cfg
index eff48f18914..ceaad2e6584 100755
--- a/config-model/src/test/examples/structresult.cfg
+++ b/config-model/src/test/examples/structresult.cfg
@@ -54,20 +54,13 @@ datatype[4].structtype[0].field[1].detailedtype ""
datatype[4].structtype[0].field[2].name "advanced"
datatype[4].structtype[0].field[2].datatype 93505813
datatype[4].structtype[0].field[2].detailedtype ""
-datatype[5].id 993120973
-datatype[5].structtype[0].name "music.body"
-datatype[5].structtype[0].version 0
-datatype[5].structtype[0].compresstype NONE
-datatype[5].structtype[0].compresslevel 0
-datatype[5].structtype[0].compressthreshold 95
-datatype[5].structtype[0].compressminsize 800
-datatype[6].id 1412693671
-datatype[6].documenttype[0].name "music"
-datatype[6].documenttype[0].version 0
-datatype[6].documenttype[0].inherits[0].name "document"
-datatype[6].documenttype[0].inherits[0].version 0
-datatype[6].documenttype[0].headerstruct -1910204744
-datatype[6].documenttype[0].bodystruct 993120973
-datatype[6].documenttype[0].fieldsets{[document]}.fields[0] "advanced"
-datatype[6].documenttype[0].fieldsets{[document]}.fields[1] "arraystruct"
-datatype[6].documenttype[0].fieldsets{[document]}.fields[2] "mystruct"
+datatype[5].id 1412693671
+datatype[5].documenttype[0].name "music"
+datatype[5].documenttype[0].version 0
+datatype[5].documenttype[0].inherits[0].name "document"
+datatype[5].documenttype[0].inherits[0].version 0
+datatype[5].documenttype[0].headerstruct -1910204744
+datatype[5].documenttype[0].bodystruct 0
+datatype[5].documenttype[0].fieldsets{[document]}.fields[0] "advanced"
+datatype[5].documenttype[0].fieldsets{[document]}.fields[1] "arraystruct"
+datatype[5].documenttype[0].fieldsets{[document]}.fields[2] "mystruct"
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
index 02233608eea..1b51fd354f3 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
@@ -22,6 +22,7 @@ import org.junit.rules.TemporaryFolder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
/**
* Tests inheritance
@@ -68,8 +69,8 @@ public class InheritanceTestCase extends AbstractExportingTestCase {
DocumentmanagerConfig.Builder b = new DocumentmanagerConfig.Builder();
DerivedConfiguration.exportDocuments(new DocumentManager().produce(builder.getModel(), b), outDir.getPath());
DocumentmanagerConfig dc = b.build();
- assertEquals(17, dc.datatype().size());
- assertNotNull(structType("child.body", dc));
+ assertEquals(13, dc.datatype().size());
+ assertNull(structType("child.body", dc));
DocumentmanagerConfig.Datatype.Structtype childHeader = structType("child.header", dc);
assertEquals(childHeader.field(0).name(), "foo");
assertEquals(childHeader.field(1).name(), "bar");
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidatorTest.java
index 3dfcef70aba..4bba66f0fb3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidatorTest.java
@@ -201,7 +201,6 @@ public class DocumentTypeChangeValidatorTest {
return new NewDocumentType(
new NewDocumentType.Name("mydoc"),
headerfields,
- new StructDataType("bodyfields"),
new FieldSets(),
Collections.emptySet(),
Collections.emptySet());
diff --git a/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java b/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java
index e825db4e21d..e1482dead8d 100644
--- a/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java
+++ b/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java
@@ -239,7 +239,7 @@ public class ProxyDocument extends Document implements DocumentOperationWrapper
@Override
@SuppressWarnings("deprecation")
public Struct getBody() {
- return doc.getBody();
+ return null;
}
@Override
diff --git a/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java b/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java
index 96ea96b9e78..617cd01e6e1 100644
--- a/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java
+++ b/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java
@@ -306,7 +306,6 @@ public class SchemaMappingAndAccessesTest {
assertEquals(mapped.getId().toString(), "id:map:album::2");
assertEquals(doc.getId().toString(), "id:map:album::2");
assertEquals(doc.getHeader(), mapped.getHeader());
- assertEquals(doc.getBody(), mapped.getBody());
assertEquals(doc.getSerializedSize(), mapped.getSerializedSize());
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ByteArrayOutputStream bos2 = new ByteArrayOutputStream();
diff --git a/docproc/src/test/java/com/yahoo/docproc/util/documentmanager.docindoc.cfg b/docproc/src/test/java/com/yahoo/docproc/util/documentmanager.docindoc.cfg
index 3347c3127b5..65ce1b56811 100644
--- a/docproc/src/test/java/com/yahoo/docproc/util/documentmanager.docindoc.cfg
+++ b/docproc/src/test/java/com/yahoo/docproc/util/documentmanager.docindoc.cfg
@@ -4,16 +4,15 @@ datatype[0].id -1407012075
datatype[0].structtype[1]
datatype[0].structtype[0].name "outerdoc.body"
datatype[0].structtype[0].version 0
-datatype[0].structtype[0].field[1]
-datatype[0].structtype[0].field[0].datatype -2035324352
-datatype[0].structtype[0].field[0].name "innerdocuments"
datatype[1].id -1686125086
datatype[1].structtype[1]
datatype[1].structtype[0].name "docindoc.header"
datatype[1].structtype[0].version 0
-datatype[1].structtype[0].field[1]
+datatype[1].structtype[0].field[2]
datatype[1].structtype[0].field[0].datatype 2
datatype[1].structtype[0].field[0].name "name"
+datatype[1].structtype[0].field[1].datatype 2
+datatype[1].structtype[0].field[1].name "content"
datatype[2].id -2035324352
datatype[2].arraytype[1]
datatype[2].arraytype[0].datatype 1447635645
@@ -21,6 +20,9 @@ datatype[3].id -2040625920
datatype[3].structtype[1]
datatype[3].structtype[0].name "outerdoc.header"
datatype[3].structtype[0].version 0
+datatype[3].structtype[0].field[1]
+datatype[3].structtype[0].field[0].datatype -2035324352
+datatype[3].structtype[0].field[0].name "innerdocuments"
datatype[4].id 1447635645
datatype[4].documenttype[1]
datatype[4].documenttype[0].bodystruct 2030224503
@@ -37,6 +39,3 @@ datatype[6].id 2030224503
datatype[6].structtype[1]
datatype[6].structtype[0].name "docindoc.body"
datatype[6].structtype[0].version 0
-datatype[6].structtype[0].field[1]
-datatype[6].structtype[0].field[0].datatype 2
-datatype[6].structtype[0].field[0].name "content"
diff --git a/document/abi-spec.json b/document/abi-spec.json
index 3764015b917..4e74143725f 100644
--- a/document/abi-spec.json
+++ b/document/abi-spec.json
@@ -426,7 +426,9 @@
],
"methods": [
"public void <init>(java.lang.String)",
+ "public void <init>(java.lang.String, com.yahoo.document.StructDataType)",
"public void <init>(java.lang.String, com.yahoo.document.StructDataType, com.yahoo.document.StructDataType)",
+ "public void <init>(java.lang.String, com.yahoo.document.StructDataType, java.util.Set)",
"public void <init>(java.lang.String, com.yahoo.document.StructDataType, com.yahoo.document.StructDataType, java.util.Set)",
"public void <init>(java.lang.String, java.util.Set)",
"public com.yahoo.document.DocumentType clone()",
diff --git a/document/src/main/java/com/yahoo/document/Document.java b/document/src/main/java/com/yahoo/document/Document.java
index 375d8d962a5..116765b5530 100644
--- a/document/src/main/java/com/yahoo/document/Document.java
+++ b/document/src/main/java/com/yahoo/document/Document.java
@@ -44,7 +44,6 @@ public class Document extends StructuredFieldValue {
public static final short SERIALIZED_VERSION = 8;
private DocumentId docId;
private Struct header;
- private Struct body;
private Long lastModified = null;
/**
@@ -75,7 +74,6 @@ public class Document extends StructuredFieldValue {
public Document(Document doc) {
this(doc.getDataType(), doc.getId());
header = doc.header;
- body = doc.body;
lastModified = doc.lastModified;
}
@@ -104,7 +102,7 @@ public class Document extends StructuredFieldValue {
/** @deprecated do not use: Use getField(), getFieldValue() or iterator() instead */
@Deprecated // TODO: Remove on Vespa 8
- public Struct getBody() { return body; }
+ public Struct getBody() { return null; }
@Override
public void assign(Object o) {
@@ -116,14 +114,11 @@ public class Document extends StructuredFieldValue {
Document doc = (Document) super.clone();
doc.docId = docId.clone();
doc.header = header.clone();
- doc.body = body.clone();
return doc;
}
- @SuppressWarnings("deprecation")
private void setNewType(DocumentType type) {
header = type.contentStruct().createFieldValue();
- body = type.getBodyType().createFieldValue();
}
public void setDataType(DataType type) {
@@ -178,9 +173,6 @@ public class Document extends StructuredFieldValue {
public Field getField(String fieldName) {
Field field = header.getField(fieldName);
if (field == null) {
- field = body.getField(fieldName);
- }
- if (field == null) {
for(DocumentType parent : getDataType().getInheritedTypes()) {
field = parent.getField(fieldName);
if (field != null) {
@@ -193,36 +185,22 @@ public class Document extends StructuredFieldValue {
@Override
public FieldValue getFieldValue(Field field) {
- FieldValue fv = header.getFieldValue(field);
- if (fv == null) {
- fv = body.getFieldValue(field);
- }
- return fv;
+ return header.getFieldValue(field);
}
@Override
- @SuppressWarnings("deprecation")
protected void doSetFieldValue(Field field, FieldValue value) {
- if (field.isHeader()) {
- header.setFieldValue(field, value);
- } else {
- body.setFieldValue(field, value);
- }
+ header.setFieldValue(field, value);
}
@Override
public FieldValue removeFieldValue(Field field) {
- FieldValue removed = header.removeFieldValue(field);
- if (removed == null) {
- removed = body.removeFieldValue(field);
- }
- return removed;
+ return header.removeFieldValue(field);
}
@Override
public void clear() {
header.clear();
- body.clear();
}
@Override
@@ -230,29 +208,17 @@ public class Document extends StructuredFieldValue {
return new Iterator<>() {
private Iterator<Map.Entry<Field, FieldValue>> headerIt = header.iterator();
- private Iterator<Map.Entry<Field, FieldValue>> bodyIt = body.iterator();
public boolean hasNext() {
- if (headerIt != null) {
- if (headerIt.hasNext()) {
- return true;
- } else {
- headerIt = null;
- }
- }
- return bodyIt.hasNext();
+ return headerIt.hasNext();
}
public Map.Entry<Field, FieldValue> next() {
- return (headerIt == null ? bodyIt.next() : headerIt.next());
+ return headerIt.next();
}
public void remove() {
- if (headerIt == null) {
- bodyIt.remove();
- } else {
- headerIt.remove();
- }
+ headerIt.remove();
}
};
}
@@ -302,7 +268,7 @@ public class Document extends StructuredFieldValue {
if (!(o instanceof Document)) return false;
Document other = (Document) o;
return (super.equals(o) && docId.equals(other.docId) &&
- header.equals(other.header) && body.equals(other.body));
+ header.equals(other.header));
}
@Override
@@ -347,7 +313,7 @@ public class Document extends StructuredFieldValue {
@Override
public int getFieldCount() {
- return header.getFieldCount() + body.getFieldCount();
+ return header.getFieldCount();
}
public void serialize(DocumentWriter writer) {
@@ -393,7 +359,6 @@ public class Document extends StructuredFieldValue {
return comp;
}
- comp = body.compareTo(otherValue.body);
return comp;
}
diff --git a/document/src/main/java/com/yahoo/document/DocumentType.java b/document/src/main/java/com/yahoo/document/DocumentType.java
index 23559878fbb..09b9fcf7563 100755
--- a/document/src/main/java/com/yahoo/document/DocumentType.java
+++ b/document/src/main/java/com/yahoo/document/DocumentType.java
@@ -38,7 +38,6 @@ public class DocumentType extends StructuredDataType {
public static final String DOCUMENT = "[document]";
public static final int classId = registerClass(Ids.document + 58, DocumentType.class);
private StructDataType headerType;
- private StructDataType bodyType;
private List<DocumentType> inherits = new ArrayList<>(1);
private Map<String, Set<Field>> fieldSets = new HashMap<>();
private final Set<String> importedFieldNames;
@@ -52,7 +51,7 @@ public class DocumentType extends StructuredDataType {
* @param name The name of the new document type
*/
public DocumentType(String name) {
- this(name, createHeaderStructType(name), createBodyStructType(name));
+ this(name, createHeaderStructType(name));
}
/**
@@ -62,37 +61,46 @@ public class DocumentType extends StructuredDataType {
*
* @param name The name of the new document type
* @param headerType The type of the header struct
- * @param bodyType The type of the body struct
*/
+ public DocumentType(String name, StructDataType headerType) {
+ this(name, headerType, Collections.emptySet());
+ }
+
+ /**
+ * @deprecated //TODO Will be removed on Vespa 8
+ */
+ @Deprecated
public DocumentType(String name, StructDataType headerType, StructDataType bodyType) {
- this(name, headerType, bodyType, Collections.emptySet());
+ this(name, headerType, Collections.emptySet());
}
- public DocumentType(String name, StructDataType headerType,
- StructDataType bodyType, Set<String> importedFieldNames) {
+ public DocumentType(String name, StructDataType headerType, Set<String> importedFieldNames) {
super(name);
this.headerType = headerType;
- this.bodyType = bodyType;
this.importedFieldNames = Collections.unmodifiableSet(importedFieldNames);
}
+ /**
+ * @deprecated //TODO Will be removed on Vespa 8
+ */
+ @Deprecated
+ public DocumentType(String name, StructDataType headerType,
+ StructDataType bodyType, Set<String> importedFieldNames) {
+ this(name, headerType, importedFieldNames);
+ }
+
public DocumentType(String name, Set<String> importedFieldNames) {
- this(name, createHeaderStructType(name), createBodyStructType(name), importedFieldNames);
+ this(name, createHeaderStructType(name), importedFieldNames);
}
private static StructDataType createHeaderStructType(String name) {
return new StructDataType(name + ".header");
}
- private static StructDataType createBodyStructType(String name) {
- return new StructDataType(name + ".body");
- }
-
@Override
public DocumentType clone() {
DocumentType type = (DocumentType) super.clone();
type.headerType = headerType.clone();
- type.bodyType = bodyType.clone();
type.inherits = new ArrayList<>(inherits.size());
type.inherits.addAll(inherits);
return type;
@@ -139,11 +147,10 @@ public class DocumentType extends StructuredDataType {
@Deprecated // TODO: Remove on Vespa 8
/** @deprecated use contentStruct instead */
public StructDataType getBodyType() {
- return bodyType;
+ return null;
}
@Override
- @SuppressWarnings("deprecation")
protected void register(DocumentTypeManager manager, List<DataType> seenTypes) {
seenTypes.add(this);
for (DocumentType type : getInheritedTypes()) {
@@ -153,23 +160,17 @@ public class DocumentType extends StructuredDataType {
}
// Get parent fields into fields specified in this type
StructDataType header = headerType.clone();
- StructDataType body = bodyType.clone();
header.clearFields();
- body.clearFields();
for (Field field : getAllUniqueFields()) {
- (field.isHeader() ? header : body).addField(field);
+ header.addField(field);
}
headerType.assign(header);
- bodyType.assign(body);
if (!seenTypes.contains(headerType)) {
headerType.register(manager, seenTypes);
}
- if (!seenTypes.contains(bodyType)) {
- bodyType.register(manager, seenTypes);
- }
manager.registerSingleType(this);
}
@@ -194,7 +195,6 @@ public class DocumentType extends StructuredDataType {
*
* @param field the field to add
*/
- @SuppressWarnings("deprecation")
public void addField(Field field) {
if (isRegistered()) {
throw new IllegalStateException("You cannot add fields to a document type that is already registered.");
@@ -227,7 +227,7 @@ public class DocumentType extends StructuredDataType {
}
/**
- * Adds a new body field to this document type and returns the new field object
+ * Adds a new field to this document type and returns the new field object
*
* @param name The name of the field to add
* @param type The datatype of the field to add
@@ -346,9 +346,6 @@ public class DocumentType extends StructuredDataType {
*/
public Field getField(String name) {
Field field = headerType.getField(name);
- if (field == null) {
- field = bodyType.getField(name);
- }
if (field == null && !isRegistered()) {
for (DocumentType inheritedType : inherits) {
field = inheritedType.getField(name);
@@ -361,9 +358,6 @@ public class DocumentType extends StructuredDataType {
@Override
public Field getField(int id) {
Field field = headerType.getField(id);
- if (field == null) {
- field = bodyType.getField(id);
- }
if (field == null && !isRegistered()) {
for (DocumentType inheritedType : inherits) {
field = inheritedType.getField(id);
@@ -384,7 +378,7 @@ public class DocumentType extends StructuredDataType {
}
public int getFieldCount() {
- return headerType.getFieldCount() + bodyType.getFieldCount();
+ return headerType.getFieldCount();
}
public Set<String> getImportedFieldNames() {
@@ -407,9 +401,6 @@ public class DocumentType extends StructuredDataType {
}
Field field = headerType.removeField(name);
if (field == null) {
- field = bodyType.removeField(name);
- }
- if (field == null) {
for (DocumentType inheritedType : inherits) {
field = inheritedType.removeField(name);
if (field != null) break;
@@ -433,7 +424,6 @@ public class DocumentType extends StructuredDataType {
}
collection.addAll(headerType.getFields());
- collection.addAll(bodyType.getFields());
return ImmutableList.copyOf(collection);
}
@@ -485,26 +475,19 @@ public class DocumentType extends StructuredDataType {
public Iterator<Field> fieldIteratorThisTypeOnly() {
return new Iterator<>() {
Iterator<Field> headerIt = headerType.getFields().iterator();
- Iterator<Field> bodyIt = bodyType.getFields().iterator();
public boolean hasNext() {
- if (headerIt != null) {
- if (headerIt.hasNext()) return true;
- headerIt = null;
- }
- return bodyIt.hasNext();
+ return headerIt.hasNext();
}
public Field next() {
- return (headerIt != null ? headerIt.next() : bodyIt.next());
+ return headerIt.next();
}
public void remove() {
if (headerIt != null) {
headerIt.remove();
- } else {
- bodyIt.remove();
}
}
};
@@ -514,8 +497,7 @@ public class DocumentType extends StructuredDataType {
if (!(o instanceof DocumentType)) return false;
DocumentType other = (DocumentType) o;
// Ignore whether one of them have added inheritance to super Document.0 type
- if (super.equals(o) && headerType.equals(other.headerType) &&
- bodyType.equals(other.bodyType)) {
+ if (super.equals(o) && headerType.equals(other.headerType)) {
if ((inherits.size() > 1 || other.inherits.size() > 1) ||
(inherits.size() == 1 && other.inherits.size() == 1)) {
return inherits.equals(other.inherits);
@@ -527,7 +509,7 @@ public class DocumentType extends StructuredDataType {
}
public int hashCode() {
- return super.hashCode() + headerType.hashCode() + bodyType.hashCode() + inherits.hashCode();
+ return super.hashCode() + headerType.hashCode() + inherits.hashCode();
}
@Override
@@ -543,7 +525,6 @@ public class DocumentType extends StructuredDataType {
public void visitMembers(ObjectVisitor visitor) {
super.visitMembers(visitor);
visitor.visit("headertype", headerType);
- visitor.visit("bodytype", bodyType);
visitor.visit("inherits", inherits);
}
}
diff --git a/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java b/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java
index 1d81d9e6e78..c802d2307c0 100644
--- a/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java
+++ b/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java
@@ -142,14 +142,10 @@ public class DocumentTypeManagerConfigurer implements ConfigSubscriber.SingleSub
@SuppressWarnings("deprecation")
private static void registerDocumentType(DocumentTypeManager manager, DocumentmanagerConfig.Datatype.Documenttype doc) {
StructDataType header = (StructDataType) manager.getDataType(doc.headerstruct(), "");
- StructDataType body = (StructDataType) manager.getDataType(doc.bodystruct(), "");
- for (Field field : body.getFields()) {
- field.setHeader(false);
- }
var importedFields = doc.importedfield().stream()
.map(f -> f.name())
.collect(Collectors.toUnmodifiableSet());
- DocumentType type = new DocumentType(doc.name(), header, body, importedFields);
+ DocumentType type = new DocumentType(doc.name(), header, importedFields);
for (Object j : doc.inherits()) {
DocumentmanagerConfig.Datatype.Documenttype.Inherits parent =
(DocumentmanagerConfig.Datatype.Documenttype.Inherits) j;
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java
index 27327daab47..cac05fb7879 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java
@@ -118,14 +118,12 @@ public class VespaDocumentDeserializer6 extends BufferSerializer implements Docu
doc.setId(documentId);
Struct h = doc.getHeader();
- Struct b = doc.getBody();
h.clear();
- b.clear();
if ((content & 0x2) != 0) {
- readHeaderBody(h, b);
+ readHeaderBody(h);
}
if ((content & 0x4) != 0) {
- readHeaderBody(b, h);
+ readHeaderBody(h);
}
if (dataLength != (position() - dataPos)) {
@@ -326,7 +324,7 @@ public class VespaDocumentDeserializer6 extends BufferSerializer implements Docu
buf = bigBuf;
}
- private void readHeaderBody(Struct primary, Struct alternate) {
+ private void readHeaderBody(Struct primary) {
primary.setVersion(version);
if (version < 8) {
@@ -371,24 +369,14 @@ public class VespaDocumentDeserializer6 extends BufferSerializer implements Docu
buf = GrowableByteBuffer.wrap(destination);
StructDataType priType = primary.getDataType();
- StructDataType altType = alternate.getDataType();
for (int i=0; i<numberOfFields; ++i) {
int posBefore = position();
- Struct s = null;
Integer f_id = fieldIdsAndLengths.get(i).first;
Field structField = priType.getField(f_id);
if (structField != null) {
- s = primary;
- } else {
- structField = altType.getField(f_id);
- if (structField != null) {
- s = alternate;
- }
- }
- if (s != null) {
FieldValue value = structField.getDataType().createFieldValue();
value.deserialize(structField, this);
- s.setFieldValue(structField, value);
+ primary.setFieldValue(structField, value);
}
//jump to beginning of next field:
position(posBefore + fieldIdsAndLengths.get(i).second.intValue());
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java
index 630f204c44d..3fca853b4d1 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java
@@ -96,27 +96,20 @@ public class VespaDocumentSerializer6 extends BufferSerializer implements Docume
doc.getId().serialize(this);
- Struct head = doc.getHeader();
- Struct body = doc.getBody();
- boolean hasHead = (head.getFieldCount() != 0);
- boolean hasBody = (body.getFieldCount() != 0);
+ boolean hasHead = (doc.getFieldCount() != 0);
byte contents = 0x01; // Indicating we have document type which we always have
if (hasHead) {
contents |= 0x2; // Indicate we have header
}
- if (hasBody) {
- contents |= 0x4; // Indicate we have a body
- }
+
buf.put(contents);
doc.getDataType().serialize(this);
if (hasHead) {
- head.serialize(null, this);
- }
- if (hasBody) {
- body.serialize(null, this);
+ doc.getHeader().serialize(null, this);
}
+
int finalPos = buf.position();
buf.position(lenPos);
buf.putInt(finalPos - lenPos - 4); // Don't include the length itself or the version
diff --git a/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java b/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java
index 5db98f26141..9dc5b7c2480 100644
--- a/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java
+++ b/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java
@@ -106,7 +106,6 @@ public final class XmlDocumentWriter implements DocumentWriter {
buffer.addAttribute("lastmodifiedtime", lastModified);
}
write(null, value.getHeader());
- write(null, value.getBody());
buffer.endTag();
}
diff --git a/document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java b/document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java
index 85bc4d032ff..8c6444fb853 100644
--- a/document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java
+++ b/document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java
@@ -55,7 +55,6 @@ public class XmlSerializationHelper {
xml.addAttribute("lastmodifiedtime", lastModified);
}
doc.getHeader().printXml(xml);
- doc.getBody().printXml(xml);
}
public static void printDoubleXml(DoubleFieldValue d, XmlStream xml) {
diff --git a/document/src/test/document/documentmanager.cfg b/document/src/test/document/documentmanager.cfg
index d77c2b17460..e4c581304ce 100644
--- a/document/src/test/document/documentmanager.cfg
+++ b/document/src/test/document/documentmanager.cfg
@@ -5,10 +5,13 @@ datatype[0].weightedsettype[0]
datatype[0].structtype[1]
datatype[0].structtype[0].name foobar.header
datatype[0].structtype[0].version 9
-datatype[0].structtype[0].field[1]
+datatype[0].structtype[0].field[2]
datatype[0].structtype[0].field[0].name foobarfield1
datatype[0].structtype[0].field[0].id[0]
datatype[0].structtype[0].field[0].datatype 4
+datatype[0].structtype[0].field[1].name foobarfield0
+datatype[0].structtype[0].field[1].id[0]
+datatype[0].structtype[0].field[1].datatype 2
datatype[0].documenttype[0]
datatype[1].id 278604398
datatype[1].arraytype[0]
@@ -16,10 +19,6 @@ datatype[1].weightedsettype[0]
datatype[1].structtype[1]
datatype[1].structtype[0].name foobar.body
datatype[1].structtype[0].version 9
-datatype[1].structtype[0].field[1]
-datatype[1].structtype[0].field[0].name foobarfield0
-datatype[1].structtype[0].field[0].id[0]
-datatype[1].structtype[0].field[0].datatype 2
datatype[1].documenttype[0]
datatype[2].id 378030104
datatype[2].arraytype[0]
@@ -48,7 +47,6 @@ datatype[4].weightedsettype[0]
datatype[4].structtype[1]
datatype[4].structtype[0].name banana.body
datatype[4].structtype[0].version 234
-datatype[4].structtype[0].field[0]
datatype[4].documenttype[0]
datatype[5].id 556449802
datatype[5].arraytype[0]
@@ -68,7 +66,13 @@ datatype[6].weightedsettype[0]
datatype[6].structtype[1]
datatype[6].structtype[0].name customtypes.header
datatype[6].structtype[0].version 3
-datatype[6].structtype[0].field[0]
+datatype[6].structtype[0].field[2]
+datatype[6].structtype[0].field[0].name arrayfloat
+datatype[6].structtype[0].field[0].id[0]
+datatype[6].structtype[0].field[0].datatype 99
+datatype[6].structtype[0].field[1].name arrayarrayfloat
+datatype[6].structtype[0].field[1].id[0]
+datatype[6].structtype[0].field[1].datatype 4003
datatype[6].documenttype[0]
datatype[7].id 99
datatype[7].arraytype[1]
@@ -88,13 +92,6 @@ datatype[9].weightedsettype[0]
datatype[9].structtype[1]
datatype[9].structtype[0].name customtypes.body
datatype[9].structtype[0].version 3
-datatype[9].structtype[0].field[2]
-datatype[9].structtype[0].field[0].name arrayfloat
-datatype[9].structtype[0].field[0].id[0]
-datatype[9].structtype[0].field[0].datatype 99
-datatype[9].structtype[0].field[1].name arrayarrayfloat
-datatype[9].structtype[0].field[1].id[0]
-datatype[9].structtype[0].field[1].datatype 4003
datatype[9].documenttype[0]
datatype[10].id -1500313747
datatype[10].arraytype[0]
diff --git a/document/src/test/java/com/yahoo/document/DocumentSerializationTestCase.java b/document/src/test/java/com/yahoo/document/DocumentSerializationTestCase.java
index fa47c80c6fb..b2be93bfff9 100644
--- a/document/src/test/java/com/yahoo/document/DocumentSerializationTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentSerializationTestCase.java
@@ -116,18 +116,15 @@ public class DocumentSerializationTestCase extends AbstractTypesTest {
CompressionConfig lz4comp = new CompressionConfig(CompressionType.LZ4);
{
doc.getDataType().contentStruct().setCompressionConfig(noncomp);
- doc.getDataType().getBodyType().setCompressionConfig(noncomp);
FileOutputStream fout = new FileOutputStream(path + "document-java-currentversion-uncompressed.dat", false);
doc.serialize(fout);
fout.close();
}
{
doc.getDataType().contentStruct().setCompressionConfig(lz4comp);
- doc.getDataType().getBodyType().setCompressionConfig(lz4comp);
FileOutputStream fout = new FileOutputStream(path + "document-java-currentversion-lz4-9.dat", false);
doc.serialize(fout);
doc.getDataType().contentStruct().setCompressionConfig(noncomp);
- doc.getDataType().getBodyType().setCompressionConfig(noncomp);
fout.close();
}
}
diff --git a/document/src/test/java/com/yahoo/document/DocumentTestCase.java b/document/src/test/java/com/yahoo/document/DocumentTestCase.java
index dcd4622b3f4..be6544563ed 100644
--- a/document/src/test/java/com/yahoo/document/DocumentTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentTestCase.java
@@ -753,12 +753,10 @@ public class DocumentTestCase extends DocumentTestCaseBase {
CompressionConfig lz4comp = new CompressionConfig(CompressionType.LZ4);
doc.getDataType().contentStruct().setCompressionConfig(lz4comp);
- doc.getDataType().getBodyType().setCompressionConfig(lz4comp);
buf = new GrowableByteBuffer(size, 2.0f);
doc.serialize(buf);
doc.getDataType().contentStruct().setCompressionConfig(noncomp);
- doc.getDataType().getBodyType().setCompressionConfig(noncomp);
fos = new FileOutputStream("src/tests/data/serializejava-compressed.dat");
fos.write(buf.array(), 0, buf.position());
fos.close();
@@ -816,13 +814,11 @@ public class DocumentTestCase extends DocumentTestCaseBase {
CompressionConfig lz4comp = new CompressionConfig(CompressionType.LZ4);
doc.getDataType().contentStruct().setCompressionConfig(lz4comp);
- doc.getDataType().getBodyType().setCompressionConfig(lz4comp);
GrowableByteBuffer data = new GrowableByteBuffer();
doc.serialize(data);
int size = doc.getSerializedSize();
doc.getDataType().contentStruct().setCompressionConfig(noncomp);
- doc.getDataType().getBodyType().setCompressionConfig(noncomp);
assertEquals(size, data.position());
diff --git a/document/src/test/java/com/yahoo/document/documentmanager.docindoc.cfg b/document/src/test/java/com/yahoo/document/documentmanager.docindoc.cfg
index 3347c3127b5..65ce1b56811 100644
--- a/document/src/test/java/com/yahoo/document/documentmanager.docindoc.cfg
+++ b/document/src/test/java/com/yahoo/document/documentmanager.docindoc.cfg
@@ -4,16 +4,15 @@ datatype[0].id -1407012075
datatype[0].structtype[1]
datatype[0].structtype[0].name "outerdoc.body"
datatype[0].structtype[0].version 0
-datatype[0].structtype[0].field[1]
-datatype[0].structtype[0].field[0].datatype -2035324352
-datatype[0].structtype[0].field[0].name "innerdocuments"
datatype[1].id -1686125086
datatype[1].structtype[1]
datatype[1].structtype[0].name "docindoc.header"
datatype[1].structtype[0].version 0
-datatype[1].structtype[0].field[1]
+datatype[1].structtype[0].field[2]
datatype[1].structtype[0].field[0].datatype 2
datatype[1].structtype[0].field[0].name "name"
+datatype[1].structtype[0].field[1].datatype 2
+datatype[1].structtype[0].field[1].name "content"
datatype[2].id -2035324352
datatype[2].arraytype[1]
datatype[2].arraytype[0].datatype 1447635645
@@ -21,6 +20,9 @@ datatype[3].id -2040625920
datatype[3].structtype[1]
datatype[3].structtype[0].name "outerdoc.header"
datatype[3].structtype[0].version 0
+datatype[3].structtype[0].field[1]
+datatype[3].structtype[0].field[0].datatype -2035324352
+datatype[3].structtype[0].field[0].name "innerdocuments"
datatype[4].id 1447635645
datatype[4].documenttype[1]
datatype[4].documenttype[0].bodystruct 2030224503
@@ -37,6 +39,3 @@ datatype[6].id 2030224503
datatype[6].structtype[1]
datatype[6].structtype[0].name "docindoc.body"
datatype[6].structtype[0].version 0
-datatype[6].structtype[0].field[1]
-datatype[6].structtype[0].field[0].datatype 2
-datatype[6].structtype[0].field[0].name "content"
diff --git a/document/src/tests/data/crossplatform-java-cpp-document.cfg b/document/src/tests/data/crossplatform-java-cpp-document.cfg
index 134d31b1831..672a22b3cf5 100644
--- a/document/src/tests/data/crossplatform-java-cpp-document.cfg
+++ b/document/src/tests/data/crossplatform-java-cpp-document.cfg
@@ -34,7 +34,10 @@ datatype[4].weightedsettype[0]
datatype[4].structtype[1]
datatype[4].structtype[0].name docindoc.header
datatype[4].structtype[0].version 0
-datatype[4].structtype[0].field[0]
+datatype[4].structtype[0].field[1]
+datatype[4].structtype[0].field[0].name stringindocfield
+datatype[4].structtype[0].field[0].id[0]
+datatype[4].structtype[0].field[0].datatype 2
datatype[4].documenttype[0]
datatype[5].id 2030224503
datatype[5].arraytype[0]
@@ -42,10 +45,6 @@ datatype[5].weightedsettype[0]
datatype[5].structtype[1]
datatype[5].structtype[0].name docindoc.body
datatype[5].structtype[0].version 0
-datatype[5].structtype[0].field[1]
-datatype[5].structtype[0].field[0].name stringindocfield
-datatype[5].structtype[0].field[0].id[0]
-datatype[5].structtype[0].field[0].datatype 2
datatype[5].documenttype[0]
datatype[6].id 1447635645
datatype[6].arraytype[0]
@@ -63,7 +62,7 @@ datatype[7].weightedsettype[0]
datatype[7].structtype[1]
datatype[7].structtype[0].name serializetest.header
datatype[7].structtype[0].version 0
-datatype[7].structtype[0].field[4]
+datatype[7].structtype[0].field[11]
datatype[7].structtype[0].field[0].name floatfield
datatype[7].structtype[0].field[0].id[0]
datatype[7].structtype[0].field[0].datatype 1
@@ -76,6 +75,39 @@ datatype[7].structtype[0].field[2].datatype 4
datatype[7].structtype[0].field[3].name urifield
datatype[7].structtype[0].field[3].id[0]
datatype[7].structtype[0].field[3].datatype 10
+datatype[7].structtype[0].field[4].name intfield
+datatype[7].structtype[0].field[4].id[0]
+datatype[7].structtype[0].field[4].datatype 0
+datatype[7].structtype[0].field[5].name rawfield
+datatype[7].structtype[0].field[5].id[0]
+datatype[7].structtype[0].field[5].datatype 3
+datatype[7].structtype[0].field[6].name doublefield
+datatype[7].structtype[0].field[6].id[0]
+datatype[7].structtype[0].field[6].datatype 5
+datatype[7].structtype[0].field[7].name contentfield
+datatype[7].structtype[0].field[7].id[0]
+datatype[7].structtype[0].field[7].datatype 2
+datatype[7].structtype[0].field[8].name bytefield
+datatype[7].structtype[0].field[8].id[0]
+datatype[7].structtype[0].field[8].datatype 16
+datatype[7].structtype[0].field[9].name arrayoffloatfield
+datatype[7].structtype[0].field[9].id[0]
+datatype[7].structtype[0].field[9].datatype 1001
+datatype[7].structtype[0].field[10].name arrayofarrayoffloatfield
+datatype[7].structtype[0].field[10].id[0]
+datatype[7].structtype[0].field[10].datatype 2001
+datatype[7].structtype[0].field[11].name docfield
+datatype[7].structtype[0].field[11].id[0]
+datatype[7].structtype[0].field[11].datatype 8
+datatype[7].structtype[0].field[12].name wsfield
+datatype[7].structtype[0].field[12].id[0]
+datatype[7].structtype[0].field[12].datatype 437829
+datatype[7].structtype[0].field[13].name mapfield
+datatype[7].structtype[0].field[13].id[0]
+datatype[7].structtype[0].field[13].datatype 9999
+datatype[7].structtype[0].field[14].name boolfield
+datatype[7].structtype[0].field[14].id[0]
+datatype[7].structtype[0].field[14].datatype 6
datatype[7].documenttype[0]
datatype[8].id 1026122976
datatype[8].arraytype[0]
@@ -83,40 +115,7 @@ datatype[8].weightedsettype[0]
datatype[8].structtype[1]
datatype[8].structtype[0].name serializetest.body
datatype[8].structtype[0].version 0
-datatype[8].structtype[0].field[11]
-datatype[8].structtype[0].field[0].name intfield
-datatype[8].structtype[0].field[0].id[0]
-datatype[8].structtype[0].field[0].datatype 0
-datatype[8].structtype[0].field[1].name rawfield
-datatype[8].structtype[0].field[1].id[0]
-datatype[8].structtype[0].field[1].datatype 3
-datatype[8].structtype[0].field[2].name doublefield
-datatype[8].structtype[0].field[2].id[0]
-datatype[8].structtype[0].field[2].datatype 5
-datatype[8].structtype[0].field[3].name contentfield
-datatype[8].structtype[0].field[3].id[0]
-datatype[8].structtype[0].field[3].datatype 2
-datatype[8].structtype[0].field[4].name bytefield
-datatype[8].structtype[0].field[4].id[0]
-datatype[8].structtype[0].field[4].datatype 16
-datatype[8].structtype[0].field[5].name arrayoffloatfield
-datatype[8].structtype[0].field[5].id[0]
-datatype[8].structtype[0].field[5].datatype 1001
-datatype[8].structtype[0].field[6].name arrayofarrayoffloatfield
-datatype[8].structtype[0].field[6].id[0]
-datatype[8].structtype[0].field[6].datatype 2001
-datatype[8].structtype[0].field[7].name docfield
-datatype[8].structtype[0].field[7].id[0]
-datatype[8].structtype[0].field[7].datatype 8
-datatype[8].structtype[0].field[8].name wsfield
-datatype[8].structtype[0].field[8].id[0]
-datatype[8].structtype[0].field[8].datatype 437829
-datatype[8].structtype[0].field[9].name mapfield
-datatype[8].structtype[0].field[9].id[0]
-datatype[8].structtype[0].field[9].datatype 9999
-datatype[8].structtype[0].field[10].name boolfield
-datatype[8].structtype[0].field[10].id[0]
-datatype[8].structtype[0].field[10].datatype 6
+datatype[8].structtype[0].field[0]
datatype[8].documenttype[0]
datatype[9].id 1306012852
datatype[9].arraytype[0]
diff --git a/document/src/vespa/document/config/documentmanager.def b/document/src/vespa/document/config/documentmanager.def
index 092a29d9293..d53fec43e5d 100644
--- a/document/src/vespa/document/config/documentmanager.def
+++ b/document/src/vespa/document/config/documentmanager.def
@@ -88,7 +88,7 @@ datatype[].documenttype[].inherits[].version int default=0
datatype[].documenttype[].headerstruct int
## Specify a document field id. Must be unique within the document type.
-datatype[].documenttype[].bodystruct int
+datatype[].documenttype[].bodystruct int default=0
## Field sets
datatype[].documenttype[].fieldsets{}.fields[] string
diff --git a/document/src/vespa/document/config/documenttypes.def b/document/src/vespa/document/config/documenttypes.def
index 0f0a9e3e37c..d02e9fe49f2 100644
--- a/document/src/vespa/document/config/documenttypes.def
+++ b/document/src/vespa/document/config/documenttypes.def
@@ -18,7 +18,7 @@ documenttype[].version int default=0
documenttype[].headerstruct int
## Specify a document field id. Must be unique within the document type.
-documenttype[].bodystruct int
+documenttype[].bodystruct int default=0
## Specify a document type to inherit (id)
documenttype[].inherits[].id int
diff --git a/documentapi/src/test/cfg/documentmanager.cfg b/documentapi/src/test/cfg/documentmanager.cfg
index eec3a6a06a0..75f205337a1 100644
--- a/documentapi/src/test/cfg/documentmanager.cfg
+++ b/documentapi/src/test/cfg/documentmanager.cfg
@@ -5,7 +5,10 @@ datatype[0].weightedsettype[0]
datatype[0].structtype[1]
datatype[0].structtype[0].name music.header
datatype[0].structtype[0].version 0
-datatype[0].structtype[0].field[0]
+datatype[0].structtype[0].field[1]
+datatype[0].structtype[0].field[0].name artist
+datatype[0].structtype[0].field[0].id[0]
+datatype[0].structtype[0].field[0].datatype 2
datatype[0].documenttype[0]
datatype[1].id 993120973
datatype[1].arraytype[0]
@@ -13,10 +16,6 @@ datatype[1].weightedsettype[0]
datatype[1].structtype[1]
datatype[1].structtype[0].name music.body
datatype[1].structtype[0].version 0
-datatype[1].structtype[0].field[1]
-datatype[1].structtype[0].field[0].name artist
-datatype[1].structtype[0].field[0].id[0]
-datatype[1].structtype[0].field[0].datatype 2
datatype[1].documenttype[0]
datatype[2].id 1412693671
datatype[2].arraytype[0]
diff --git a/documentapi/test/cfg/testdoc.cfg b/documentapi/test/cfg/testdoc.cfg
index 89bea273b6e..f218ddcd3b4 100644
--- a/documentapi/test/cfg/testdoc.cfg
+++ b/documentapi/test/cfg/testdoc.cfg
@@ -17,7 +17,7 @@ datatype[1].weightedsettype[0]
datatype[1].structtype[1]
datatype[1].structtype[0].name testdoc.header
datatype[1].structtype[0].version 0
-datatype[1].structtype[0].field[4]
+datatype[1].structtype[0].field[10]
datatype[1].structtype[0].field[0].name floatfield
datatype[1].structtype[0].field[0].id[0]
datatype[1].structtype[0].field[0].datatype 1
@@ -30,6 +30,24 @@ datatype[1].structtype[0].field[2].datatype 4
datatype[1].structtype[0].field[3].name urifield
datatype[1].structtype[0].field[3].id[0]
datatype[1].structtype[0].field[3].datatype 10
+datatype[1].structtype[0].field[4].name intfield
+datatype[1].structtype[0].field[4].id[0]
+datatype[1].structtype[0].field[4].datatype 0
+datatype[1].structtype[0].field[5].name rawfield
+datatype[1].structtype[0].field[5].id[0]
+datatype[1].structtype[0].field[5].datatype 3
+datatype[1].structtype[0].field[6].name doublefield
+datatype[1].structtype[0].field[6].id[0]
+datatype[1].structtype[0].field[6].datatype 5
+datatype[1].structtype[0].field[7].name contentfield
+datatype[1].structtype[0].field[7].id[0]
+datatype[1].structtype[0].field[7].datatype 2
+datatype[1].structtype[0].field[8].name bytefield
+datatype[1].structtype[0].field[8].id[0]
+datatype[1].structtype[0].field[8].datatype 16
+datatype[1].structtype[0].field[9].name foo
+datatype[1].structtype[0].field[9].id[0]
+datatype[1].structtype[0].field[9].datatype 666999
datatype[1].documenttype[0]
datatype[2].id 1878320748
datatype[2].arraytype[0]
@@ -37,25 +55,6 @@ datatype[2].weightedsettype[0]
datatype[2].structtype[1]
datatype[2].structtype[0].name testdoc.body
datatype[2].structtype[0].version 0
-datatype[2].structtype[0].field[6]
-datatype[2].structtype[0].field[0].name intfield
-datatype[2].structtype[0].field[0].id[0]
-datatype[2].structtype[0].field[0].datatype 0
-datatype[2].structtype[0].field[1].name rawfield
-datatype[2].structtype[0].field[1].id[0]
-datatype[2].structtype[0].field[1].datatype 3
-datatype[2].structtype[0].field[2].name doublefield
-datatype[2].structtype[0].field[2].id[0]
-datatype[2].structtype[0].field[2].datatype 5
-datatype[2].structtype[0].field[3].name contentfield
-datatype[2].structtype[0].field[3].id[0]
-datatype[2].structtype[0].field[3].datatype 2
-datatype[2].structtype[0].field[4].name bytefield
-datatype[2].structtype[0].field[4].id[0]
-datatype[2].structtype[0].field[4].datatype 16
-datatype[2].structtype[0].field[5].name foo
-datatype[2].structtype[0].field[5].id[0]
-datatype[2].structtype[0].field[5].datatype 666999
datatype[2].documenttype[0]
datatype[3].id -1175657560
datatype[3].arraytype[0]
@@ -73,7 +72,10 @@ datatype[4].weightedsettype[0]
datatype[4].structtype[1]
datatype[4].structtype[0].name other.header
datatype[4].structtype[0].version 0
-datatype[4].structtype[0].field[0]
+datatype[4].structtype[0].field[1]
+datatype[4].structtype[0].field[0].name intfield
+datatype[4].structtype[0].field[0].id[0]
+datatype[4].structtype[0].field[0].datatype 0
datatype[4].documenttype[0]
datatype[5].id -72846462
datatype[5].arraytype[0]
@@ -81,10 +83,6 @@ datatype[5].weightedsettype[0]
datatype[5].structtype[1]
datatype[5].structtype[0].name other.body
datatype[5].structtype[0].version 0
-datatype[5].structtype[0].field[1]
-datatype[5].structtype[0].field[0].name intfield
-datatype[5].structtype[0].field[0].id[0]
-datatype[5].structtype[0].field[0].datatype 0
datatype[5].documenttype[0]
datatype[6].id -1146158894
datatype[6].arraytype[0]
diff --git a/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java b/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java
index 29bee2e9e3e..91b786e20f5 100644
--- a/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java
+++ b/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java
@@ -870,25 +870,21 @@ public class DocumentGenPluginTest {
final Book book = getBook();
assertEquals(book.getMystruct().getD1(), (Double)56.777);
assertEquals(book.getMystruct().getCompressionType(), CompressionType.NONE);
- assertEquals(book.getBody().getFieldCount(), 0);
- assertEquals(book.getHeader().getFieldCount(), 13);
+ assertEquals(book.getFieldCount(), 13);
assertEquals(book.getMystruct().getFieldCount(), 4);
assertEquals(book.getContent().get(0), 3);
assertEquals(book.getContent().get(1), 4);
assertEquals(book.getContent().get(2), 5);
final Document des = roundtripSerialize(book, typeManagerForBookType());
- assertEquals(des.getBody().getFieldCount(), 0);
- assertEquals(des.getHeader().getFieldCount(), 13);
+ assertEquals(des.getFieldCount(), 13);
assertEquals(des.getDataType().getName(), "book");
assertEquals(((Raw) des.getFieldValue("content")).getByteBuffer().get(0), 3);
assertEquals(((Raw) des.getFieldValue("content")).getByteBuffer().get(1), 4);
assertEquals(((Raw) des.getFieldValue("content")).getByteBuffer().get(2), 5);
assertEquals(des.getFieldValue("author").toString(), "Herman Melville");
assertEquals(des.getFieldValue("title").toString(), "Moby Dick - Or The Whale");
- assertEquals(des.getHeader().getFieldValue("title").toString(), "Moby Dick - Or The Whale");
- assertNull(des.getBody().getFieldValue("title"));
- assertEquals(des.getHeader().getFieldValue("author").toString(), "Herman Melville");
- assertNull(des.getBody().getFieldValue("author"));
+ assertEquals(des.getFieldValue("title").toString(), "Moby Dick - Or The Whale");
+ assertEquals(des.getFieldValue("author").toString(), "Herman Melville");
Struct mystruct = (Struct)des.getFieldValue("mystruct");
FieldValue d1 = mystruct.getFieldValue("d1");
diff --git a/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java b/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java
index 95b6528bd77..3faf47ccfa9 100644
--- a/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java
+++ b/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java
@@ -441,7 +441,6 @@ public class DocumentGenMojo extends AbstractMojo {
ind(1)+"/** The doc type of this.*/\n" +
ind(1)+"public static final com.yahoo.document.DocumentType type = getDocumentType();\n\n"+
ind(1)+"/** Struct type view of the type of the body of this.*/\n" +
- ind(1)+"private static final com.yahoo.document.StructDataType bodyStructType = getBodyStructType();\n\n" +
ind(1)+"/** Struct type view of the type of the header of this.*/\n" +
ind(1)+"private static final com.yahoo.document.StructDataType headerStructType = getHeaderStructType();\n\n");
@@ -460,9 +459,7 @@ public class DocumentGenMojo extends AbstractMojo {
// Mimic header and body to make serialization work.
// This can be improved by generating a method to serialize the document _here_, and use that in serialization.
exportOverriddenStructGetter(docType.allHeader().getFields(), out, 1, "getHeader", className+".headerStructType");
- exportOverriddenStructGetter(docType.allBody().getFields(), out, 1, "getBody", className+".bodyStructType");
exportStructTypeGetter(docType.getName()+".header", docType.allHeader().getFields(), out, 1, "getHeaderStructType", "com.yahoo.document.StructDataType");
- exportStructTypeGetter(docType.getName()+".body", docType.allBody().getFields(), out, 1, "getBodyStructType", "com.yahoo.document.StructDataType");
Collection<Field> allUniqueFields = getAllUniqueFields(multiExtends, docType.getAllFields());
exportExtendedStructTypeGetter(className, docType.getName(), allUniqueFields, docType.getFieldSets(),
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/MockedOperationHandler.java b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/MockedOperationHandler.java
index 0b3ee6d0792..eb6bb609970 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/MockedOperationHandler.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/MockedOperationHandler.java
@@ -33,7 +33,7 @@ public class MockedOperationHandler implements OperationHandler {
@SuppressWarnings("deprecation")
public void put(RestUri restUri, FeedOperation data, Optional<String> route) throws RestApiException {
log.append("PUT: " + data.getDocument().getId());
- log.append(data.getDocument().getBody().toString());
+ log.append(data.getDocument().getHeader().toString());
}
@Override