in src/Readers/Vipr.Reader.OData.v4/Capabilities/CapabilityAnnotationParser.cs [234:266]
private OdcmProperty PropertyFromPathExpression(IEdmPathExpression pathExpression, OdcmObject odcmObject)
{
OdcmClass odcmClass = null;
if (odcmObject is OdcmProperty)
{
var odcmProperty = odcmObject as OdcmProperty;
odcmClass = odcmProperty.Type as OdcmClass;
}
else
{
odcmClass = odcmObject as OdcmClass;
}
var pathBuilder = new StringBuilder();
foreach (var path in pathExpression.PathSegments)
{
pathBuilder.AppendFormat("{0}.", path);
}
pathBuilder.Remove(pathBuilder.Length - 1, 1);
OdcmProperty navProperty;
if (!odcmClass.TryFindProperty(pathBuilder.ToString(), out navProperty))
{
throw new InvalidOperationException(
string.Format(
"Unable to find property {0} in class {1}. This can be caused by malformed Capability Annotation on an EntitySet",
pathBuilder.ToString(), odcmClass.FullName));
}
return navProperty;
}