private string ValidateQualifiedName(string qualifiedName)
 {
     if (!EdmUtil.IsQualifiedName(qualifiedName))
     {
         base.ReportError(this.currentElement.Location, EdmErrorCode.InvalidQualifiedName, Strings.CsdlParser_InvalidQualifiedName(qualifiedName));
     }
     return(qualifiedName);
 }
        private string ValidateTypeName(string name)
        {
            char[] chrArray = new char[2];
            chrArray[0] = '(';
            chrArray[1] = ')';
            string[] strArrays = name.Split(chrArray);
            string   str       = strArrays[0];
            string   str1      = str;
            string   str2      = str1;

            if (str1 != null)
            {
                if (str2 == "Collection")
                {
                    if (strArrays.Count <string>() != 1)
                    {
                        str = strArrays[1];
                    }
                    else
                    {
                        return(name);
                    }
                }
                else
                {
                    if (str2 == "Ref")
                    {
                        if (strArrays.Count <string>() != 1)
                        {
                            str = strArrays[1];
                        }
                        else
                        {
                            base.ReportError(this.currentElement.Location, EdmErrorCode.InvalidTypeName, Strings.CsdlParser_InvalidTypeName(name));
                            return(name);
                        }
                    }
                }
            }
            if (EdmUtil.IsQualifiedName(str) || EdmCoreModel.Instance.GetPrimitiveTypeKind(str) != EdmPrimitiveTypeKind.None)
            {
                return(name);
            }
            else
            {
                base.ReportError(this.currentElement.Location, EdmErrorCode.InvalidTypeName, Strings.CsdlParser_InvalidTypeName(name));
                return(name);
            }
        }
        private string ValidateTypeName(string name)
        {
            string[] typeInformation = name.Split(new char[] { '(', ')' });
            string   typeName        = typeInformation[0];

            // For inline types, we need to check that the name contained inside is a valid type name
            switch (typeName)
            {
            case CsdlConstants.Value_Collection:
                // 'Collection' on its own is a valid type string.
                if (typeInformation.Count() == 1)
                {
                    return(name);
                }
                else
                {
                    typeName = typeInformation[1];
                }

                break;

            case CsdlConstants.Value_Ref:
                // 'Ref' on its own is not a valid type string.
                if (typeInformation.Count() == 1)
                {
                    this.ReportError(this.currentElement.Location, EdmErrorCode.InvalidTypeName, Edm.Strings.CsdlParser_InvalidTypeName(name));
                    return(name);
                }
                else
                {
                    typeName = typeInformation[1];
                }

                break;
            }

            if (EdmUtil.IsQualifiedName(typeName) || Microsoft.OData.Edm.EdmCoreModel.Instance.GetPrimitiveTypeKind(typeName) != EdmPrimitiveTypeKind.None)
            {
                return(name);
            }
            else
            {
                this.ReportError(this.currentElement.Location, EdmErrorCode.InvalidTypeName, Edm.Strings.CsdlParser_InvalidTypeName(name));
                return(name);
            }
        }
示例#4
0
        public void IsQualifiedName_Test(string name, bool expected)
        {
            var actual = EdmUtil.IsQualifiedName(name);

            Assert.Equal(expected, actual);
        }
 static SerializationValidator()
 {
     SerializationValidator.TypeReferenceTargetMustHaveValidName = new ValidationRule <IEdmTypeReference>((ValidationContext context, IEdmTypeReference typeReference) => {
         IEdmSchemaType definition = typeReference.Definition as IEdmSchemaType;
         if (definition != null && !EdmUtil.IsQualifiedName(definition.FullName()))
         {
             context.AddError(typeReference.Location(), EdmErrorCode.ReferencedTypeMustHaveValidName, Strings.Serializer_ReferencedTypeMustHaveValidName(definition.FullName()));
         }
     }
                                                                                                          );
     SerializationValidator.EntityReferenceTargetMustHaveValidName = new ValidationRule <IEdmEntityReferenceType>((ValidationContext context, IEdmEntityReferenceType entityReference) => {
         if (!EdmUtil.IsQualifiedName(entityReference.EntityType.FullName()))
         {
             context.AddError(entityReference.Location(), EdmErrorCode.ReferencedTypeMustHaveValidName, Strings.Serializer_ReferencedTypeMustHaveValidName(entityReference.EntityType.FullName()));
         }
     }
                                                                                                                  );
     SerializationValidator.EntitySetTypeMustHaveValidName = new ValidationRule <IEdmEntitySet>((ValidationContext context, IEdmEntitySet set) => {
         if (!EdmUtil.IsQualifiedName(set.ElementType.FullName()))
         {
             context.AddError(set.Location(), EdmErrorCode.ReferencedTypeMustHaveValidName, Strings.Serializer_ReferencedTypeMustHaveValidName(set.ElementType.FullName()));
         }
     }
                                                                                                );
     SerializationValidator.StructuredTypeBaseTypeMustHaveValidName = new ValidationRule <IEdmStructuredType>((ValidationContext context, IEdmStructuredType type) => {
         IEdmSchemaType baseType = type.BaseType as IEdmSchemaType;
         if (baseType != null && !EdmUtil.IsQualifiedName(baseType.FullName()))
         {
             context.AddError(type.Location(), EdmErrorCode.ReferencedTypeMustHaveValidName, Strings.Serializer_ReferencedTypeMustHaveValidName(baseType.FullName()));
         }
     }
                                                                                                              );
     SerializationValidator.NavigationPropertyVerifyAssociationName = new ValidationRule <IEdmNavigationProperty>((ValidationContext context, IEdmNavigationProperty property) => {
         if (!EdmUtil.IsQualifiedName(context.Model.GetAssociationFullName(property)))
         {
             context.AddError(property.Location(), EdmErrorCode.ReferencedTypeMustHaveValidName, Strings.Serializer_ReferencedTypeMustHaveValidName(context.Model.GetAssociationFullName(property)));
         }
     }
                                                                                                                  );
     SerializationValidator.VocabularyAnnotationOutOfLineMustHaveValidTargetName = new ValidationRule <IEdmVocabularyAnnotation>((ValidationContext context, IEdmVocabularyAnnotation annotation) => {
         bool hasValue;
         EdmVocabularyAnnotationSerializationLocation?serializationLocation = annotation.GetSerializationLocation(context.Model);
         if (serializationLocation.GetValueOrDefault() != EdmVocabularyAnnotationSerializationLocation.OutOfLine)
         {
             hasValue = false;
         }
         else
         {
             hasValue = serializationLocation.HasValue;
         }
         if (hasValue && !EdmUtil.IsQualifiedName(annotation.TargetString()))
         {
             context.AddError(annotation.Location(), EdmErrorCode.InvalidName, Strings.Serializer_OutOfLineAnnotationTargetMustHaveValidName(EdmUtil.FullyQualifiedName(annotation.Target)));
         }
     }
                                                                                                                                 );
     SerializationValidator.VocabularyAnnotationMustHaveValidTermName = new ValidationRule <IEdmVocabularyAnnotation>((ValidationContext context, IEdmVocabularyAnnotation annotation) => {
         if (!EdmUtil.IsQualifiedName(annotation.Term.FullName()))
         {
             context.AddError(annotation.Location(), EdmErrorCode.InvalidName, Strings.Serializer_OutOfLineAnnotationTargetMustHaveValidName(annotation.Term.FullName()));
         }
     }
                                                                                                                      );
     ValidationRule[] typeReferenceTargetMustHaveValidName = new ValidationRule[18];
     typeReferenceTargetMustHaveValidName[0]     = SerializationValidator.TypeReferenceTargetMustHaveValidName;
     typeReferenceTargetMustHaveValidName[1]     = SerializationValidator.EntityReferenceTargetMustHaveValidName;
     typeReferenceTargetMustHaveValidName[2]     = SerializationValidator.EntitySetTypeMustHaveValidName;
     typeReferenceTargetMustHaveValidName[3]     = SerializationValidator.StructuredTypeBaseTypeMustHaveValidName;
     typeReferenceTargetMustHaveValidName[4]     = SerializationValidator.VocabularyAnnotationOutOfLineMustHaveValidTargetName;
     typeReferenceTargetMustHaveValidName[5]     = SerializationValidator.VocabularyAnnotationMustHaveValidTermName;
     typeReferenceTargetMustHaveValidName[6]     = SerializationValidator.NavigationPropertyVerifyAssociationName;
     typeReferenceTargetMustHaveValidName[7]     = ValidationRules.FunctionImportEntitySetExpressionIsInvalid;
     typeReferenceTargetMustHaveValidName[8]     = ValidationRules.FunctionImportParametersCannotHaveModeOfNone;
     typeReferenceTargetMustHaveValidName[9]     = ValidationRules.FunctionOnlyInputParametersAllowedInFunctions;
     typeReferenceTargetMustHaveValidName[10]    = ValidationRules.TypeMustNotHaveKindOfNone;
     typeReferenceTargetMustHaveValidName[11]    = ValidationRules.PrimitiveTypeMustNotHaveKindOfNone;
     typeReferenceTargetMustHaveValidName[12]    = ValidationRules.PropertyMustNotHaveKindOfNone;
     typeReferenceTargetMustHaveValidName[13]    = ValidationRules.TermMustNotHaveKindOfNone;
     typeReferenceTargetMustHaveValidName[14]    = ValidationRules.SchemaElementMustNotHaveKindOfNone;
     typeReferenceTargetMustHaveValidName[15]    = ValidationRules.EntityContainerElementMustNotHaveKindOfNone;
     typeReferenceTargetMustHaveValidName[16]    = ValidationRules.EnumMustHaveIntegerUnderlyingType;
     typeReferenceTargetMustHaveValidName[17]    = ValidationRules.EnumMemberValueMustHaveSameTypeAsUnderlyingType;
     SerializationValidator.serializationRuleSet = new ValidationRuleSet(typeReferenceTargetMustHaveValidName);
 }