in src/Readers/Vipr.Reader.OData.v4/OdcmReader.cs [860:929]
private bool CheckForDeprecationOnType(OdcmObject odcmObject, IEdmVocabularyAnnotation revisionsAnnotation)
{
if (revisionsAnnotation != null)
{
IEdmCollectionExpression collectionExpression = revisionsAnnotation.Value as IEdmCollectionExpression;
if (collectionExpression != null)
{
foreach (IEdmExpression versionRecord in collectionExpression.Elements)
{
bool isDeprecated = false;
string message = string.Empty;
string version = string.Empty;
IEdmRecordExpression record = versionRecord as IEdmRecordExpression;
if (record != null)
{
foreach (IEdmPropertyConstructor property in record.Properties)
{
switch (property.Name.ToLower())
{
case "kind":
IEdmEnumMemberExpression enumValue = property.Value as IEdmEnumMemberExpression;
if (enumValue != null)
{
if (string.Equals(enumValue.EnumMembers.FirstOrDefault().Name, "deprecated", StringComparison.OrdinalIgnoreCase))
{
isDeprecated = true;
}
else
{
continue;
}
}
break;
case "description":
IEdmStringConstantExpression descriptionValue = property.Value as IEdmStringConstantExpression;
if (descriptionValue != null)
{
message = descriptionValue.Value;
}
break;
case "version":
IEdmStringConstantExpression versionValue = property.Value as IEdmStringConstantExpression;
if (versionValue != null)
{
version = versionValue.Value;
}
break;
default:
break;
}
}
if (isDeprecated)
{
odcmObject.Deprecation = new OdcmDeprecation
{
Description = message,
Version = version
};
return true;
}
}
}
}
}
return false;
}