diff options
5 files changed, 13 insertions, 13 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java index 096382dd023..1e14fea26b7 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java @@ -106,8 +106,8 @@ public abstract class DocsumField { public abstract Object decode(ByteBuffer b); /** - * Get the number of bytes this field occupies in the given buffer and set - * the position of the first byte after this field. + * Get the number of bytes this field occupies in the given buffer + * AND SET(!) the position to the first byte after this field. */ public abstract int getLength(ByteBuffer b); diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java index 617f382f462..3ad8ba510aa 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java @@ -5,7 +5,6 @@ */ package com.yahoo.prelude.fastsearch; - import java.nio.ByteBuffer; import com.yahoo.io.SlowInflate; @@ -13,11 +12,11 @@ import com.yahoo.prelude.hitfield.RawData; import com.yahoo.data.access.simple.Value; import com.yahoo.data.access.Inspector; - /** - * @author <a href="mailto:borud@yahoo-inc.com">Bj\u00f8rn Borud</a> + * @author Bjørn Borud */ public class LongdataField extends DocsumField implements VariableLengthField { + public LongdataField(String name) { super(name); } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java index 744476beaa5..2cb3ac51873 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java @@ -5,18 +5,17 @@ */ package com.yahoo.prelude.fastsearch; - import java.nio.ByteBuffer; import com.yahoo.io.SlowInflate; import com.yahoo.text.Utf8; import com.yahoo.data.access.Inspector; - /** - * @author <a href="mailto:borud@yahoo-inc.com">Bj\u00f8rn Borud</a> + * @author Bjørn Borud */ public class LongstringField extends DocsumField implements VariableLengthField { + public LongstringField(String name) { super(name); } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java index 422445a31da..0d97a5bdaf7 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java @@ -23,7 +23,8 @@ public class TensorField extends DocsumField implements VariableLengthField { @Override public Tensor decode(ByteBuffer buffer) { - int length = ((int) buffer.getShort()) & 0xffff; + int length = buffer.getInt(); + if (length == 0) return null; ByteBuffer contentBuffer = ByteBuffer.wrap(buffer.array(), buffer.arrayOffset() + buffer.position(), length); Tensor tensor = TypedBinaryFormat.decode(Optional.empty(), new GrowableByteBuffer(contentBuffer)); buffer.position(buffer.position() + length); @@ -45,14 +46,14 @@ public class TensorField extends DocsumField implements VariableLengthField { @Override public int getLength(ByteBuffer b) { int offset = b.position(); - int len = ((int) b.getShort()) & 0xffff; - b.position(offset + len + (Short.SIZE >> 3)); - return len + (Short.SIZE >> 3); + int length = b.getInt(); + b.position(offset + length); + return length; } @Override public int sizeOfLength() { - return Short.SIZE >> 3; + return 4; } @Override diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java index 8b582f555aa..2ff7c4864e2 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java @@ -9,6 +9,7 @@ package com.yahoo.prelude.fastsearch; */ public interface VariableLengthField { + /** Returns the size of the length preceeding the data of this field, in bytes */ int sizeOfLength(); } |