Ejemplo n.º 1
0
 /// <summary>
 /// This <c>readObject</c> method is used to perform the
 /// deserialization of the XML in to any original value. If there
 /// is no original value then this will do a read and instantiate
 /// a new value to deserialize in to. Reading in to the original
 /// ensures that existing lists or maps can be read in to.
 /// </summary>
 /// <param name="node">
 /// this is the node that contains the contact value
 /// </param>
 /// <param name="source">
 /// the source object to assign the contact value to
 /// </param>
 /// <param name="label">
 /// this is the label used to create the converter
 /// </param>
 /// <returns>
 /// this returns the original value deserialized in to
 /// </returns>
 public Object ReadObject(InputNode node, Object source, Label label) {
    Converter reader = label.getConverter(context);
    String name = label.GetName(context);
    if(label.isCollection()) {
       Variable variable = criteria.Get(name);
       Contact contact = label.getContact();
       if(variable != null) {
          Object value = variable.getValue();
          return reader.Read(node, value);
       } else {
          if(source != null) {
             Object value = contact.Get(source);
             if(value != null) {
                return reader.Read(node, value);
             }
          }
       }
    }
    return reader.Read(node);
 }