private bool ProcessResponse(MailboxAssociationEwsBinding ewsBinding, UpdateMailboxAssociationResponseType response, MailboxAssociation association, IMailboxLocator mailboxLocator) { if (response != null && response.ResponseMessages != null && response.ResponseMessages.Items != null && response.ResponseMessages.Items.Length > 0) { foreach (ResponseMessageType responseMessageType in response.ResponseMessages.Items) { if (responseMessageType.ResponseClass == ResponseClassType.Success) { InProcessAssociationReplicator.Tracer.TraceDebug <MailboxAssociation>((long)this.GetHashCode(), "ReplicateAssociation succeeded. Association {0}", association); this.ProcessSuccess(association, InProcessAssociationReplicator.GetEwsVersionNumber(ewsBinding), mailboxLocator); return(true); } string failureDescription = string.Format(CultureInfo.InvariantCulture, "ReplicateAssociation Failed. Association {0}. ResponseClass={1}, ResponseCode={2}, MessageText={3}", new object[] { association, responseMessageType.ResponseClass, responseMessageType.ResponseCode, responseMessageType.MessageText }); this.ProcessFailure(association, failureDescription); } } else { string failureDescription2 = string.Format(CultureInfo.InvariantCulture, "ReplicateAssociation Failed with empty response. Association {0}.", new object[] { association }); this.ProcessFailure(association, failureDescription2); } return(false); }
private bool ExecuteReplicationToMailbox(IAssociationAdaptor masterAdaptor, MailboxAssociation association) { bool replicationSucceeded = false; Exception exception = null; try { GrayException.MapAndReportGrayExceptions(delegate() { try { MailboxAssociationEwsBinding.ExecuteEwsOperationWithRetry("ReplicateAssociation", delegate { using (MailboxAssociationEwsBinding mailboxAssociationEwsBinding = this.CreateMailboxAssociationEwsBinding(masterAdaptor.MasterLocator, association)) { UpdateMailboxAssociationType updateMailboxAssociation = InProcessAssociationReplicator.CreateUpdateMailboxAssociationType(masterAdaptor.MasterLocator, association); UpdateMailboxAssociationResponseType response = mailboxAssociationEwsBinding.UpdateMailboxAssociation(updateMailboxAssociation); replicationSucceeded = this.ProcessResponse(mailboxAssociationEwsBinding, response, association, masterAdaptor.AssociationStore.MailboxLocator); } }); } catch (MailboxNotFoundException exception4) { replicationSucceeded = this.DeleteMailboxNotFoundAssociation(association, masterAdaptor, exception4); if (!replicationSucceeded) { exception = exception4; } } catch (BackEndLocatorException exception5) { exception = exception5; } catch (WebException exception6) { exception = exception6; } catch (InvalidOperationException exception7) { exception = exception7; } catch (LogonAsNetworkServiceException exception8) { if (!ExEnvironment.IsTest) { throw; } exception = exception8; } }); } catch (GrayException exception) { GrayException exception9; exception = exception9; } catch (SoapException exception2) { exception = exception2; } catch (IOException exception3) { exception = exception3; } if (exception != null) { this.ProcessFailure(association, exception.ToString()); replicationSucceeded = false; } return(replicationSucceeded); }