aboutsummaryrefslogtreecommitdiffstats
path: root/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer42.java
diff options
context:
space:
mode:
Diffstat (limited to 'document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer42.java')
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer42.java43
1 files changed, 16 insertions, 27 deletions
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer42.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer42.java
index 581c7df8aee..ebe9a124033 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer42.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer42.java
@@ -67,11 +67,10 @@ import static com.yahoo.text.Utf8.calculateBytePositions;
* @deprecated use {@link com.yahoo.document.serialization.VespaDocumentSerializerHead} instead for new code
* @author baldersheim
*/
-@Deprecated // OK: Don't remove on Vespa 6: Mail may have documents on this format still
+@Deprecated // TODO: Remove on Vespa 8
// When removing: Move content into VespaDocumentSerializerHead
public class VespaDocumentSerializer42 extends BufferSerializer implements DocumentSerializer {
- private boolean headerOnly;
private int spanNodeCounter = -1;
private int[] bytePositions;
@@ -83,55 +82,45 @@ public class VespaDocumentSerializer42 extends BufferSerializer implements Docum
super();
}
- VespaDocumentSerializer42(GrowableByteBuffer buf, boolean headerOnly) {
- this(buf);
- this.headerOnly = headerOnly;
- }
-
- public void setHeaderOnly(boolean headerOnly) {
- this.headerOnly = headerOnly;
- }
-
public void write(Document doc) {
write(new Field(doc.getDataType().getName(), 0, doc.getDataType(), true), doc);
}
public void write(FieldBase field, Document doc) {
- //save the starting position in the buffer
- int startPos = buf.position();
-
buf.putShort(Document.SERIALIZED_VERSION);
+ //save the starting position in the buffer
+ int lenPos = buf.position();
// Temporary length, fill in after serialization is done.
buf.putInt(0);
doc.getId().serialize(this);
+ Struct head = doc.getHeader();
+ Struct body = doc.getBody();
+ boolean hasHead = (head.getFieldCount() != 0);
+ boolean hasBody = (body.getFieldCount() != 0);
+
byte contents = 0x01; // Indicating we have document type which we always have
- if (doc.getHeader().getFieldCount() > 0) {
+ if (hasHead) {
contents |= 0x2; // Indicate we have header
}
- if (!headerOnly && doc.getBody().getFieldCount() > 0) {
+ if (hasBody) {
contents |= 0x4; // Indicate we have a body
}
buf.put(contents);
doc.getDataType().serialize(this);
-
- if (doc.getHeader().getFieldCount() > 0) {
- doc.getHeader().serialize(doc.getDataType().getField("header"), this);
+ if (hasHead) {
+ head.serialize(null, this);
}
-
- if (!headerOnly && doc.getBody().getFieldCount() > 0) {
- doc.getBody().serialize(doc.getDataType().getField("body"), this);
+ if (hasBody) {
+ body.serialize(null, this);
}
-
int finalPos = buf.position();
-
- buf.position(startPos + 2);
- buf.putInt(finalPos - startPos - 2 - 4); // Don't include the length itself or the version
+ buf.position(lenPos);
+ buf.putInt(finalPos - lenPos - 4); // Don't include the length itself or the version
buf.position(finalPos);
-
}
/**