コード例 #1
0
        /// <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);
        }
コード例 #2
0
 public CsdlSemanticsTypeDefinitionDefinition(CsdlSemanticsSchema context, CsdlTypeDefinition typeDefinition)
     : base(typeDefinition)
 {
     this.context        = context;
     this.typeDefinition = typeDefinition;
     this.fullName       = EdmUtil.GetFullNameForSchemaElement(this.context?.Namespace, this.typeDefinition?.Name);
 }
コード例 #3
0
        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());
        }
コード例 #4
0
        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");
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #8
0
 public CsdlSemanticsTypeDefinitionDefinition(CsdlSemanticsSchema context, CsdlTypeDefinition typeDefinition)
     : base(typeDefinition)
 {
     this.context        = context;
     this.typeDefinition = typeDefinition;
 }
コード例 #9
0
        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);
        }