/// <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)); } }
private static void AddError(string identifier, ODataUrlValidationContext validationContext) { validationContext.Messages.Add(new ODataUrlValidationMessage(ODataUrlValidationMessageCodes.MissingSelect, Strings.ODataUrlValidationError_SelectRequired(identifier), Severity.Warning)); }
/// <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); }