Beispiel #1
0
        public static MailboxProvisioningAttributes Parse(string attributes)
        {
            if (string.IsNullOrEmpty(attributes) || string.IsNullOrWhiteSpace(attributes))
            {
                return(null);
            }
            string[] array = attributes.Split(MailboxProvisioningAttributes.provisoningAttributeDelimiter, StringSplitOptions.RemoveEmptyEntries);
            if (array.Length == 0 || array.Length > 30)
            {
                throw new InvalidMailboxProvisioningAttributeException(DirectoryStrings.ErrorInvalidMailboxProvisioningAttributes(30));
            }
            HashSet <string> hashSet = new HashSet <string>();
            List <MailboxProvisioningAttribute>     list = new List <MailboxProvisioningAttribute>();
            ReadOnlyCollection <PropertyDefinition> allFilterableProperties = ObjectSchema.GetInstance <MailboxProvisioningAttributesSchema>().AllFilterableProperties;

            for (int i = 0; i < array.Length; i++)
            {
                MailboxProvisioningAttribute attribute = MailboxProvisioningAttribute.Parse(array[i]);
                if (hashSet.Contains(attribute.Key))
                {
                    throw new InvalidMailboxProvisioningAttributeException(DirectoryStrings.ErrorDuplicateKeyInMailboxProvisioningAttributes(attribute.Key));
                }
                if (!allFilterableProperties.Any((PropertyDefinition x) => x.Name.Equals(attribute.Key)))
                {
                    string validKeys = string.Join(",", from x in allFilterableProperties
                                                   select x.Name);
                    throw new ProvisioningAttributeDoesNotMatchSchemaException(attribute.Key, validKeys);
                }
                if (MailboxProvisioningAttributes.PermanentAttributeNames.Contains(attribute.Key))
                {
                    throw new CannotSetPermanentAttributesException(string.Join(",", MailboxProvisioningAttributes.PermanentAttributeNames));
                }
                list.Add(attribute);
            }
            return(new MailboxProvisioningAttributes(list.ToArray()));
        }
Beispiel #2
0
 private bool Equals(MailboxProvisioningAttribute other)
 {
     return(string.Equals(this.Key, other.Key) && string.Equals(this.Value, other.Value));
 }