/// <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); }