/// <summary>
        /// Validate a model element (and its type) to see if it has been marked as deprecated
        /// </summary>
        /// <param name="element">The element being validated.</param>
        /// <param name="elementType">The type of element being validated.</param>
        /// <param name="context">The ODataUrlValidationContext providing validation context.</param>
        private static void Validate(IEdmNamedElement element, IEdmType elementType, ODataUrlValidationContext context)
        {
            string message;
            string version;
            Date?  date;
            Date?  removalDate;

            if (IsDeprecated(context.Model, element, out message, out version, out date, out removalDate))
            {
                context.Messages.Add(CreateUrlValidationMessage(element.Name, message, version, date, removalDate));
            }
        }
Exemple #2
0
 private static void AddError(string identifier, ODataUrlValidationContext validationContext)
 {
     validationContext.Messages.Add(new ODataUrlValidationMessage(ODataUrlValidationMessageCodes.MissingSelect, Strings.ODataUrlValidationError_SelectRequired(identifier), Severity.Warning));
 }
Exemple #3
0
        /// <summary>
        /// Walk through an ODataUrl checking to see if all included structured properties/expands have a $select.
        /// </summary>
        /// <param name="identifier">The name of the segment being validated</param>
        /// <param name="selectExpand">The <see cref="SelectExpandClause"/>describing the selected/expanded properties of the element.</param>
        /// <param name="validationContext">The validation context used for recording errors.</param>
        private static void CheckAllSelected(string identifier, SelectExpandClause selectExpand, ODataUrlValidationContext validationContext)
        {
            if (selectExpand == null)
            {
                AddError(identifier, validationContext);
                return;
            }

            if (selectExpand.AllSelected)
            {
                AddError(identifier, validationContext);
            }

            foreach (SelectItem selectItem in selectExpand.SelectedItems)
            {
                if (selectItem is WildcardSelectItem)
                {
                    AddError(identifier, validationContext);
                }

                PathSelectItem pathSelectItem;
                ExpandedNavigationSelectItem expandItem;
                if ((pathSelectItem = selectItem as PathSelectItem) != null)
                {
                    ODataPathSegment lastSegment      = pathSelectItem.SelectedPath.LastSegment;
                    bool             isStructuredType = lastSegment.EdmType.AsElementType() is IEdmStructuredType;
                    if (isStructuredType)
                    {
                        CheckAllSelected(lastSegment.Identifier, pathSelectItem.SelectAndExpand, validationContext);
                    }
                }
                else if ((expandItem = selectItem as ExpandedNavigationSelectItem) != null)
                {
                    CheckAllSelected(expandItem.PathToNavigationProperty.LastSegment.Identifier, expandItem.SelectAndExpand, validationContext);
                }
            }
        }
 /// <summary>
 /// Creates an instance of a PathSegmentValidator
 /// </summary>
 /// <param name="context">The validation context used by the path segment validator.</param>
 public PathSegmentValidator(ODataUrlValidationContext context)
 {
     this.ValidateItem       = (item) => context.UrlValidator.ValidateItem(item, context);
     this.ValidateExpression = (node) => context.ExpressionValidator.ValidateNode(node);
 }