diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-01-10 13:38:22 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-01-10 13:38:22 +0100 |
commit | 2e8e8f37a6fcc7ca194310a05ff079c3ad61127f (patch) | |
tree | 5111c810002a69efb6e5f4dfc6a59a5723fab32a /document/src/main/java | |
parent | c194ae3b6f72538b0709dd4a51cb08306c33e836 (diff) |
Add serialization for bool fields.
Diffstat (limited to 'document/src/main/java')
10 files changed, 93 insertions, 8 deletions
diff --git a/document/src/main/java/com/yahoo/document/datatypes/BoolFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/BoolFieldValue.java index 2a48b550658..189c275809a 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/BoolFieldValue.java +++ b/document/src/main/java/com/yahoo/document/datatypes/BoolFieldValue.java @@ -60,6 +60,7 @@ public class BoolFieldValue extends FieldValue { public boolean getBoolean() { return value; } + public void setBoolean(boolean value) { this.value = value; } @Override public Object getWrappedValue() { diff --git a/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java b/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java index 6adae27cadc..e4ca20a8e32 100644 --- a/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java +++ b/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java @@ -9,6 +9,7 @@ import com.yahoo.document.DocumentUpdate; import com.yahoo.document.FieldPath; import com.yahoo.document.annotation.AnnotationReference; import com.yahoo.document.datatypes.Array; +import com.yahoo.document.datatypes.BoolFieldValue; import com.yahoo.document.datatypes.ByteFieldValue; import com.yahoo.document.datatypes.CollectionFieldValue; import com.yahoo.document.datatypes.DoubleFieldValue; @@ -285,6 +286,11 @@ public class DocumentUpdateJsonSerializer } @Override + public void write(FieldBase field, BoolFieldValue value) { + serializeBoolField(generator, field, value); + } + + @Override public <T extends FieldValue> void write(FieldBase field, CollectionFieldValue<T> value) { serializeCollectionField(this, generator, field, value); } diff --git a/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java b/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java index afe14cf1e6a..55e7dc3c1b3 100644 --- a/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java +++ b/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java @@ -8,6 +8,7 @@ import com.yahoo.document.Field; import com.yahoo.document.PositionDataType; import com.yahoo.document.PrimitiveDataType; import com.yahoo.document.datatypes.Array; +import com.yahoo.document.datatypes.BoolFieldValue; import com.yahoo.document.datatypes.ByteFieldValue; import com.yahoo.document.datatypes.CollectionFieldValue; import com.yahoo.document.datatypes.DoubleFieldValue; @@ -234,6 +235,10 @@ public class JsonSerializationHelper { serializeByte(generator, field, value.getByte()); } + public static void serializeBoolField(JsonGenerator generator, FieldBase field, BoolFieldValue value) { + serializeBool(generator, field, value.getBoolean()); + } + public static void serializePredicateField(JsonGenerator generator, FieldBase field, PredicateFieldValue value){ serializeString(generator, field, value.toString()); } @@ -252,6 +257,11 @@ public class JsonSerializationHelper { wrapIOException(() -> generator.writeNumber(value)); } + public static void serializeBool(JsonGenerator generator, FieldBase field, boolean value) { + fieldNameIfNotNull(generator, field); + wrapIOException(() -> generator.writeBoolean(value)); + } + public static void serializeShort(JsonGenerator generator, FieldBase field, short value) { fieldNameIfNotNull(generator, field); wrapIOException(() -> generator.writeNumber(value)); diff --git a/document/src/main/java/com/yahoo/document/json/JsonWriter.java b/document/src/main/java/com/yahoo/document/json/JsonWriter.java index ecec34c5d3f..ab0884a54a3 100644 --- a/document/src/main/java/com/yahoo/document/json/JsonWriter.java +++ b/document/src/main/java/com/yahoo/document/json/JsonWriter.java @@ -9,6 +9,7 @@ import com.yahoo.document.DocumentType; import com.yahoo.document.Field; import com.yahoo.document.annotation.AnnotationReference; import com.yahoo.document.datatypes.Array; +import com.yahoo.document.datatypes.BoolFieldValue; import com.yahoo.document.datatypes.ByteFieldValue; import com.yahoo.document.datatypes.CollectionFieldValue; import com.yahoo.document.datatypes.DoubleFieldValue; @@ -140,6 +141,11 @@ public class JsonWriter implements DocumentWriter { } @Override + public void write(FieldBase field, BoolFieldValue value) { + serializeBoolField(generator, field, value); + } + + @Override public <T extends FieldValue> void write(FieldBase field, CollectionFieldValue<T> value) { serializeCollectionField(this, generator, field, value); } diff --git a/document/src/main/java/com/yahoo/document/serialization/FieldReader.java b/document/src/main/java/com/yahoo/document/serialization/FieldReader.java index 11fc0c314af..0b1500ed6ba 100644 --- a/document/src/main/java/com/yahoo/document/serialization/FieldReader.java +++ b/document/src/main/java/com/yahoo/document/serialization/FieldReader.java @@ -6,7 +6,24 @@ package com.yahoo.document.serialization; import com.yahoo.document.Document; import com.yahoo.document.annotation.AnnotationReference; -import com.yahoo.document.datatypes.*; +import com.yahoo.document.datatypes.Array; +import com.yahoo.document.datatypes.BoolFieldValue; +import com.yahoo.document.datatypes.ByteFieldValue; +import com.yahoo.document.datatypes.CollectionFieldValue; +import com.yahoo.document.datatypes.DoubleFieldValue; +import com.yahoo.document.datatypes.FieldValue; +import com.yahoo.document.datatypes.FloatFieldValue; +import com.yahoo.document.datatypes.IntegerFieldValue; +import com.yahoo.document.datatypes.LongFieldValue; +import com.yahoo.document.datatypes.MapFieldValue; +import com.yahoo.document.datatypes.PredicateFieldValue; +import com.yahoo.document.datatypes.Raw; +import com.yahoo.document.datatypes.ReferenceFieldValue; +import com.yahoo.document.datatypes.StringFieldValue; +import com.yahoo.document.datatypes.Struct; +import com.yahoo.document.datatypes.StructuredFieldValue; +import com.yahoo.document.datatypes.TensorFieldValue; +import com.yahoo.document.datatypes.WeightedSet; import com.yahoo.vespa.objects.Deserializer; import com.yahoo.vespa.objects.FieldBase; @@ -54,6 +71,14 @@ public interface FieldReader extends Deserializer { void read(FieldBase field, ByteFieldValue value); /** + * Read in the value of byte field + * + * @param field - field description (name and data type) + * @param value - field value + */ + void read(FieldBase field, BoolFieldValue value); + + /** * Read in the value of collection field * * @param field - field description (name and data type) diff --git a/document/src/main/java/com/yahoo/document/serialization/FieldWriter.java b/document/src/main/java/com/yahoo/document/serialization/FieldWriter.java index 243d25c3950..63a6d997b04 100644 --- a/document/src/main/java/com/yahoo/document/serialization/FieldWriter.java +++ b/document/src/main/java/com/yahoo/document/serialization/FieldWriter.java @@ -4,6 +4,7 @@ package com.yahoo.document.serialization; import com.yahoo.document.Document; import com.yahoo.document.annotation.AnnotationReference; import com.yahoo.document.datatypes.Array; +import com.yahoo.document.datatypes.BoolFieldValue; import com.yahoo.document.datatypes.ByteFieldValue; import com.yahoo.document.datatypes.CollectionFieldValue; import com.yahoo.document.datatypes.DoubleFieldValue; @@ -78,6 +79,16 @@ public interface FieldWriter extends Serializer { void write(FieldBase field, ByteFieldValue value); /** + * Write out the value of byte field + * + * @param field + * field description (name and data type) + * @param value + * field value + */ + void write(FieldBase field, BoolFieldValue value); + + /** * Write out the value of collection field * * @param field diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer42.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer42.java index 6ec7a1e2b21..7ff5729ca39 100644 --- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer42.java +++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer42.java @@ -27,6 +27,7 @@ import com.yahoo.document.annotation.SpanNode; import com.yahoo.document.annotation.SpanNodeParent; import com.yahoo.document.annotation.SpanTree; import com.yahoo.document.datatypes.Array; +import com.yahoo.document.datatypes.BoolFieldValue; import com.yahoo.document.datatypes.ByteFieldValue; import com.yahoo.document.datatypes.CollectionFieldValue; import com.yahoo.document.datatypes.DoubleFieldValue; @@ -111,6 +112,7 @@ public class VespaDocumentDeserializer42 extends VespaDocumentSerializer42 imple public void read(Document document) { read(null, document); } + public void read(FieldBase field, Document doc) { // Verify that we have correct version @@ -219,6 +221,10 @@ public class VespaDocumentDeserializer42 extends VespaDocumentSerializer42 imple public <T extends FieldValue> void read(FieldBase field, CollectionFieldValue<T> value) { throw new IllegalArgumentException("read not implemented yet."); } + @Override + public void read(FieldBase field, BoolFieldValue value) { + value.setBoolean((getByte(null) != 0)); + } public void read(FieldBase field, ByteFieldValue value) { value.assign(getByte(null)); } public void read(FieldBase field, DoubleFieldValue value) { value.assign(getDouble(null)); } public void read(FieldBase field, FloatFieldValue value) { value.assign(getFloat(null)); } 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 6a07e04a621..581c7df8aee 100644 --- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer42.java +++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer42.java @@ -20,6 +20,7 @@ import com.yahoo.document.annotation.SpanList; import com.yahoo.document.annotation.SpanNode; import com.yahoo.document.annotation.SpanTree; import com.yahoo.document.datatypes.Array; +import com.yahoo.document.datatypes.BoolFieldValue; import com.yahoo.document.datatypes.ByteFieldValue; import com.yahoo.document.datatypes.CollectionFieldValue; import com.yahoo.document.datatypes.DoubleFieldValue; @@ -57,7 +58,6 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.logging.Logger; import static com.yahoo.text.Utf8.calculateBytePositions; @@ -168,16 +168,17 @@ public class VespaDocumentSerializer42 extends BufferSerializer implements Docum } } - /** - * Write out the value of byte field - * - * @param field - field description (name and data type) - * @param value - field value - */ + @Override public void write(FieldBase field, ByteFieldValue value) { buf.put(value.getByte()); } + @Override + public void write(FieldBase field, BoolFieldValue value) { + byte v = value.getBoolean() ? (byte)1 : (byte)0; + buf.put(v); + } + /** * Write out the value of collection field * 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 768ec879ce1..0d6b0cae926 100644 --- a/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java +++ b/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java @@ -7,6 +7,7 @@ import com.yahoo.document.DocumentType; import com.yahoo.document.Field; import com.yahoo.document.annotation.AnnotationReference; import com.yahoo.document.datatypes.Array; +import com.yahoo.document.datatypes.BoolFieldValue; import com.yahoo.document.datatypes.ByteFieldValue; import com.yahoo.document.datatypes.CollectionFieldValue; import com.yahoo.document.datatypes.DoubleFieldValue; @@ -137,6 +138,11 @@ public final class XmlDocumentWriter implements DocumentWriter { } @Override + public void write(FieldBase field, BoolFieldValue value) { + singleValueTag(field, value); + } + + @Override public <T extends FieldValue> void write(FieldBase field, CollectionFieldValue<T> value) { buffer.beginTag(field.getName()); diff --git a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFieldReader.java b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFieldReader.java index 8aa34ae9bba..737371f2375 100644 --- a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFieldReader.java +++ b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFieldReader.java @@ -298,6 +298,19 @@ public class VespaXMLFieldReader extends VespaXMLReader implements FieldReader { } } + public void read(FieldBase field, BoolFieldValue value) { + try { + String dataParsed = reader.getElementText(); + try { + value.assign(dataParsed); + } catch (Exception e) { + throw newDeserializeException(field, e.getMessage()); + } + } catch (XMLStreamException e) { + throw newException(field, e); + } + } + public void read(FieldBase field, DoubleFieldValue value) { try { String dataParsed = reader.getElementText(); |