/// <summary> /// Attempts to read the current element as an annotation element. /// </summary> /// <param name="annotation">If this method returned true, this is the instance annotation information from the parsed element.</param> /// <returns>true if the element was an annotation element, false if it wasn't.</returns> /// <remarks> /// Pre-Condition: XmlNodeType.Element - The element to read. /// Post-Condition: XmlNodeType.EndElement - The end tag of the element (if the element was a non-empty annotation element). /// XmlNodeType.Element - The same element as the pre-condition if this method returned false, or an empty annotation element. /// </remarks> internal bool TryReadAnnotation(out AtomInstanceAnnotation annotation) { BufferingXmlReader xmlReader = this.inputContext.XmlReader; Debug.Assert(xmlReader != null, "xmlReader != null"); Debug.Assert(xmlReader.NodeType == XmlNodeType.Element, "xmlReader must be positioned on an Element"); annotation = null; if (this.propertyAndValueDeserializer.MessageReaderSettings.ShouldIncludeAnnotation != null && xmlReader.NamespaceEquals(this.odataMetadataNamespace) && xmlReader.LocalNameEquals(this.attributeElementName)) { annotation = AtomInstanceAnnotation.CreateFrom(this.inputContext, this.propertyAndValueDeserializer); } return(annotation != null); }
/// <summary> /// Writes the collection of <see cref="ODataInstanceAnnotation"/> to the ATOM payload. /// </summary> /// <param name="instanceAnnotations">The collection of <see cref="ODataInstanceAnnotation"/> to write.</param> /// <param name="tracker">Helper class to track if an annotation has been writen.</param> private void WriteInstanceAnnotations(IEnumerable <ODataInstanceAnnotation> instanceAnnotations, InstanceAnnotationWriteTracker tracker) { IEnumerable <AtomInstanceAnnotation> atomInstanceAnnotations = instanceAnnotations.Select(instanceAnnotation => AtomInstanceAnnotation.CreateFrom(instanceAnnotation, /*target*/ null)); this.atomEntryAndFeedSerializer.WriteInstanceAnnotations(atomInstanceAnnotations, tracker); }