in JSLib/src/odata-atom.js [548:593]
var lookupPropertyType = function (metadata, owningType, path) {
/// <summary>Looks up the type of a property given its path in an entity type.</summary>
/// <param name="metadata">Metadata in which to search for base and complex types.</param>
/// <param name="owningType">Type to which property belongs.</param>
/// <param name="path" type="String" mayBeNull="false">Property path to look at.</param>
/// <returns type="String">The name of the property type; possibly null.</returns>
var parts = path.split("/");
var i, len;
while (owningType) {
// Keep track of the type being traversed, necessary for complex types.
var traversedType = owningType;
for (i = 0, len = parts.length; i < len; i++) {
// Traverse down the structure as necessary.
var properties = traversedType.property;
if (!properties) {
break;
}
// Find the property by scanning the property list (might be worth pre-processing).
var propertyFound = lookupProperty(properties, parts[i]);
if (!propertyFound) {
break;
}
var propertyType = propertyFound.type;
// We could in theory still be missing types, but that would
// be caused by a malformed path.
if (!propertyType || isPrimitiveEdmType(propertyType)) {
return propertyType || null;
}
traversedType = lookupComplexType(propertyType, metadata);
if (!traversedType) {
return null;
}
}
// Traverse up the inheritance chain.
owningType = lookupEntityType(owningType.baseType, metadata);
}
return null;
};