in src/Microsoft.OpenApi.OData.Reader/Edm/ODataPath.cs [286:341]
private ODataPathKind CalcPathType()
{
if (Segments.Count == 1 && Segments.First().Kind == ODataSegmentKind.Metadata)
{
return ODataPathKind.Metadata;
}
else if (Segments.Last().Kind == ODataSegmentKind.DollarCount)
{
return ODataPathKind.DollarCount;
}
else if (Segments.Last().Kind == ODataSegmentKind.TypeCast)
{
return ODataPathKind.TypeCast;
}
else if (Segments.Last().Kind == ODataSegmentKind.ComplexProperty)
{
return ODataPathKind.ComplexProperty;
}
else if (Segments.Any(c => c.Kind == ODataSegmentKind.StreamProperty || c.Kind == ODataSegmentKind.StreamContent))
{
return ODataPathKind.MediaEntity;
}
else if (Segments.Any(c => c.Kind == ODataSegmentKind.Ref))
{
return ODataPathKind.Ref;
}
else if (Segments.Any(c => c.Kind == ODataSegmentKind.OperationImport))
{
return ODataPathKind.OperationImport;
}
else if (Segments.Any(c => c.Kind == ODataSegmentKind.Operation))
{
return ODataPathKind.Operation;
}
else if (Segments.Any(c => c.Kind == ODataSegmentKind.NavigationProperty))
{
return ODataPathKind.NavigationProperty;
}
else if (Segments.Count == 1 && Segments[0] is ODataNavigationSourceSegment segment)
{
if (segment.NavigationSource is IEdmSingleton)
{
return ODataPathKind.Singleton;
}
else
{
return ODataPathKind.EntitySet;
}
}
else if (Segments.Count == 2 && Segments.Last().Kind == ODataSegmentKind.Key)
{
return ODataPathKind.Entity;
}
return ODataPathKind.Unknown;
}