/// <summary> /// Attach DefaultPrimitiveValueConverter to the model if the name and the underlying type of the given type definition /// matches the default unsigned int type definitions defined in <see cref="PrimitiveValueConverterConstants"/>. /// </summary> /// <param name="typeDefinition">The type definition to be added to the schema.</param> /// <param name="edmTypeDefinition">The EDM type definition to be added to the model.</param> private void AttachDefaultPrimitiveValueConverter(CsdlTypeDefinition typeDefinition, IEdmTypeDefinition edmTypeDefinition) { Debug.Assert(typeDefinition != null, "typeDefinition != null"); string defaultUnderlyingType; switch (typeDefinition.Name) { case PrimitiveValueConverterConstants.UInt16TypeName: defaultUnderlyingType = PrimitiveValueConverterConstants.DefaultUInt16UnderlyingType; break; case PrimitiveValueConverterConstants.UInt32TypeName: defaultUnderlyingType = PrimitiveValueConverterConstants.DefaultUInt32UnderlyingType; break; case PrimitiveValueConverterConstants.UInt64TypeName: defaultUnderlyingType = PrimitiveValueConverterConstants.DefaultUInt64UnderlyingType; break; default: // Not unsigned int type definition. return; } if (String.CompareOrdinal(defaultUnderlyingType, typeDefinition.UnderlyingTypeName) != 0) { // Not default underlying type for unsigned int. return; } this.Model.SetPrimitiveValueConverter(edmTypeDefinition, DefaultPrimitiveValueConverter.Instance); }
public CsdlSemanticsTypeDefinitionDefinition(CsdlSemanticsSchema context, CsdlTypeDefinition typeDefinition) : base(typeDefinition) { this.context = context; this.typeDefinition = typeDefinition; this.fullName = EdmUtil.GetFullNameForSchemaElement(this.context?.Namespace, this.typeDefinition?.Name); }
public void ParseCsdlTypeDefinitionWithMembersWorksAsExpected() { string json = @"""FilterExpressionType"": { ""$Kind"": ""TypeDefinition"", ""$UnderlyingType"": ""Edm.String"", ""@Validation.AllowedValues"": [ { ""Value"": ""SingleValue"" }, { ""Value"": ""MultiValue"" } ] }"; CsdlTypeDefinition typeDefinition = ParseCsdlSchemaElement(json, SchemaJsonParser.ParseCsdlTypeDefinition); Assert.NotNull(typeDefinition); Assert.Equal("FilterExpressionType", typeDefinition.Name); Assert.Equal("Edm.String", typeDefinition.UnderlyingTypeName); CsdlAnnotation annotation = Assert.Single(typeDefinition.VocabularyAnnotations); Assert.Equal("Validation.AllowedValues", annotation.Term); CsdlCollectionExpression collectionExp = Assert.IsType <CsdlCollectionExpression>(annotation.Expression); Assert.Equal(2, collectionExp.ElementValues.Count()); }
public void TestCsdlTypeDefinitionConstructor() { var loc = new CsdlLocation(17, 4); var type = new CsdlTypeDefinition("Length", "Edm.Int32", loc); type.Location.Should().Be(loc); type.Name.Should().Be("Length"); type.UnderlyingTypeName.Should().Be("Edm.Int32"); }
public void TestCsdlTypeDefinitionConstructor() { var loc = new CsdlLocation(17, 4); var type = new CsdlTypeDefinition("Length", "Edm.Int32", loc); Assert.Equal(loc, type.Location); Assert.Equal("Length", type.Name); Assert.Equal("Edm.Int32", type.UnderlyingTypeName); }
public void CsdlSemanticsTypeDefinitionDefinitionUnitTest() { CsdlTypeDefinition typeDefinition = new CsdlTypeDefinition("Length", "Edm.String", new CsdlLocation(5, 6)); CsdlSemanticsTypeDefinitionDefinition typeDefinitionDefinition = new CsdlSemanticsTypeDefinitionDefinition(null, typeDefinition); ((IEdmTypeDefinition)typeDefinitionDefinition).UnderlyingType.PrimitiveKind.Should().Be(EdmPrimitiveTypeKind.String); ((IEdmSchemaElement)typeDefinitionDefinition).SchemaElementKind.Should().Be(EdmSchemaElementKind.TypeDefinition); ((IEdmNamedElement)typeDefinitionDefinition).Name.Should().Be("Length"); typeDefinitionDefinition.TypeKind.Should().Be(EdmTypeKind.TypeDefinition); typeDefinitionDefinition.Element.Should().Be(typeDefinition); }
public void CsdlSemanticsTypeDefinitionDefinitionUnitTest() { CsdlTypeDefinition typeDefinition = new CsdlTypeDefinition("Length", "Edm.String", new CsdlLocation(5, 6)); CsdlSemanticsTypeDefinitionDefinition typeDefinitionDefinition = new CsdlSemanticsTypeDefinitionDefinition(null, typeDefinition); Assert.Equal(EdmPrimitiveTypeKind.String, ((IEdmTypeDefinition)typeDefinitionDefinition).UnderlyingType.PrimitiveKind); Assert.Equal(EdmSchemaElementKind.TypeDefinition, ((IEdmSchemaElement)typeDefinitionDefinition).SchemaElementKind); Assert.Equal("Length", ((IEdmNamedElement)typeDefinitionDefinition).Name); Assert.Equal(EdmTypeKind.TypeDefinition, typeDefinitionDefinition.TypeKind); Assert.Equal(typeDefinition, typeDefinitionDefinition.Element); }
public CsdlSemanticsTypeDefinitionDefinition(CsdlSemanticsSchema context, CsdlTypeDefinition typeDefinition) : base(typeDefinition) { this.context = context; this.typeDefinition = typeDefinition; }
internal static CsdlSchema Schema( string namespaceName, string alias = null, Version version = null, CsdlStructuredType[] csdlStructuredTypes = default(CsdlStructuredType[]), CsdlEnumType[] csdlEnumTypes = default(CsdlEnumType[]), CsdlOperation[] csdlOperations = default(CsdlOperation[]), CsdlTerm[] csdlTerms = default(CsdlTerm[]), CsdlEntityContainer[] csdlEntityContainers = default(CsdlEntityContainer[]), CsdlAnnotations[] csdlAnnotations = default(CsdlAnnotations[]), CsdlTypeDefinition[] csdlTypeDefinitions = default(CsdlTypeDefinition[]), CsdlLocation location = null) { if (csdlStructuredTypes == null) { csdlStructuredTypes = new CsdlStructuredType[] { }; } if (csdlEnumTypes == null) { csdlEnumTypes = new CsdlEnumType[] { }; } if (csdlOperations == null) { csdlOperations = new CsdlOperation[] { }; } if (csdlTerms == null) { csdlTerms = new CsdlTerm[] { }; } if (csdlEntityContainers == null) { csdlEntityContainers = new CsdlEntityContainer[] { }; } if (csdlAnnotations == null) { csdlAnnotations = new CsdlAnnotations[] { }; } if (csdlTypeDefinitions == null) { csdlTypeDefinitions = new CsdlTypeDefinition[] { }; } var csdlSchema = new CsdlSchema( namespaceName, alias, version, csdlStructuredTypes, csdlEnumTypes, csdlOperations, csdlTerms, csdlEntityContainers, csdlAnnotations, csdlTypeDefinitions, location /*location*/); return(csdlSchema); }