private bool CheckForDeprecationOnType()

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