Пример #1
0
 /// <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);
       }
    }
 }
Пример #2
0
 /// <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);
       }
    }
 }