public IConfigurable Read <T>(ObjectId identity) where T : IConfigurable, new() { if (identity == null) { throw new ArgumentNullException("identity"); } if (this.serviceInstanceName == null) { throw new InvalidOperationException("Read can be performed only for specific service instance."); } SyncObjectId syncObjectId = identity as SyncObjectId; if (syncObjectId == null) { throw new NotSupportedException(identity.GetType().FullName); } this.RefreshRidMasterInformation(); MsoMainStreamCookieContainer msoMainStreamCookieContainer = this.configurationSession.GetMsoMainStreamCookieContainer(this.serviceInstanceName); MultiValuedProperty <FullSyncObjectRequest> msoForwardSyncObjectFullSyncRequests = msoMainStreamCookieContainer.MsoForwardSyncObjectFullSyncRequests; foreach (FullSyncObjectRequest fullSyncObjectRequest in msoForwardSyncObjectFullSyncRequests) { if (syncObjectId.Equals(fullSyncObjectRequest.Identity)) { fullSyncObjectRequest.ResetChangeTracking(true); return(fullSyncObjectRequest); } } return(null); }
public void PersistNewDivergence(SyncObjectId syncObjectId, DateTime divergenceTime, bool incrementalOnly, bool linkRelated, bool temporary, bool tenantWide, string[] errors, bool validationDivergence, bool retriable, IDictionary divergenceInfoTable) { FailedMSOSyncObject failedMSOSyncObject = new FailedMSOSyncObject(); failedMSOSyncObject.LoadDivergenceInfoXml(); failedMSOSyncObject.SetId(this.GetDivergenceObjectId(syncObjectId)); failedMSOSyncObject.ObjectId = syncObjectId; failedMSOSyncObject.DivergenceTimestamp = new DateTime?(divergenceTime); failedMSOSyncObject.IsIncrementalOnly = incrementalOnly; failedMSOSyncObject.IsLinkRelated = linkRelated; failedMSOSyncObject.IsTemporary = temporary; failedMSOSyncObject.DivergenceCount = 1; failedMSOSyncObject.IsTenantWideDivergence = tenantWide; failedMSOSyncObject.IsValidationDivergence = validationDivergence; failedMSOSyncObject.IsRetriable = retriable; if (failedMSOSyncObject.IsValidationDivergence) { failedMSOSyncObject.IsIgnoredInHaltCondition = true; } else { failedMSOSyncObject.IsIgnoredInHaltCondition = false; } failedMSOSyncObject.Errors = new MultiValuedProperty <string>(); if (errors != null) { ForwardSyncDataAccessHelper.AddErrors(errors, failedMSOSyncObject); } if (divergenceInfoTable != null) { ForwardSyncDataAccessHelper.SetDivergenceInfoValues(divergenceInfoTable, failedMSOSyncObject); failedMSOSyncObject.SaveDivergenceInfoXml(); } this.SaveDivergence(failedMSOSyncObject); }
private void ProcessMsoRawObject(SyncObjectId syncObjectId, string serviceInstanceId) { if (this.service == null) { this.service = new MsoSyncService(); } bool?allLinksCollected; DirectoryObjectsAndLinks msoRawObject = this.service.GetMsoRawObject(syncObjectId, serviceInstanceId, this.IncludeBackLinks.IsPresent, this.IncludeForwardLinks.IsPresent, base.Fields.IsModified("LinksResultSize") ? this.LinksResultSize : 1000, out allLinksCollected); if (msoRawObject.Objects.Length != 0) { MsoRawObject msoRawObject2 = new MsoRawObject(syncObjectId, serviceInstanceId, msoRawObject, allLinksCollected, this.PopulateRawObject.IsPresent); msoRawObject2.PopulateSyncObjectData(); base.WriteObject(msoRawObject2); return; } StringBuilder stringBuilder = new StringBuilder(); if (msoRawObject.Errors.Length != 0) { foreach (DirectoryObjectError directoryObjectError in msoRawObject.Errors) { stringBuilder.Append(directoryObjectError.ErrorCode); stringBuilder.Append(";"); } } else { stringBuilder.Append("no errors"); } this.WriteError(new Exception(Strings.MsoObjectNotFound(syncObjectId.ToString(), stringBuilder.ToString())), ErrorCategory.ObjectNotFound, null, false); }
public override void ReportExcludedObject(PropertyBag propertyBag, DirectoryObjectErrorCode errorCode, ProcessingStage processingStage) { SyncObjectId syncObjectId = FullSyncObjectErrorReporter.GetSyncObjectId(propertyBag); if (syncObjectId != null) { this.ReportExcludedObject(syncObjectId, errorCode, processingStage); return; } base.ReportExcludedObject(propertyBag, errorCode, processingStage); DirectoryObjectError directoryObjectError = new DirectoryObjectError(); directoryObjectError.ErrorCode = errorCode; directoryObjectError.ObjectId = (string)propertyBag[SyncObjectSchema.ObjectId]; if (propertyBag.Contains(ADObjectSchema.ObjectClass)) { directoryObjectError.ObjectClass = SyncRecipient.GetRecipientType(propertyBag); } if (propertyBag.Contains(SyncObjectSchema.ContextId)) { directoryObjectError.ContextId = (string)propertyBag[SyncObjectSchema.ContextId]; } this.errors.Add(directoryObjectError); if (this.performanceCounterSession != null) { this.performanceCounterSession.IncrementUserError(); } }
// Token: 0x06000903 RID: 2307 RVA: 0x0001F59C File Offset: 0x0001D79C protected void GetSyncObjectIdElements(out string contextIdString, out string objectIdString, out string objectClassString) { if (this.syncObjectId != null) { contextIdString = this.syncObjectId.ContextId; objectIdString = this.syncObjectId.ObjectId; objectClassString = this.syncObjectId.ObjectClass.ToString(); return; } contextIdString = null; objectIdString = null; objectClassString = null; string[] identityElements = SyncObjectId.GetIdentityElements(this.SyncObjectIdentity); if (this.SyncObjectIdentity.EndsWith("*")) { switch (identityElements.Length) { case 1: goto IL_8A; case 2: break; case 3: objectIdString = identityElements[2]; break; default: return; } objectClassString = identityElements[1]; IL_8A: contextIdString = identityElements[0]; return; } switch (identityElements.Length) { case 1: objectIdString = identityElements[0]; return; case 2: objectIdString = identityElements[1]; objectClassString = identityElements[0]; return; case 3: objectIdString = identityElements[2]; objectClassString = identityElements[1]; contextIdString = identityElements[0]; return; default: return; } }
// Token: 0x0600090A RID: 2314 RVA: 0x0001F8B4 File Offset: 0x0001DAB4 private void CheckObjectClassIsValid() { string[] identityElements = SyncObjectId.GetIdentityElements(this.SyncObjectIdentity); if (this.SyncObjectIdentity.EndsWith("*") && identityElements.Length > 1 && identityElements[1] != "*" && !Enum.IsDefined(typeof(DirectoryObjectClass), identityElements[1])) { throw new ArgumentException(Strings.ErrorInvalidParameterFormat("identity"), "identity"); } if (this.SyncObjectIdentity.StartsWith("*") && identityElements.Length > 1 && identityElements[identityElements.Length - 2] != "*" && !Enum.IsDefined(typeof(DirectoryObjectClass), identityElements[identityElements.Length - 2])) { throw new ArgumentException(Strings.ErrorInvalidParameterFormat("identity"), "identity"); } }
// Token: 0x06000904 RID: 2308 RVA: 0x0001F674 File Offset: 0x0001D874 private static bool TryParseSyncObjectId(string identity, out SyncObjectId syncObjectId) { syncObjectId = null; try { syncObjectId = SyncObjectId.Parse(identity); } catch (ArgumentException) { return(false); } return(true); }
public override void ReportExcludedObject(SyncObjectId objectId, DirectoryObjectErrorCode errorCode, ProcessingStage processingStage) { base.ReportExcludedObject(objectId, errorCode, processingStage); DirectoryObjectError directoryObjectError = new DirectoryObjectError(); directoryObjectError.ErrorCode = errorCode; directoryObjectError.ObjectId = objectId.ObjectId; directoryObjectError.ContextId = objectId.ContextId; directoryObjectError.ObjectClass = objectId.ObjectClass; directoryObjectError.ObjectClassSpecified = true; this.errors.Add(directoryObjectError); if (this.performanceCounterSession != null) { this.performanceCounterSession.IncrementUserError(); } }
public override void ReportExcludedObject(SyncObjectId objectId, DirectoryObjectErrorCode errorCode, ProcessingStage processingStage) { base.ReportExcludedObject(objectId, errorCode, processingStage); this.verboseLoggingDelegate(Strings.BackSyncObjectExcluded(objectId.ToString(), errorCode, processingStage)); }
public virtual void ReportExcludedObject(SyncObjectId objectId, DirectoryObjectErrorCode errorCode, ProcessingStage processingStage) { ExcludedObjectReporter.LogExcludedObject(objectId.ToString(), errorCode, processingStage); }
internal MsoRawObject(SyncObjectId externalObjectId, string serviceInstanceId, DirectoryObjectsAndLinks directoryObjectsAndLinks, bool?allLinksCollected, bool populateRawObject) : this() { this.ExternalObjectId = externalObjectId; this.ServiceInstanceId = serviceInstanceId; this.SerializedObjectAndLinks = this.SerializeForRpsDelivery(directoryObjectsAndLinks); this.MySyncObject = SyncObject.Create(directoryObjectsAndLinks.Objects[0], directoryObjectsAndLinks.Links, Guid.Empty); if (populateRawObject) { this.ObjectAndLinks = directoryObjectsAndLinks; } if (allLinksCollected != null) { this.AllLinksCollected = allLinksCollected; this.LinksCollected = new int?((directoryObjectsAndLinks.Links == null) ? 0 : directoryObjectsAndLinks.Links.Length); } switch (externalObjectId.ObjectClass) { case DirectoryObjectClass.Account: { Account account = (Account)directoryObjectsAndLinks.Objects[0]; if (account.DisplayName != null) { this.DisplayName = account.DisplayName.Value[0]; return; } break; } case DirectoryObjectClass.Company: { Company company = (Company)directoryObjectsAndLinks.Objects[0]; if (company.DisplayName != null) { this.DisplayName = company.DisplayName.Value[0]; } if (company.AssignedPlan != null) { this.AssignedPlanCapabilities = this.CollectCapabilities(company.AssignedPlan.Value); return; } break; } case DirectoryObjectClass.Contact: { Contact contact = (Contact)directoryObjectsAndLinks.Objects[0]; if (contact.DisplayName != null) { this.DisplayName = contact.DisplayName.Value[0]; } if (contact.ValidationError != null && contact.ValidationError.Value != null) { this.ExchangeValidationError = this.CollectErrorDetails(contact.ValidationError.Value); return; } break; } case DirectoryObjectClass.Device: case DirectoryObjectClass.KeyGroup: case DirectoryObjectClass.ServicePrincipal: case DirectoryObjectClass.SubscribedPlan: break; case DirectoryObjectClass.ForeignPrincipal: { ForeignPrincipal foreignPrincipal = (ForeignPrincipal)directoryObjectsAndLinks.Objects[0]; if (foreignPrincipal.DisplayName != null) { this.DisplayName = foreignPrincipal.DisplayName.Value[0]; return; } break; } case DirectoryObjectClass.Group: { Group group = (Group)directoryObjectsAndLinks.Objects[0]; if (group.DisplayName != null) { this.DisplayName = group.DisplayName.Value[0]; } if (group.ValidationError != null && group.ValidationError.Value != null) { this.ExchangeValidationError = this.CollectErrorDetails(group.ValidationError.Value); } break; } case DirectoryObjectClass.User: { User user = (User)directoryObjectsAndLinks.Objects[0]; if (user.DisplayName != null) { this.DisplayName = user.DisplayName.Value[0]; } if (user.WindowsLiveNetId != null) { this.WindowsLiveNetId = new NetID(user.WindowsLiveNetId.Value[0]); } if (user.AssignedPlan != null) { this.AssignedPlanCapabilities = this.CollectCapabilities(user.AssignedPlan.Value); } if (user.ValidationError != null && user.ValidationError.Value != null) { this.ExchangeValidationError = this.CollectErrorDetails(user.ValidationError.Value); return; } break; } default: return; } }
public virtual FailedMSOSyncObject GetExistingDivergence(SyncObjectId syncObjectId) { ADObjectId divergenceObjectId = this.GetDivergenceObjectId(syncObjectId); return(this.configSession.Read <FailedMSOSyncObject>(divergenceObjectId)); }
public void PersistNewDivergence(SyncObjectId syncObjectId, DateTime divergenceTime, bool incrementalOnly, bool linkRelated, bool temporary, bool tenantWide, string[] errors) { this.PersistNewDivergence(syncObjectId, divergenceTime, incrementalOnly, linkRelated, temporary, tenantWide, errors, false, true, null); }
protected virtual ADObjectId GetDivergenceObjectId(SyncObjectId syncObjectId) { return(this.divergenceContainerObjectId.GetChildId(FailedMSOSyncObject.GetObjectName(syncObjectId))); }
public DirectoryObjectsAndLinks GetMsoRawObject(SyncObjectId syncObjectId, string serviceInstanceId, bool includeBackLinks, bool includeForwardLinks, int linksResultSize, out bool?allLinksCollected) { DirectoryObjectIdentity[] array = new DirectoryObjectIdentity[] { syncObjectId.ToMsoIdentity() }; DirectoryObject[] array2 = new DirectoryObject[1]; DirectoryLink[] array3 = new DirectoryLink[0]; DirectoryObjectError[] array4 = new DirectoryObjectError[0]; DirectoryObjectsAndLinks directoryObjectsAndLinks = new DirectoryObjectsAndLinks { NextPageToken = null, More = true }; byte[] msoSyncCookie = this.GetMsoSyncCookie(serviceInstanceId); GetDirectoryObjectsOptions?getDirectoryObjectsOptions = new GetDirectoryObjectsOptions?(GetDirectoryObjectsOptions.None); if (includeBackLinks) { getDirectoryObjectsOptions |= GetDirectoryObjectsOptions.IncludeBackLinks; } if (includeForwardLinks) { getDirectoryObjectsOptions |= GetDirectoryObjectsOptions.IncludeForwardLinks; } if (includeForwardLinks || includeBackLinks) { allLinksCollected = new bool?(true); } else { allLinksCollected = null; } while (directoryObjectsAndLinks.More) { GetDirectoryObjectsRequest request = new GetDirectoryObjectsRequest((directoryObjectsAndLinks.NextPageToken == null) ? msoSyncCookie : null, (directoryObjectsAndLinks.NextPageToken == null) ? array : null, (directoryObjectsAndLinks.NextPageToken == null) ? getDirectoryObjectsOptions : null, directoryObjectsAndLinks.NextPageToken); GetDirectoryObjectsResponse directoryObjects = this.SyncProxy.GetDirectoryObjects(request); if (directoryObjects.GetDirectoryObjectsResult.Objects != null && directoryObjects.GetDirectoryObjectsResult.Objects.Length != 0 && array2[0] == null) { directoryObjects.GetDirectoryObjectsResult.Objects.CopyTo(array2, 0); } if (allLinksCollected == true && directoryObjects.GetDirectoryObjectsResult.Links != null && directoryObjects.GetDirectoryObjectsResult.Links.Length != 0 && array3.Length <= linksResultSize) { if (array3.Length == linksResultSize) { allLinksCollected = new bool?(false); } else { int num = array3.Length; int num2 = array3.Length + directoryObjects.GetDirectoryObjectsResult.Links.Length; int num3 = Math.Min(linksResultSize, num2); if (num2 > linksResultSize) { allLinksCollected = new bool?(false); } Array.Resize <DirectoryLink>(ref array3, num3); Array.Copy(directoryObjects.GetDirectoryObjectsResult.Links, 0, array3, num, num3 - num); } } if (directoryObjects.GetDirectoryObjectsResult.Errors != null && directoryObjects.GetDirectoryObjectsResult.Errors.Length != 0) { Array.Resize <DirectoryObjectError>(ref array4, array4.Length + directoryObjects.GetDirectoryObjectsResult.Errors.Length); directoryObjects.GetDirectoryObjectsResult.Errors.CopyTo(array4, array4.Length - directoryObjects.GetDirectoryObjectsResult.Errors.Length); } directoryObjectsAndLinks.NextPageToken = directoryObjects.GetDirectoryObjectsResult.NextPageToken; directoryObjectsAndLinks.More = directoryObjects.GetDirectoryObjectsResult.More; } directoryObjectsAndLinks.Objects = ((array2 != null && array2[0] != null) ? array2 : new DirectoryObject[0]); directoryObjectsAndLinks.Links = array3; directoryObjectsAndLinks.Errors = array4; return(directoryObjectsAndLinks); }