public static UpdateGroupMailboxBase CreateUpdateGroupMailbox(IRecipientSession adSession, ADUser group, DatabaseLocationInfo databaseLocationInfo, ADUser executingUser, GroupMailboxConfigurationActionType forceActionMask, ADUser[] addedMembers, ADUser[] removedMembers, int?permissionsVersion)
        {
            ExchangePrincipal exchangePrincipal;

            using (new StopwatchPerformanceTracker("UpdateGroupMailboxFactory.CreateUpdateGroupMailbox.BuildExchangePrincipal", GenericCmdletInfoDataLogger.Instance))
            {
                exchangePrincipal = ExchangePrincipal.FromADUser(group, databaseLocationInfo, RemotingOptions.AllowCrossSite);
            }
            Uri backEndWebServicesUrl;

            using (new StopwatchPerformanceTracker("UpdateGroupMailboxFactory.CreateUpdateGroupMailbox.GetBackEndHttpService", GenericCmdletInfoDataLogger.Instance))
            {
                backEndWebServicesUrl = BackEndLocator.GetBackEndWebServicesUrl(exchangePrincipal.MailboxInfo);
                UpdateGroupMailboxFactory.Tracer.TraceDebug(0L, "UpdateGroupMailboxFactory.CreateUpdateGroupMailbox - BackendUrl=" + backEndWebServicesUrl);
            }
            if (ExEnvironment.IsTest && !VariantConfiguration.InvariantNoFlightingSnapshot.Global.MultiTenancy.Enabled)
            {
                UserMailboxLocator[] array;
                if (addedMembers == null)
                {
                    array = null;
                }
                else
                {
                    array = (from user in addedMembers
                             select UserMailboxLocator.Instantiate(adSession, user)).ToArray <UserMailboxLocator>();
                }
                UserMailboxLocator[] addedMembers2 = array;
                UserMailboxLocator[] array2;
                if (removedMembers == null)
                {
                    array2 = null;
                }
                else
                {
                    array2 = (from user in removedMembers
                              select UserMailboxLocator.Instantiate(adSession, user)).ToArray <UserMailboxLocator>();
                }
                UserMailboxLocator[] removedMembers2 = array2;
                return(new UpdateGroupMailboxViaXSO(adSession, group, exchangePrincipal, executingUser, forceActionMask, addedMembers2, removedMembers2, permissionsVersion));
            }
            return(new UpdateGroupMailboxViaEWS(group, executingUser, backEndWebServicesUrl, forceActionMask, addedMembers, removedMembers, permissionsVersion));
        }
        protected override void InternalCreateASubscription(IMailboxContext userContext, SubscriptionData subscription, bool remoteSubscription)
        {
            if (subscription.Parameters.FolderId != null)
            {
                throw new ArgumentException("Subscription parameter FolderId cannot be specified on Group subscriptions");
            }
            if (subscription.Parameters.NotificationType != NotificationType.UnseenItemNotification)
            {
                throw new OwaInvalidOperationException("Invalid Notification type specified when calling SubscribeToGroupUnseenNotification");
            }
            if (!(userContext is SharedContext))
            {
                throw new OwaInvalidOperationException("Unseen Notifications should be using a SharedContext");
            }
            this.metricType = SubscribeToNotificationMetadata.UnseenItemNotificationLatency;
            IRecipientSession  adrecipientSession = base.CallContext.ADRecipientSessionContext.GetADRecipientSession();
            UserMailboxLocator mailboxLocator     = UserMailboxLocator.Instantiate(adrecipientSession, base.CallContext.AccessingADUser);
            string             subscriptionId     = userContext.NotificationManager.SubscribeToUnseenItemNotification(subscription.SubscriptionId, mailboxLocator, adrecipientSession);

            subscription.SubscriptionId = subscriptionId;
        }
        // Token: 0x06001535 RID: 5429 RVA: 0x000792F8 File Offset: 0x000774F8
        private void ReplicateOutOfSyncAssociations(MailboxSession mailboxSession, ADUser masterAdUser, IRecipientSession adSession, GroupMailboxAccessLayer accessLayer)
        {
            mailboxSession.Mailbox.GetValueOrDefault <MailboxAssociationProcessingFlags>(MailboxSchema.MailboxAssociationProcessingFlags, MailboxAssociationProcessingFlags.None);
            if (masterAdUser.RecipientTypeDetails == RecipientTypeDetails.GroupMailbox)
            {
                MailboxAssociationReplicationAssistant.Tracer.TraceDebug((long)this.GetHashCode(), "Replicating associations for GroupMailbox via MailboxAssistant WorkCycle");
                GroupMailboxLocator masterLocator = GroupMailboxLocator.Instantiate(adSession, masterAdUser);
                accessLayer.ReplicateOutOfSyncAssociation(masterLocator);
                return;
            }
            if (masterAdUser.RecipientTypeDetails == RecipientTypeDetails.UserMailbox)
            {
                MailboxAssociationReplicationAssistant.Tracer.TraceDebug((long)this.GetHashCode(), "Replicating associations for UserMailbox via MailboxAssistant WorkCycle");
                UserMailboxLocator masterLocator2 = UserMailboxLocator.Instantiate(adSession, masterAdUser);
                accessLayer.ReplicateOutOfSyncAssociation(masterLocator2);
                return;
            }
            string message = string.Format("Replication of Mailbox Associations is not yet supported for mailbox of type {0}", masterAdUser.RecipientTypeDetails);

            MailboxAssociationReplicationAssistant.Tracer.TraceError((long)this.GetHashCode(), message);
            throw new NotImplementedException(message);
        }
        // Token: 0x06001536 RID: 5430 RVA: 0x000793B0 File Offset: 0x000775B0
        private void ReplicateAssociations(ADUser masterAdUser, IRecipientSession adSession, ICollection <IMailboxLocator> itemsToReplicate, GroupMailboxAccessLayer accessLayer)
        {
            if (masterAdUser.RecipientTypeDetails == RecipientTypeDetails.GroupMailbox)
            {
                MailboxAssociationReplicationAssistant.Tracer.TraceDebug((long)this.GetHashCode(), "Replicating associations for GroupMailbox via MailboxAssistant.RunNow");
                GroupMailboxLocator  masterLocator = GroupMailboxLocator.Instantiate(adSession, masterAdUser);
                UserMailboxLocator[] slaveLocators = itemsToReplicate.Cast <UserMailboxLocator>().ToArray <UserMailboxLocator>();
                accessLayer.ReplicateOutOfSyncAssociation(masterLocator, slaveLocators);
                return;
            }
            if (masterAdUser.RecipientTypeDetails == RecipientTypeDetails.UserMailbox)
            {
                MailboxAssociationReplicationAssistant.Tracer.TraceDebug((long)this.GetHashCode(), "Replicating associations for UserMailbox via MailboxAssistant.RunNow");
                UserMailboxLocator    masterLocator2 = UserMailboxLocator.Instantiate(adSession, masterAdUser);
                GroupMailboxLocator[] slaveLocators2 = itemsToReplicate.Cast <GroupMailboxLocator>().ToArray <GroupMailboxLocator>();
                accessLayer.ReplicateOutOfSyncAssociation(masterLocator2, slaveLocators2);
                return;
            }
            string message = string.Format("Replication of Mailbox Associations is not yet supported for mailbox of type {0}", masterAdUser.RecipientTypeDetails);

            MailboxAssociationReplicationAssistant.Tracer.TraceError((long)this.GetHashCode(), message);
            throw new NotImplementedException(message);
        }
Exemplo n.º 5
0
 public override MailboxLocator CreateMasterLocator()
 {
     return(UserMailboxLocator.Instantiate(base.AdSession, base.CurrentMailbox));
 }