var atomNewODataEntry = function()

in JSLib/src/odata-atom.js [1234:1294]


    var atomNewODataEntry = function (dom, data, model) {
        /// <summary>Creates a new DOM element for an Atom entry.</summary>
        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
        /// <param name="data" type="Object">Entry object in the library's internal representation.</param>
        /// <param name="model" type="Object" optional="true">Object describing an OData conceptual schema.</param>
        /// <returns type="Object">
        ///     Object containing the new DOM element for the Atom entry and the required data service version for it.
        /// </returns>

        var payloadMetadata = data.__metadata || {};
        var propertiesMetadata = payloadMetadata.properties || {};

        var etag = payloadMetadata.etag;
        var uri = payloadMetadata.uri;
        var typeName = payloadMetadata.type;
        var entityType = lookupEntityType(typeName, model);

        var properties = xmlNewODataMetaElement(dom, "properties");
        var entry = atomNewElement(dom, "entry", [
            atomNewElement(dom, "author",
                atomNewElement(dom, "name")
            ),
            etag && xmlNewODataMetaAttribute(dom, "etag", etag),
            uri && atomNewElement(dom, "id", uri),
            typeName && atomNewElement(dom, "category", [
                atomNewAttribute(dom, "term", typeName),
                atomNewAttribute(dom, "scheme", odataScheme)
            ]),
        // TODO: MLE support goes here.
            atomNewElement(dom, "content", [
                atomNewAttribute(dom, "type", "application/xml"),
                properties
            ])
        ]);

        var dataServiceVersion = "1.0";
        for (var name in data) {
            if (name !== "__metadata") {
                var entryDataItemMetadata = propertiesMetadata[name] || {};
                var entryDataItemModel = entityType && (
                    lookupProperty(entityType.property, name) ||
                    lookupProperty(entityType.navigationProperty, name));

                var entryDataItem = atomNewODataEntryDataItem(dom, name, data[name], entryDataItemMetadata, entryDataItemModel, model);
                if (entryDataItem) {
                    var entryElement = entryDataItem.element;
                    var entryElementParent = (xmlNamespaceURI(entryElement) === atomXmlNs) ? entry : properties;

                    xmlAppendChild(entryElementParent, entryElement);
                    dataServiceVersion = maxVersion(dataServiceVersion, entryDataItem.dsv);
                }
            }
        }

        atomApplyAllFeedCustomizations(entityType, model, function (customization) {
            var customizationDsv = atomEntryCustomization(dom, entry, properties, customization);
            dataServiceVersion = maxVersion(dataServiceVersion, customizationDsv);
        });

        return xmlNewODataElementInfo(entry, dataServiceVersion);
    };