aboutsummaryrefslogtreecommitdiffstats
path: root/document/src/main/java/com/yahoo/document/serialization
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-01-27 14:07:45 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2023-01-27 14:07:45 +0100
commit75ab63c8dea02c4e8148fb7e79730d163eb6647e (patch)
treeb2557fc192f6faff27066fddb1b7692c9d06cc93 /document/src/main/java/com/yahoo/document/serialization
parentb6e493d2eba1e35bd07de4eb380299e2d21ec1bc (diff)
Deprecate xml methods
Diffstat (limited to 'document/src/main/java/com/yahoo/document/serialization')
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java339
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/XmlStream.java1
3 files changed, 3 insertions, 339 deletions
diff --git a/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java b/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java
deleted file mode 100644
index aeb4bbe79b1..00000000000
--- a/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java
+++ /dev/null
@@ -1,339 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.document.serialization;
-
-import com.yahoo.document.Document;
-import com.yahoo.document.DocumentId;
-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;
-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.FieldBase;
-import com.yahoo.vespa.objects.Serializer;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayDeque;
-import java.util.Deque;
-import java.util.Iterator;
-import java.util.Map;
-
-// TODO: Just inline all use of XmlSerializationHelper when the toXml methods in FieldValue subclasses are to be removed
-// TODO: More cleanup, the put() methods generate a lot of superfluous objects (write should call put, not the other way around)
-// TODO: remove pingpong between XmlSerializationHelper and FieldValue, this will go away when the toXml methods go away
-/**
- * Render a Document instance as XML.
- *
- * @author Steinar Knutsen
- */
-public final class XmlDocumentWriter implements DocumentWriter {
-
- private final String indent;
- private XmlStream buffer;
- private final Deque<FieldBase> optionalWrapperMarker = new ArrayDeque<>();
-
- public static XmlDocumentWriter createWriter(String indent) {
- return new XmlDocumentWriter(indent);
- }
-
- public XmlDocumentWriter() {
- this(" ");
- }
-
- private XmlDocumentWriter(String indent) {
- this.indent = indent;
- }
-
- // this method is silly, what is the intended way of doing this?
- @Override
- public void write(FieldBase field, FieldValue value) {
- Class<?> valueType = value.getClass();
- if (valueType == AnnotationReference.class) {
- write(field, (AnnotationReference) value);
- } else if (valueType == Array.class) {
- write(field, (Array<?>) value);
- } else if (valueType == WeightedSet.class) {
- write(field, (WeightedSet<?>) value);
- } else if (valueType == Document.class) {
- write(field, (Document) value);
- } else if (valueType == Struct.class) {
- write(field, (Struct) value);
- } else if (valueType == ByteFieldValue.class) {
- write(field, (ByteFieldValue) value);
- } else if (valueType == DoubleFieldValue.class) {
- write(field, (DoubleFieldValue) value);
- } else if (valueType == FloatFieldValue.class) {
- write(field, (FloatFieldValue) value);
- } else if (valueType == IntegerFieldValue.class) {
- write(field, (IntegerFieldValue) value);
- } else if (valueType == LongFieldValue.class) {
- write(field, (LongFieldValue) value);
- } else if (valueType == Raw.class) {
- write(field, (Raw) value);
- } else if (valueType == PredicateFieldValue.class) {
- write(field, (PredicateFieldValue) value);
- } else if (valueType == StringFieldValue.class) {
- write(field, (StringFieldValue) value);
- } else {
- throw new UnsupportedOperationException("Cannot serialize a "
- + valueType.getName());
- }
- }
-
- @Override
- public void write(FieldBase field, Document value) {
- buffer.beginTag("document");
- buffer.addAttribute("documenttype", value.getDataType().getName());
- buffer.addAttribute("documentid", value.getId());
- final java.lang.Long lastModified = value.getLastModified();
- if (lastModified != null) {
- buffer.addAttribute("lastmodifiedtime", lastModified);
- }
- StructuredFieldValue asStructured = value;
- write(null, asStructured);
-
- buffer.endTag();
- }
-
- @Override
- public <T extends FieldValue> void write(FieldBase field, Array<T> value) {
- buffer.beginTag(field.getName());
- XmlSerializationHelper.printArrayXml(value, buffer);
- buffer.endTag();
- }
-
- private void singleValueTag(FieldBase field, FieldValue value) {
- buffer.beginTag(field.getName());
- value.printXml(buffer);
- buffer.endTag();
- }
-
- @Override
- public <K extends FieldValue, V extends FieldValue> void write(FieldBase field, MapFieldValue<K, V> map) {
- // TODO Auto-generated method stub
- buffer.beginTag(field.getName());
- XmlSerializationHelper.printMapXml(map, buffer);
- buffer.endTag();
- }
-
- @Override
- public void write(FieldBase field, ByteFieldValue value) {
- singleValueTag(field, value);
- }
-
- @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());
- for (@SuppressWarnings("unchecked")
- Iterator<FieldValue> i = (Iterator<FieldValue>) value.iterator();
- i.hasNext();) {
- buffer.beginTag("item");
- i.next().printXml(buffer);
- buffer.endTag();
- }
- buffer.endTag();
- }
-
- @Override
- public void write(FieldBase field, DoubleFieldValue value) {
- singleValueTag(field, value);
- }
-
- @Override
- public void write(FieldBase field, FloatFieldValue value) {
- singleValueTag(field, value);
- }
-
- @Override
- public void write(FieldBase field, IntegerFieldValue value) {
- singleValueTag(field, value);
- }
-
- @Override
- public void write(FieldBase field, LongFieldValue value) {
- singleValueTag(field, value);
- }
-
- @Override
- public void write(FieldBase field, Raw value) {
- buffer.beginTag(field.getName());
- XmlSerializationHelper.printRawXml(value, buffer);
- buffer.endTag();
- }
-
- @Override
- public void write(FieldBase field, PredicateFieldValue value) {
- singleValueTag(field, value);
- }
-
- @Override
- public void write(FieldBase field, StringFieldValue value) {
- buffer.beginTag(field.getName());
- XmlSerializationHelper.printStringXml(value, buffer);
- buffer.endTag();
- }
-
- @Override
- public void write(FieldBase field, TensorFieldValue value) {
- throw new IllegalArgumentException("write() for tensor field value not implemented yet");
- }
-
- @Override
- public void write(FieldBase field, ReferenceFieldValue value) {
- throw new IllegalArgumentException("write() for reference field value not implemented yet");
- }
-
- private void optionalWrapperStart(FieldBase field) {
- if (field == null) {
- return;
- }
-
- optionalWrapperMarker.addFirst(field);
-
- buffer.beginTag(field.getName());
- }
-
- private void optionalWrapperEnd(FieldBase field) {
- if (field == null) {
- return;
- }
-
- if (optionalWrapperMarker.removeFirst() != field) {
- throw new IllegalStateException("Unbalanced optional wrapper tags.");
- }
-
- buffer.endTag();
- }
-
- @Override
- public void write(FieldBase field, Struct value) {
- StructuredFieldValue asStructured = value;
- write(field, asStructured);
- }
-
- @Override
- public void write(FieldBase field, StructuredFieldValue value) {
- optionalWrapperStart(field);
- Iterator<Map.Entry<Field, FieldValue>> i = value.iterator();
- while (i.hasNext()) {
- Map.Entry<Field, FieldValue> v = i.next();
- buffer.beginTag(v.getKey().getName());
- v.getValue().printXml(buffer);
- buffer.endTag();
- }
- optionalWrapperEnd(field);
- }
-
- @Override
- public <T extends FieldValue> void write(FieldBase field,
- WeightedSet<T> value) {
- buffer.beginTag(field.getName());
- XmlSerializationHelper.printWeightedSetXml(value, buffer);
- buffer.endTag();
- }
-
- @Override
- public void write(FieldBase field, AnnotationReference value) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public Serializer putByte(FieldBase field, byte value) {
- singleValueTag(field, new ByteFieldValue(value));
- return this;
- }
-
- @Override
- public Serializer putShort(FieldBase field, short value) {
- singleValueTag(field, new IntegerFieldValue(value));
- return this;
- }
-
- @Override
- public Serializer putInt(FieldBase field, int value) {
- singleValueTag(field, new IntegerFieldValue(value));
- return this;
- }
-
- @Override
- public Serializer putLong(FieldBase field, long value) {
- singleValueTag(field, new LongFieldValue(value));
- return this;
- }
-
- @Override
- public Serializer putFloat(FieldBase field, float value) {
- singleValueTag(field, new FloatFieldValue(value));
- return this;
- }
-
- @Override
- public Serializer putDouble(FieldBase field, double value) {
- singleValueTag(field, new DoubleFieldValue(value));
- return this;
- }
-
- @Override
- public Serializer put(FieldBase field, byte[] value) {
- write(field, new Raw(value));
- return this;
- }
-
- @Override
- public Serializer put(FieldBase field, ByteBuffer value) {
- write(field, new Raw(value));
- return this;
- }
-
- @Override
- public Serializer put(FieldBase field, String value) {
- write(field, new StringFieldValue(value));
- return this;
- }
-
- @Override
- public void write(Document document) {
- buffer = new XmlStream();
- buffer.setIndent(indent);
- optionalWrapperMarker.clear();
- write(new Field(document.getDataType().getName(), 0, document.getDataType()), document);
- }
-
- @Override
- public void write(DocumentId id) {
- throw new UnsupportedOperationException("Writing a DocumentId as XML is not implemented.");
- }
-
- @Override
- public void write(DocumentType type) {
- throw new UnsupportedOperationException("Writing a DocumentId as XML is not implemented.");
-
- }
-
- public String lastRendered() {
- return buffer.toString();
- }
-
-}
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 899ef1f9195..9c1df0cd6c7 100644
--- a/document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java
+++ b/document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java
@@ -30,6 +30,8 @@ import java.util.Map;
*
* @author <a href="mailto:humbe@yahoo-inc.com">H&aring;kon Humberset</a>
*/
+@Deprecated
+@SuppressWarnings("removal")
public class XmlSerializationHelper {
public static void printArrayXml(Array array, XmlStream xml) {
diff --git a/document/src/main/java/com/yahoo/document/serialization/XmlStream.java b/document/src/main/java/com/yahoo/document/serialization/XmlStream.java
index 40ded73b5aa..b9e29d03f7f 100644
--- a/document/src/main/java/com/yahoo/document/serialization/XmlStream.java
+++ b/document/src/main/java/com/yahoo/document/serialization/XmlStream.java
@@ -27,6 +27,7 @@ import java.util.ListIterator;
*
* @author <a href="humbe@yahoo-inc.com">Haakon Humberset</a>
*/
+@Deprecated
public class XmlStream {
// Utility class to hold attributes internally until it's time to write them