diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-01-27 14:07:45 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-01-27 14:07:45 +0100 |
commit | 75ab63c8dea02c4e8148fb7e79730d163eb6647e (patch) | |
tree | b2557fc192f6faff27066fddb1b7692c9d06cc93 /document/src/main/java/com/yahoo/document/serialization | |
parent | b6e493d2eba1e35bd07de4eb380299e2d21ec1bc (diff) |
Deprecate xml methods
Diffstat (limited to 'document/src/main/java/com/yahoo/document/serialization')
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å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 |