in JSLib/src/odata-json-light.js [715:743]
var jsonLightComputeUrisIfMissing = function (data, entryInfo, actualType, serviceURI, entityModel, baseTypeModel) {
/// <summary>Compute the URI according to OData conventions if it doesn't exist</summary>
/// <param name="data" type="Object">JSON light entry.</param>
/// <param name="entryInfo" type="Object">Information about the entry includes type, key, entitySet and entityContainerName.</param>
/// <param name="actualType" type="String">Type of the entry</param>
/// <param name="serviceURI" type="String">Base URI the service.</param>
/// <param name="entityModel" type="Object">Object describing an OData conceptual schema of the entry.</param>
/// <param name="baseTypeModel" type="Object" optional="true">Object escribing an OData conceptual schema of the baseType if it exists.</param>
var lastIdSegment = data[jsonLightAnnotations.id] || data[jsonLightAnnotations.read] || data[jsonLightAnnotations.edit] || entryInfo.entitySet.name + entryInfo.key;
data[jsonLightAnnotations.id] = serviceURI + lastIdSegment;
if (!data[jsonLightAnnotations.edit]) {
data[jsonLightAnnotations.edit] = entryInfo.entitySet.name + entryInfo.key;
if (entryInfo.entitySet.entityType != actualType) {
data[jsonLightAnnotations.edit] += "/" + actualType;
}
}
data[jsonLightAnnotations.read] = data[jsonLightAnnotations.read] || data[jsonLightAnnotations.edit];
if (!data[jsonLightAnnotations.etag]) {
var etag = jsonLightComputeETag(data, entityModel, baseTypeModel);
if (!!etag) {
data[jsonLightAnnotations.etag] = etag;
}
}
jsonLightComputeStreamLinks(data, entityModel, baseTypeModel);
jsonLightComputeNavigationAndAssociationProperties(data, entityModel, baseTypeModel);
jsonLightComputeFunctionImports(data, entryInfo);
};