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); } }
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); }