/// <summary> /// Determines whether the specified function is UrlEscape function or not. /// </summary> /// <param name="model">The Edm model.</param> /// <param name="function">The specified function</param> /// <returns><c>true</c> if the specified operation is UrlEscape function; otherwise, <c>false</c>.</returns> public static bool IsUrlEscapeFunction(this IEdmModel model, IEdmFunction function) { Utils.CheckArgumentNull(model, nameof(model)); Utils.CheckArgumentNull(function, nameof(function)); IEdmVocabularyAnnotation annotation = model.FindVocabularyAnnotations <IEdmVocabularyAnnotation>(function, CommunityVocabularyModel.UrlEscapeFunctionTerm).FirstOrDefault(); if (annotation != null) { if (annotation.Value == null) { // If the annotation is applied but a value is not specified then the value is assumed to be true. return(true); } IEdmBooleanConstantExpression tagConstant = annotation.Value as IEdmBooleanConstantExpression; if (tagConstant != null) { return(tagConstant.Value); } } return(false); }
private static bool TryAssertBooleanConstantAsType(IEdmBooleanConstantExpression expression, IEdmTypeReference type, out IEnumerable <EdmError> discoveredErrors) { if (!type.IsBoolean()) { discoveredErrors = new EdmError[] { new EdmError(expression.Location(), EdmErrorCode.ExpressionPrimitiveKindNotValidForAssertedType, Edm.Strings.EdmModel_Validator_Semantic_ExpressionPrimitiveKindNotValidForAssertedType) }; return(false); } discoveredErrors = Enumerable.Empty <EdmError>(); return(true); }
protected override bool Initialize(IEdmVocabularyAnnotation annotation) { if (annotation == null || annotation.Value == null || annotation.Value.ExpressionKind != EdmExpressionKind.BooleanConstant) { return(false); } // supported IEdmBooleanConstantExpression boolConstant = (IEdmBooleanConstantExpression)annotation.Value; if (boolConstant != null) { Supported = boolConstant.Value; } return(true); }
/// <summary> /// Get the boolean value from the record using the given property name. /// </summary> /// <param name="record">The record expression.</param> /// <param name="propertyName">The property name.</param> /// <returns>The boolean value or null.</returns> public static bool?GetBoolean(this IEdmRecordExpression record, string propertyName) { Utils.CheckArgumentNull(record, nameof(record)); Utils.CheckArgumentNull(propertyName, nameof(propertyName)); if (record.Properties != null) { IEdmPropertyConstructor property = record.Properties.FirstOrDefault(e => e.Name == propertyName); if (property != null) { IEdmBooleanConstantExpression value = property.Value as IEdmBooleanConstantExpression; if (value != null) { return(value.Value); } } } return(null); }
protected override void ProcessBooleanConstantExpression(IEdmBooleanConstantExpression expression) { this.schemaWriter.WriteBooleanConstantExpressionElement(expression); }
internal void WriteBooleanConstantExpressionElement(IEdmBooleanConstantExpression expression) { this.xmlWriter.WriteStartElement(CsdlConstants.Element_Bool); this.xmlWriter.WriteString(EdmValueWriter.BooleanAsXml(expression.Value)); this.WriteEndElement(); }
private static bool TryCastBooleanConstantAsType(IEdmBooleanConstantExpression expression, IEdmTypeReference type, out IEnumerable<EdmError> discoveredErrors) { if (!type.IsBoolean()) { discoveredErrors = new EdmError[] { new EdmError(expression.Location(), EdmErrorCode.ExpressionPrimitiveKindNotValidForAssertedType, Edm.Strings.EdmModel_Validator_Semantic_ExpressionPrimitiveKindNotValidForAssertedType) }; return false; } discoveredErrors = Enumerable.Empty<EdmError>(); return true; }
protected virtual void ProcessBooleanConstantExpression(IEdmBooleanConstantExpression expression) { this.ProcessExpression(expression); }
internal abstract void WriteBooleanConstantExpressionElement(IEdmBooleanConstantExpression expression);
/// <summary> /// Convert an <see cref="IEdmExpression"/> to a <see cref="ODataValue"/> /// </summary> /// <param name="expression">The <see cref="IEdmExpression"/>.</param> /// <returns>The null or <see cref="ODataValue"/>.</returns> public static ODataValue Convert(this IEdmExpression expression) { if (expression == null) { return(null); } switch (expression.ExpressionKind) { case EdmExpressionKind.BinaryConstant: IEdmBinaryConstantExpression binaryConstant = (IEdmBinaryConstantExpression)expression; return(new ODataPrimitiveValue(binaryConstant.Value) { TypeReference = EdmCoreModel.Instance.GetBinary(false) }); case EdmExpressionKind.BooleanConstant: IEdmBooleanConstantExpression booleanConstant = (IEdmBooleanConstantExpression)expression; return(new ODataPrimitiveValue(booleanConstant.Value) { TypeReference = EdmCoreModel.Instance.GetBoolean(false) }); case EdmExpressionKind.DateTimeOffsetConstant: IEdmDateTimeOffsetConstantExpression dateTimeOffsetConstant = (IEdmDateTimeOffsetConstantExpression)expression; return(new ODataPrimitiveValue(dateTimeOffsetConstant.Value) { TypeReference = EdmCoreModel.Instance.GetDateTimeOffset(false) }); case EdmExpressionKind.DecimalConstant: IEdmDecimalConstantExpression decimalConstant = (IEdmDecimalConstantExpression)expression; return(new ODataPrimitiveValue(decimalConstant.Value) { TypeReference = EdmCoreModel.Instance.GetDecimal(false) }); case EdmExpressionKind.FloatingConstant: IEdmFloatingConstantExpression floatConstant = (IEdmFloatingConstantExpression)expression; return(new ODataPrimitiveValue(floatConstant.Value) { TypeReference = EdmCoreModel.Instance.GetDouble(false) }); case EdmExpressionKind.GuidConstant: IEdmGuidConstantExpression guidConstant = (IEdmGuidConstantExpression)expression; return(new ODataPrimitiveValue(guidConstant.Value) { TypeReference = EdmCoreModel.Instance.GetGuid(false) }); case EdmExpressionKind.IntegerConstant: IEdmIntegerConstantExpression integerConstant = (IEdmIntegerConstantExpression)expression; return(new ODataPrimitiveValue(integerConstant.Value) { TypeReference = EdmCoreModel.Instance.GetInt64(false) }); case EdmExpressionKind.StringConstant: IEdmStringConstantExpression stringConstant = (IEdmStringConstantExpression)expression; return(new ODataPrimitiveValue(stringConstant.Value) { TypeReference = EdmCoreModel.Instance.GetString(false) }); case EdmExpressionKind.DurationConstant: IEdmDurationConstantExpression durationConstant = (IEdmDurationConstantExpression)expression; return(new ODataPrimitiveValue(durationConstant.Value) { TypeReference = EdmCoreModel.Instance.GetDuration(false) }); case EdmExpressionKind.TimeOfDayConstant: IEdmTimeOfDayConstantExpression timeOfDayConstant = (IEdmTimeOfDayConstantExpression)expression; return(new ODataPrimitiveValue(timeOfDayConstant.Value) { TypeReference = EdmCoreModel.Instance.GetTimeOfDay(false) }); case EdmExpressionKind.DateConstant: IEdmDateConstantExpression dateConstant = (IEdmDateConstantExpression)expression; return(new ODataPrimitiveValue(dateConstant.Value) { TypeReference = EdmCoreModel.Instance.GetDate(false) }); case EdmExpressionKind.Record: IEdmRecordExpression recordExpression = (IEdmRecordExpression)expression; return(new ODataResourceValue { TypeReference = recordExpression.DeclaredType, Properties = recordExpression.Properties.ToDictionary(p => p.Name, p => p.Value.Convert()) }); case EdmExpressionKind.Collection: IEdmCollectionExpression collectionExpression = (IEdmCollectionExpression)expression; ODataCollectValue collectionValue = new ODataCollectValue { TypeReference = collectionExpression.DeclaredType }; collectionValue.Elements = collectionExpression.Elements.Select(e => e.Convert()).ToList(); return(collectionValue); case EdmExpressionKind.Path: case EdmExpressionKind.PropertyPath: case EdmExpressionKind.NavigationPropertyPath: case EdmExpressionKind.EnumMember: default: throw new NotSupportedException(String.Format(SRResource.NotSupportedEdmExpressionKind, expression.ExpressionKind)); } }