diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-02-16 15:18:11 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-02-16 15:18:11 +0000 |
commit | bb7c40435ff9f80c47cba77fbae7f2276171adf1 (patch) | |
tree | e30a52a9aec4e0b8eb8f8818f87c7b94f4cb9ad9 /document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java | |
parent | 90694216f0c1cd2dcb43fa346051949c72a9a438 (diff) |
avoid using getHeader() in serialization code
Diffstat (limited to 'document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java')
-rw-r--r-- | document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java | 16 |
1 files changed, 6 insertions, 10 deletions
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 757356e3096..4afab9233c6 100644 --- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java +++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java @@ -116,13 +116,11 @@ public class VespaDocumentDeserializer6 extends BufferSerializer implements Docu doc.setDataType(readDocumentType()); doc.setId(documentId); - Struct h = doc.getHeader(); - h.clear(); if ((content & 0x2) != 0) { - readHeaderBody(h); + readHeaderBody(doc); } if ((content & 0x4) != 0) { - readHeaderBody(h); + readHeaderBody(doc); } if (dataLength != (position() - dataPos)) { @@ -322,15 +320,12 @@ public class VespaDocumentDeserializer6 extends BufferSerializer implements Docu buf = bigBuf; } - private void readHeaderBody(Struct primary) { - primary.setVersion(version); - + private void readHeaderBody(Document target) { if (version < 8) { throw new DeserializationException("Illegal document serialization version " + version); } int dataSize = getInt(null); - byte comprCode = getByte(null); CompressionType compression = CompressionType.valueOf(comprCode); @@ -366,7 +361,8 @@ public class VespaDocumentDeserializer6 extends BufferSerializer implements Docu // for a while: deserialize from this buffer instead: buf = GrowableByteBuffer.wrap(destination); - StructDataType priType = primary.getDataType(); + StructDataType priType = target.getDataType().contentStruct(); + for (int i=0; i<numberOfFields; ++i) { int posBefore = position(); Integer f_id = fieldIdsAndLengths.get(i).first; @@ -374,7 +370,7 @@ public class VespaDocumentDeserializer6 extends BufferSerializer implements Docu if (structField != null) { FieldValue value = structField.getDataType().createFieldValue(); value.deserialize(structField, this); - primary.setFieldValue(structField, value); + target.setFieldValue(structField, value); } //jump to beginning of next field: position(posBefore + fieldIdsAndLengths.get(i).second.intValue()); |