/// <summary> /// This method is used to write the version attribute. A version is /// written only if it is not the initial version or if it required. /// The version is used to determine how to deserialize the XML. If /// the version is different from the expected version then it allows /// the object to be deserialized in a manner that does not require /// any attributes or elements, and unmatched nodes are ignored. /// </summary> /// <param name="node"> /// this is the node to read the version attribute from /// </param> /// <param name="source"> /// this is the source object that is to be written /// </param> /// <param name="schema"> /// this is the schema that contains the version /// </param> public void WriteVersion(OutputNode node, Object source, Schema schema) { Version version = schema.getRevision(); Label label = schema.GetVersion(); if(version != null) { Double start = revision.Default; Double value = version.revision(); if(revision.Compare(value, start)) { if(label.isRequired()) { WriteAttribute(node, value, label); } } else { WriteAttribute(node, value, label); } } }
/// <summary> /// This method is used to read the version from the provided input /// node. Once the version has been read it is used to determine how /// to deserialize the object. If the version is not the initial /// version then it is read in a manner that ignores excessive XML /// elements and attributes. Also none of the annotated fields or /// methods are required if the version is not the initial version. /// </summary> /// <param name="node"> /// the XML element contact values are deserialized from /// </param> /// <param name="source"> /// this object whose contacts are to be deserialized /// </param> /// <param name="schema"> /// this object visits the objects contacts /// </param> public void ReadVersion(InputNode node, Object source, Schema schema) { Label label = schema.GetVersion(); Class expect = type.Type; if(label != null) { String name = label.GetName(); NodeMap<InputNode> map = node.getAttributes(); InputNode value = map.Remove(name); if(value != null) { ReadVersion(value, source, label); } else { Version version = context.GetVersion(expect); Double start = revision.Default; Double expected = version.revision(); criteria.Set(label, start); revision.Compare(expected, start); } } }