private MultiValuedProperty <BindingMetadata> ValidateRecipientsImpl(IEnumerable <string> recipients) { MultiValuedProperty <BindingMetadata> multiValuedProperty = new MultiValuedProperty <BindingMetadata>(); bool flag = false; this.warnedSkipInvalidTypeInGroup = false; if (recipients.Count <string>() > this.maxRecipientsLimit) { base.LogOneEntry(ExecutionLog.EventType.Error, "InvalidArgument: {0}", new object[] { Strings.ErrorMaxMailboxLimit(this.maxRecipientsLimit, recipients.Count <string>()) }); base.WriteError(new ExValidatorException(Strings.ErrorMaxMailboxLimit(this.maxRecipientsLimit, recipients.Count <string>())), ErrorCategory.InvalidArgument); } else { foreach (string text in recipients) { if (SourceValidator.IsWideScope(text)) { base.LogOneEntry(ExecutionLog.EventType.Verbose, "Skipping validation for wide scoped value '{0}", new object[] { text }); multiValuedProperty.Add(new BindingMetadata(text, text, text, SourceValidator.GetBindingType(text))); } else { RecipientIdParameter recipientIdParameter = RecipientIdParameter.Parse(text); ReducedRecipient reducedRecipient = this.recipientGetter(recipientIdParameter, this.recipientSession); if (ExchangeValidator.IsMembershipGroup(reducedRecipient) && this.allowGroups) { if (!flag) { if (base.ShouldContinue(Strings.ShouldExpandGroups)) { flag = true; base.LogOneEntry(ExecutionLog.EventType.Information, "Got confirmation to expand groups", new object[0]); } else { base.LogOneEntry(ExecutionLog.EventType.Error, "User selected not to expand groups. {0}", new object[] { Strings.GroupsIsNotAllowedForHold(recipientIdParameter.RawIdentity) }); base.WriteError(new ExValidatorException(Strings.GroupsIsNotAllowedForHold(recipientIdParameter.RawIdentity)), ErrorCategory.InvalidArgument); } } if (flag) { this.ExpandGroupMembership(reducedRecipient, multiValuedProperty); } } else { this.VerifyAndAddRecipient(reducedRecipient, multiValuedProperty, false); } } } } return(multiValuedProperty); }
public MultiValuedProperty <BindingMetadata> ValidateLocations(IEnumerable <string> locations) { ArgumentValidator.ThrowIfNull("locations", locations); MultiValuedProperty <BindingMetadata> multiValuedProperty = new MultiValuedProperty <BindingMetadata>(); if (locations.Count <string>() > this.maxSitesLimit) { base.LogOneEntry(ExecutionLog.EventType.Error, "InvalidArgument: {0}", new object[] { Strings.ErrorMaxSiteLimit(this.maxSitesLimit, locations.Count <string>()) }); base.WriteError(new SpValidatorException(Strings.ErrorMaxSiteLimit(this.maxSitesLimit, locations.Count <string>())), ErrorCategory.InvalidArgument); } foreach (string location in locations) { SharepointValidationResult validationResult = this.ValidateLocation(location); if (validationResult.IsValid) { if (validationResult.IsTopLevelSiteCollection) { base.WriteWarning(validationResult.ValidationText); } if (!multiValuedProperty.Any((BindingMetadata p) => string.Equals(validationResult.SharepointSource.Identity, p.ImmutableIdentity, StringComparison.OrdinalIgnoreCase))) { multiValuedProperty.Add(new BindingMetadata(validationResult.SharepointSource.Title, validationResult.SharepointSource.SiteUrl, validationResult.SharepointSource.Identity, SourceValidator.GetBindingType(validationResult.SharepointSource.Identity))); } } else { base.WriteError(new SpValidatorException(validationResult.ValidationText), ErrorCategory.InvalidArgument); } } return(multiValuedProperty); }