internal static ValidationError ValidateIdentifier(string propName, IServiceProvider context, string identifier) { if (context == null) { throw new ArgumentNullException("context"); } ValidationError error = null; if (identifier == null || identifier.Length == 0) { error = new ValidationError(SR.GetString(SR.Error_PropertyNotSet, propName), ErrorNumbers.Error_PropertyNotSet); } else { try { ValidationHelpers.ValidateIdentifier(context, identifier); } catch (Exception e) { error = new ValidationError(SR.GetString(SR.Error_InvalidIdentifier, propName, e.Message), ErrorNumbers.Error_InvalidIdentifier); } } if (error != null) { error.PropertyName = propName; } return(error); }
public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { ValidationErrorCollection validationErrors = base.Validate(manager, obj); Activity activity = obj as Activity; if (activity == null) { return(validationErrors); } ICollection <string> synchronizationHandles = activity.GetValue(Activity.SynchronizationHandlesProperty) as ICollection <string>; if (synchronizationHandles != null) { foreach (string handle in synchronizationHandles) { ValidationError error = ValidationHelpers.ValidateIdentifier("SynchronizationHandles", manager, handle); if (error != null) { validationErrors.Add(error); } } } return(validationErrors); }
private static ValidationErrorCollection ValidateIdentifiers(IServiceProvider serviceProvider, Activity activity) { ValidationErrorCollection validationErrors = new ValidationErrorCollection(); Dictionary <string, int> names = new Dictionary <string, int>(); Walker walker = new Walker(); walker.FoundActivity += delegate(Walker walker2, WalkerEventArgs e) { Activity currentActivity = e.CurrentActivity; if (!currentActivity.Enabled) { e.Action = WalkerAction.Skip; return; } ValidationError identifierError = null; if (names.ContainsKey(currentActivity.QualifiedName)) { if (names[currentActivity.QualifiedName] != 1) { identifierError = new ValidationError(SR.GetString(SR.Error_DuplicatedActivityID, currentActivity.QualifiedName), ErrorNumbers.Error_DuplicatedActivityID, false, "Name"); identifierError.UserData[typeof(Activity)] = currentActivity; validationErrors.Add(identifierError); names[currentActivity.QualifiedName] = 1; } return; } // Undone: AkashS - remove this check when we allow root activities to not have a name. if (!string.IsNullOrEmpty(currentActivity.Name)) { names[currentActivity.Name] = 0; identifierError = ValidationHelpers.ValidateIdentifier("Name", serviceProvider, currentActivity.Name); if (identifierError != null) { identifierError.UserData[typeof(Activity)] = currentActivity; validationErrors.Add(identifierError); } } }; walker.Walk(activity as Activity); return(validationErrors); }
private static ValidationErrorCollection ValidateIdentifiers(IServiceProvider serviceProvider, Activity activity) { ValidationErrorCollection validationErrors = new ValidationErrorCollection(); Dictionary <string, int> names = new Dictionary <string, int>(); Walker walker = new Walker(); walker.FoundActivity += delegate(Walker walker2, WalkerEventArgs e) { Activity currentActivity = e.CurrentActivity; if (!currentActivity.Enabled) { e.Action = WalkerAction.Skip; } else { ValidationError item = null; if (names.ContainsKey(currentActivity.QualifiedName)) { if (names[currentActivity.QualifiedName] != 1) { item = new ValidationError(SR.GetString("Error_DuplicatedActivityID", new object[] { currentActivity.QualifiedName }), 0x602, false, "Name"); item.UserData[typeof(Activity)] = currentActivity; validationErrors.Add(item); names[currentActivity.QualifiedName] = 1; } } else if (!string.IsNullOrEmpty(currentActivity.Name)) { names[currentActivity.Name] = 0; item = ValidationHelpers.ValidateIdentifier("Name", serviceProvider, currentActivity.Name); if (item != null) { item.UserData[typeof(Activity)] = currentActivity; validationErrors.Add(item); } } } }; walker.Walk(activity); return(validationErrors); }
public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { ValidationErrorCollection errors = base.Validate(manager, obj); Activity activity = obj as Activity; if (activity != null) { ICollection <string> is2 = activity.GetValue(Activity.SynchronizationHandlesProperty) as ICollection <string>; if (is2 == null) { return(errors); } foreach (string str in is2) { ValidationError item = ValidationHelpers.ValidateIdentifier("SynchronizationHandles", manager, str); if (item != null) { errors.Add(item); } } } return(errors); }
private ValidationErrorCollection ValidateMethod(ValidationManager manager, Activity activity, MethodBind bind, BindValidationContext validationBindContext) { ValidationErrorCollection errors = new ValidationErrorCollection(); if ((validationBindContext.Access & AccessTypes.Write) != 0) { ValidationError item = new ValidationError(SR.GetString("Error_HandlerReadOnly"), 0x133) { PropertyName = base.GetFullPropertyName(manager) }; errors.Add(item); return(errors); } if (!TypeProvider.IsAssignable(typeof(Delegate), validationBindContext.TargetType)) { ValidationError error2 = new ValidationError(SR.GetString("Error_TypeNotDelegate", new object[] { validationBindContext.TargetType.FullName }), 0x134) { PropertyName = base.GetFullPropertyName(manager) }; errors.Add(error2); return(errors); } string name = bind.Name; Activity enclosingActivity = Helpers.GetEnclosingActivity(activity); if ((name.IndexOf('.') != -1) && (enclosingActivity != null)) { enclosingActivity = Helpers.GetDataSourceActivity(activity, bind.Name, out name); } if (enclosingActivity == null) { ValidationError error3 = new ValidationError(SR.GetString("Error_NoEnclosingContext", new object[] { activity.Name }), 0x130) { PropertyName = base.GetFullPropertyName(manager) + ".Name" }; errors.Add(error3); return(errors); } string errorText = string.Empty; int errorNumber = -1; Type dataSourceClass = Helpers.GetDataSourceClass(enclosingActivity, manager); if (dataSourceClass == null) { errorText = SR.GetString("Error_TypeNotResolvedInMethodName", new object[] { base.GetFullPropertyName(manager) + ".Name" }); errorNumber = 0x135; } else { try { ValidationHelpers.ValidateIdentifier(manager, name); } catch (Exception exception) { errors.Add(new ValidationError(exception.Message, 0x119)); } MethodInfo method = validationBindContext.TargetType.GetMethod("Invoke"); if (method == null) { throw new Exception(SR.GetString("Error_DelegateNoInvoke", new object[] { validationBindContext.TargetType.FullName })); } List <Type> list = new List <Type>(); foreach (ParameterInfo info2 in method.GetParameters()) { list.Add(info2.ParameterType); } MethodInfo info3 = Helpers.GetMethodExactMatch(dataSourceClass, name, BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance, null, list.ToArray(), null); if (info3 == null) { if (dataSourceClass.GetMethod(name, BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance) != null) { errorText = SR.GetString("Error_MethodSignatureMismatch", new object[] { base.GetFullPropertyName(manager) + ".Name" }); errorNumber = 310; } else { errorText = SR.GetString("Error_MethodNotExists", new object[] { base.GetFullPropertyName(manager) + ".Name", bind.Name }); errorNumber = 0x137; } } else if (!method.ReturnType.Equals(info3.ReturnType)) { errorText = SR.GetString("Error_MethodReturnTypeMismatch", new object[] { base.GetFullPropertyName(manager), method.ReturnType.FullName }); errorNumber = 0x139; } } if (errorText.Length > 0) { ValidationError error4 = new ValidationError(errorText, errorNumber) { PropertyName = base.GetFullPropertyName(manager) + ".Path" }; errors.Add(error4); } return(errors); }