Example #1
0
        private void VerifyAndSetRecipientViewRoot(string root)
        {
            if (object.Equals(root, this.modifiedServerSettings.RecipientViewRoot))
            {
                return;
            }
            OrganizationalUnitIdParameter organizationalUnitIdParameter = null;

            try
            {
                organizationalUnitIdParameter = OrganizationalUnitIdParameter.Parse(root);
            }
            catch (ArgumentException exception)
            {
                base.WriteError(exception, ErrorCategory.InvalidArgument, this);
            }
            if (this.configSession == null)
            {
                ADSessionSettings sessionSettings = ADSessionSettings.FromCustomScopeSet(base.ScopeSet, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId, true);
                this.configSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.PartiallyConsistent, sessionSettings, 588, "VerifyAndSetRecipientViewRoot", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\ADServerSettings\\SetADServerSettings.cs");
                this.configSession.UseGlobalCatalog = true;
                this.configSession.UseConfigNC      = false;
            }
            ADObjectId adobjectId = null;

            if (base.ScopeSet.RecipientReadScope != null && base.ScopeSet.RecipientReadScope.Root != null)
            {
                adobjectId = base.ScopeSet.RecipientReadScope.Root;
            }
            ExchangeOrganizationalUnit exchangeOrganizationalUnit = null;

            if (base.IsVerboseOn)
            {
                base.WriteVerbose(Strings.VerboseVerifyingRecipientViewRoot(root));
            }
            IEnumerable <ExchangeOrganizationalUnit> objects = organizationalUnitIdParameter.GetObjects <ExchangeOrganizationalUnit>(adobjectId, this.configSession);

            using (IEnumerator <ExchangeOrganizationalUnit> enumerator = objects.GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    exchangeOrganizationalUnit = enumerator.Current;
                    if (enumerator.MoveNext())
                    {
                        if (adobjectId != null)
                        {
                            base.WriteError(new ManagementObjectAmbiguousException(Strings.ErrorRecipientViewRootDuplicatedUnderScope(root, adobjectId.ToString())), ErrorCategory.InvalidArgument, this);
                        }
                        else
                        {
                            base.WriteError(new ManagementObjectAmbiguousException(Strings.ErrorRecipientViewRootDuplicated(root)), ErrorCategory.InvalidArgument, this);
                        }
                    }
                }
                else if (adobjectId != null)
                {
                    base.WriteError(new ArgumentException(Strings.ErrorRecipientViewRootNotFoundUnderScope(root, adobjectId.ToString())), ErrorCategory.InvalidArgument, this);
                }
                else
                {
                    base.WriteError(new ArgumentException(Strings.ErrorRecipientViewRootNotFound(root)), ErrorCategory.InvalidArgument, this);
                }
            }
            this.modifiedServerSettings.RecipientViewRoot = exchangeOrganizationalUnit.Id;
            if (base.IsVerboseOn)
            {
                base.WriteVerbose(Strings.VerboseVerifyRecipientViewRootSucceed);
            }
        }