/// <summary> /// This <c>readConstructor</c> method performs deserialization of /// the XML schema class type by traversing the contacts and creating /// them using details from the provided XML element. Because this will /// convert a non-primitive value it delegates to other converters to /// perform deserialization of lists and primitives. /// <p> /// This takes the approach of reading the XML elements and attributes /// before instantiating the object. Instantiation is performed using a /// declared constructor. The parameters for the constructor are taken /// from the deserialized objects. /// </summary> /// <param name="node"> /// the XML element contact values are deserialized from /// </param> /// <param name="schema"> /// this is the schema for the class to be deserialized /// </param> /// <param name="value"> /// this is the value used for the deserialization /// </param> /// <returns> /// this returns the fully deserialized object graph /// </returns> public Object ReadConstructor(InputNode node, Schema schema, Instance value) { Creator creator = schema.getCreator(); Object source = creator.GetInstance(criteria); if(value != null) { value.setInstance(source); criteria.Commit(source); } return source; }
/// <summary> /// This <c>read</c> method performs deserialization of the XML /// schema class type by traversing the contacts and instantiating them /// using details from the provided XML element. Because this will /// convert a non-primitive value it delegates to other converters to /// perform deserialization of lists and primitives. /// <p> /// If any of the required contacts are not present within the provided /// XML element this will terminate deserialization and throw an /// exception. The annotation missing is reported in the exception. /// </summary> /// <param name="node"> /// the XML element contact values are deserialized from /// </param> /// <param name="schema"> /// this is the schema for the class to be deserialized /// </param> /// <param name="value"> /// this is the value used for the deserialization /// </param> /// <returns> /// this returns the fully deserialized object graph /// </returns> public Object Read(InputNode node, Schema schema, Instance value) { Creator creator = schema.getCreator(); if(creator.isDefault()) { return ReadDefault(node, schema, value); } else { Read(node, null, schema); } return ReadConstructor(node, schema, value); }