private OdcmProperty PropertyFromPathExpression()

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;
        }