示例#1
0
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            if (base.IsProvisioningLayerAvailable)
            {
                base.UserSpecifiedParameters["DomainController"] = this.DataObject.OriginatingServer;
                try
                {
                    OrganizationId    organizationId  = this.DataObject.OrganizationId;
                    ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(base.RootOrgContainerId, organizationId, base.ExecutingUserOrganizationId, false);
                    IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(base.TenantGlobalCatalogSession.DomainController, true, ConsistencyMode.PartiallyConsistent, sessionSettings, 287, "InternalProcessRecord", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\RecipientPolicy\\UpdateEmailAddressPolicy.cs");
                    tenantOrRootOrgRecipientSession.UseGlobalCatalog = true;
                    UpdateEmailAddressPolicy.UpdateRecipients(this.DataObject, this.DataObject.OrganizationId, base.DomainController, tenantOrRootOrgRecipientSession, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new WriteProgress(base.WriteProgress), this, this.FixMissingAlias.IsPresent);
                    goto IL_1AF;
                }
                catch (DataSourceTransientException ex)
                {
                    base.WriteError(new InvalidOperationException(Strings.ErrorReadMatchingRecipients(this.Identity.ToString(), this.DataObject.LdapRecipientFilter, ex.Message), ex), ErrorCategory.InvalidOperation, this.DataObject.Id);
                    TaskLogger.Trace("Exception is raised while reading recipients: {0}", new object[]
                    {
                        ex.ToString()
                    });
                    goto IL_1AF;
                }
                catch (DataSourceOperationException ex2)
                {
                    base.WriteError(new InvalidOperationException(Strings.ErrorReadMatchingRecipients(this.Identity.ToString(), this.DataObject.LdapRecipientFilter, ex2.Message), ex2), ErrorCategory.InvalidOperation, this.DataObject.Id);
                    TaskLogger.Trace("Exception is raised while reading recipients matching filter: {0}", new object[]
                    {
                        ex2.ToString()
                    });
                    goto IL_1AF;
                }
            }
            base.WriteError(new InvalidOperationException(Strings.ErrorNoProvisioningHandlerAvailable), ErrorCategory.InvalidOperation, null);
IL_1AF:
            if (!this.DataObject.ExchangeVersion.IsOlderThan(ExchangeObjectVersion.Exchange2007))
            {
                this.DataObject[EmailAddressPolicySchema.LastUpdatedRecipientFilter] = this.DataObject.RecipientFilter;
                this.DataObject[EmailAddressPolicySchema.RecipientFilterApplied]     = true;
            }
            base.InternalProcessRecord();
            TaskLogger.LogExit();
        }
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            bool flag = this.affectedPolicies != null && this.affectedPolicies.Length > 0;
            List <EmailAddressPolicy> list = new List <EmailAddressPolicy>();

            try
            {
                if (this.affectedPolicies != null)
                {
                    for (int i = 0; i < this.affectedPolicies.Length; i++)
                    {
                        if (flag)
                        {
                            base.WriteProgress(Strings.ProgressEmailAddressPolicyPreparingPriority, Strings.ProgressEmailAddressPolicyAdjustingPriority(this.affectedPolicies[i].Identity.ToString()), i * 99 / this.affectedPolicies.Length + 1);
                        }
                        base.DataSession.Save(this.affectedPolicies[i]);
                        this.affectedPolicies[i].Priority = this.affectedPoliciesOriginalPriority[i];
                        list.Add(this.affectedPolicies[i]);
                    }
                }
                base.InternalProcessRecord();
                if (!base.HasErrors)
                {
                    list.Clear();
                }
                if (base.IsProvisioningLayerAvailable)
                {
                    base.UserSpecifiedParameters["DomainController"] = base.DataObject.OriginatingServer;
                }
                else
                {
                    base.WriteError(new InvalidOperationException(Strings.ErrorNoProvisioningHandlerAvailable), ErrorCategory.InvalidOperation, null);
                }
            }
            finally
            {
                for (int j = 0; j < list.Count; j++)
                {
                    EmailAddressPolicy emailAddressPolicy = list[j];
                    try
                    {
                        if (flag)
                        {
                            base.WriteProgress(Strings.ProgressEmailAddressPolicyPreparingPriority, Strings.ProgressEmailAddressPolicyRollingBackPriority(emailAddressPolicy.Identity.ToString()), j * 99 / list.Count + 1);
                        }
                        base.DataSession.Save(emailAddressPolicy);
                    }
                    catch (DataSourceTransientException)
                    {
                        this.WriteWarning(Strings.VerboseFailedToRollbackPriority(emailAddressPolicy.Id.ToString()));
                    }
                }
            }
            if (!base.HasErrors)
            {
                if (base.IsProvisioningLayerAvailable)
                {
                    try
                    {
                        OrganizationId    organizationId  = base.DataObject.OrganizationId;
                        ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(base.RootOrgContainerId, organizationId, base.ExecutingUserOrganizationId, false);
                        IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(base.TenantGlobalCatalogSession.DomainController, true, ConsistencyMode.PartiallyConsistent, sessionSettings, 190, "InternalProcessRecord", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\RecipientPolicy\\RemoveEmailAddressPolicy.cs");
                        tenantOrRootOrgRecipientSession.UseGlobalCatalog = true;
                        UpdateEmailAddressPolicy.UpdateRecipients(base.DataObject, base.DataObject.OrganizationId, base.DomainController, tenantOrRootOrgRecipientSession, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new WriteProgress(base.WriteProgress), this);
                        goto IL_2DE;
                    }
                    catch (DataSourceTransientException ex)
                    {
                        this.WriteWarning(Strings.ErrorReadMatchingRecipients(this.Identity.ToString(), base.DataObject.LdapRecipientFilter, ex.Message));
                        TaskLogger.Trace("Exception is raised while reading recipients: {0}", new object[]
                        {
                            ex.ToString()
                        });
                        goto IL_2DE;
                    }
                    catch (DataSourceOperationException ex2)
                    {
                        this.WriteWarning(Strings.ErrorReadMatchingRecipients(this.Identity.ToString(), base.DataObject.LdapRecipientFilter, ex2.Message));
                        TaskLogger.Trace("Exception is raised while reading recipients matching filter: {0}", new object[]
                        {
                            ex2.ToString()
                        });
                        goto IL_2DE;
                    }
                }
                base.WriteError(new InvalidOperationException(Strings.ErrorNoProvisioningHandlerAvailable), ErrorCategory.InvalidOperation, null);
            }
IL_2DE:
            TaskLogger.LogExit();
        }
示例#3
0
 internal static void UpdateRecipients(EmailAddressPolicy eap, OrganizationId organizationId, string domainController, IRecipientSession globalCatalogSession, Task.TaskVerboseLoggingDelegate writeVerbose, Task.TaskWarningLoggingDelegate writeWarning, WriteProgress writeProgress, Task cmdlet)
 {
     UpdateEmailAddressPolicy.UpdateRecipients(eap, organizationId, domainController, globalCatalogSession, writeVerbose, writeWarning, writeProgress, cmdlet, false);
 }