コード例 #1
0
 // Token: 0x06000560 RID: 1376 RVA: 0x00014AD4 File Offset: 0x00012CD4
 protected override void InternalProcessRecord()
 {
     TaskLogger.LogEnter(new object[]
     {
         this.Identity,
         this.DataObject
     });
     base.WriteVerbose(TaskVerboseStringHelper.GetDeleteObjectVerboseString(this.dataObject.Identity, base.DataSession, typeof(TDataObject)));
     try
     {
         if (this.ShouldSoftDeleteObject())
         {
             this.SaveSoftDeletedObject();
         }
         else
         {
             base.DataSession.Delete(this.dataObject);
         }
     }
     catch (DataSourceTransientException exception)
     {
         base.WriteError(exception, (ErrorCategory)1002, null);
     }
     finally
     {
         base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(base.DataSession));
     }
     TaskLogger.LogExit();
 }
コード例 #2
0
        protected override IConfigurable PrepareDataObject()
        {
            TaskLogger.LogEnter();
            IEnumerable <TDataObject> enumerable = null;

            base.WriteVerbose(TaskVerboseStringHelper.GetFindDataObjectsVerboseString(base.DataSession, typeof(TDataObject), this.InternalFilter, this.RootId, this.DeepSearch));
            try
            {
                enumerable = base.DataSession.FindPaged <TDataObject>(this.InternalFilter, this.RootId, this.DeepSearch, null, 0);
            }
            catch (DataSourceTransientException exception)
            {
                base.WriteError(exception, (ErrorCategory)1002, null);
            }
            finally
            {
                base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(base.DataSession));
            }
            if (enumerable == null)
            {
                base.WriteError(new ManagementObjectNotFoundException(Strings.ExceptionObjectNotFound(typeof(TDataObject).ToString())), (ErrorCategory)1003, null);
            }
            IConfigurable configurable = null;

            using (IEnumerator <TDataObject> enumerator = enumerable.GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    configurable = enumerator.Current;
                    if (enumerator.MoveNext())
                    {
                        base.WriteError(new ManagementObjectAmbiguousException(Strings.ExceptionObjectAmbiguous(typeof(TDataObject).ToString())), (ErrorCategory)1003, null);
                    }
                }
                else
                {
                    base.WriteError(new ManagementObjectNotFoundException(Strings.ExceptionObjectNotFound(typeof(TDataObject).ToString())), (ErrorCategory)1003, null);
                }
            }
            ADObject adobject = configurable as ADObject;

            if (adobject != null)
            {
                base.CurrentOrganizationId = adobject.OrganizationId;
            }
            if (base.CurrentObjectIndex == 0)
            {
                this.ResolveLocalSecondaryIdentities();
                if (base.HasErrors)
                {
                    return(null);
                }
            }
            TaskLogger.LogExit();
            return(configurable);
        }
コード例 #3
0
ファイル: GetTaskBase.cs プロジェクト: YHZX2013/exchange_diff
        protected virtual void WriteResult <T>(IEnumerable <T> dataObjects) where T : IConfigurable
        {
            TaskLogger.LogEnter(new object[]
            {
                dataObjects
            });
            if (dataObjects != null)
            {
                using (IEnumerator <T> enumerator = dataObjects.GetEnumerator())
                {
                    bool flag = false;
                    if (!base.Stopping)
                    {
                        if (!this.InternalResultSize.IsUnlimited)
                        {
                            if (this.InternalResultSize.Value < this.matchCount)
                            {
                                goto IL_163;
                            }
                        }
                        try
                        {
                            flag = enumerator.MoveNext();
                        }
                        finally
                        {
                            base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(base.DataSession));
                        }
                        base.WriteVerbose(Strings.VerboseWriteResultSize(this.InternalResultSize.ToString()));
                    }
IL_163:
                    while (!base.Stopping && (this.InternalResultSize.IsUnlimited || this.InternalResultSize.Value >= this.matchCount) && flag)
                    {
                        if (!this.InternalResultSize.IsUnlimited && this.InternalResultSize.Value == this.matchCount + 1U && this.pageInfo != null && this.pageInfo.MorePagesAvailable != null && this.pageInfo.MorePagesAvailable.Value)
                        {
                            this.WriteResult(enumerator.Current);
                        }
                        IConfigurable dataObject = enumerator.Current;
                        this.WriteResult(dataObject);
                        if (!base.Stopping && (this.InternalResultSize.IsUnlimited || this.InternalResultSize.Value >= this.matchCount))
                        {
                            if (this.pageInfo != null)
                            {
                                this.AdjustPageSize(this.pageInfo);
                            }
                            flag = enumerator.MoveNext();
                        }
                    }
                }
            }
            TaskLogger.LogExit();
        }
コード例 #4
0
        // Token: 0x060003DF RID: 991 RVA: 0x0000E768 File Offset: 0x0000C968
        protected override void WriteResult(IConfigurable dataObject)
        {
            TaskLogger.LogEnter();
            IDirectorySession directorySession = base.DataSession as IDirectorySession;
            IConfigurable     configurable     = dataObject;

            if (this.ReadFromDomainController.IsPresent && directorySession != null && directorySession.UseGlobalCatalog)
            {
                try
                {
                    directorySession.UseGlobalCatalog = false;
                    base.WriteVerbose(Strings.VerboseRereadADObject(dataObject.Identity.ToString(), typeof(TDataObject).Name, ((ADObjectId)dataObject.Identity).ToDNString()));
                    configurable = base.DataSession.Read <TDataObject>(dataObject.Identity);
                    base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(base.DataSession));
                }
                finally
                {
                    directorySession.UseGlobalCatalog = true;
                }
            }
            ADRecipient adrecipient = configurable as ADRecipient;

            if (adrecipient != null)
            {
                adrecipient.PopulateAcceptMessagesOnlyFromSendersOrMembers();
                adrecipient.PopulateBypassModerationFromSendersOrMembers();
                adrecipient.PopulateRejectMessagesFromSendersOrMembers();
                GetRecipientObjectTask <TIdentity, TDataObject> .SanitizeMailTips(adrecipient);
            }
            if (configurable == null)
            {
                base.WriteVerbose(Strings.VerboseFailedToReadFromDC(dataObject.Identity.ToString(), base.DataSession.Source));
            }
            else if (this.ShouldSkipObject(configurable))
            {
                base.WriteVerbose(Strings.VerboseSkipObject(configurable.Identity.ToString()));
            }
            else
            {
                IConfigurable configurable2 = this.ConvertDataObjectToPresentationObject(configurable);
                if (this.ShouldSkipPresentationObject(configurable2))
                {
                    base.WriteVerbose(Strings.VerboseSkipObject(configurable.Identity.ToString()));
                }
                else
                {
                    base.WriteResult(configurable2);
                }
            }
            TaskLogger.LogExit();
        }
コード例 #5
0
        protected IEnumerable <TObject> GetDataObjects <TObject>(IIdentityParameter id, IConfigDataProvider session, ObjectId rootID, OptionalIdentityData optionalData, out LocalizedString?notFoundReason) where TObject : IConfigurable, new()
        {
            if (id == null)
            {
                throw new ArgumentNullException("id");
            }
            notFoundReason = null;
            base.WriteVerbose(TaskVerboseStringHelper.GetFindByIdParameterVerboseString(id, session ?? this.DataSession, typeof(TObject), rootID));
            IEnumerable <TObject> objects;

            try
            {
                objects = id.GetObjects <TObject>(rootID, session ?? this.DataSession, optionalData, out notFoundReason);
            }
            finally
            {
                base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(session ?? this.DataSession));
            }
            return(objects);
        }
コード例 #6
0
        protected virtual void WriteResult()
        {
            object[]    array      = new object[1];
            object[]    array2     = array;
            int         num        = 0;
            TDataObject dataObject = this.DataObject;

            array2[num] = dataObject.Identity;
            TaskLogger.LogEnter(array);
            TDataObject dataObject2 = this.DataObject;

            base.WriteVerbose(TaskVerboseStringHelper.GetReadObjectVerboseString(dataObject2.Identity, base.DataSession, typeof(TDataObject)));
            IConfigurable configurable = null;

            try
            {
                using (TaskPerformanceData.ReadResult.StartRequestTimer())
                {
                    IConfigDataProvider dataSession = base.DataSession;
                    TDataObject         dataObject3 = this.DataObject;
                    configurable = dataSession.Read <TDataObject>(dataObject3.Identity);
                }
            }
            finally
            {
                base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(base.DataSession));
            }
            if (configurable == null)
            {
                TDataObject   dataObject4 = this.DataObject;
                Exception     exception   = new ManagementObjectNotFoundException(base.GetErrorMessageObjectNotFound(this.ResolveIdentityString(dataObject4.Identity), typeof(TDataObject).ToString(), (base.DataSession != null) ? base.DataSession.Source : null));
                ErrorCategory category    = (ErrorCategory)1003;
                TDataObject   dataObject5 = this.DataObject;
                base.WriteError(exception, category, dataObject5.Identity);
            }
            using (TaskPerformanceData.WriteResult.StartRequestTimer())
            {
                this.WriteResult(configurable);
            }
            TaskLogger.LogExit();
        }
コード例 #7
0
        // Token: 0x060005D8 RID: 1496 RVA: 0x000163E4 File Offset: 0x000145E4
        protected override IConfigurable ResolveDataObject()
        {
            TaskLogger.LogEnter();
            IConfigurable[] array = null;
            base.WriteVerbose(TaskVerboseStringHelper.GetFindDataObjectsVerboseString(base.DataSession, typeof(TDataObject), this.InternalFilter, this.RootId, this.DeepSearch));
            try
            {
                array = base.DataSession.Find <TDataObject>(this.InternalFilter, this.RootId, this.DeepSearch, null);
            }
            catch (DataSourceTransientException exception)
            {
                base.WriteError(exception, (ErrorCategory)1002, null);
            }
            finally
            {
                base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(base.DataSession));
            }
            if (array == null)
            {
                array = new IConfigurable[0];
            }
            IConfigurable result = null;

            switch (array.Length)
            {
            case 0:
                base.WriteError(new ManagementObjectNotFoundException(base.GetErrorMessageObjectNotFound(null, typeof(TDataObject).ToString(), (base.DataSession != null) ? base.DataSession.Source : null)), (ErrorCategory)1003, null);
                break;

            case 1:
                result = array[0];
                break;

            default:
                base.WriteError(new ManagementObjectAmbiguousException(Strings.ExceptionObjectAmbiguous(typeof(TDataObject).ToString())), (ErrorCategory)1003, null);
                break;
            }
            TaskLogger.LogExit();
            return(result);
        }
コード例 #8
0
ファイル: SetTaskBase.cs プロジェクト: YHZX2013/exchange_diff
 protected override void InternalProcessRecord()
 {
     TaskLogger.LogEnter(new object[]
     {
         this.DataObject
     });
     try
     {
         base.Validate(this.DataObject);
         if (base.HasErrors)
         {
             return;
         }
         TDataObject dataObject = this.DataObject;
         if (dataObject.Identity != null)
         {
             base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(this.DataObject, base.DataSession, typeof(TDataObject)));
         }
         using (TaskPerformanceData.SaveResult.StartRequestTimer())
         {
             base.DataSession.Save(this.DataObject);
         }
     }
     catch (DataSourceTransientException exception)
     {
         base.WriteError(exception, (ErrorCategory)1002, null);
     }
     finally
     {
         TDataObject dataObject2 = this.DataObject;
         if (dataObject2.Identity != null)
         {
             base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(base.DataSession));
         }
     }
     TaskLogger.LogExit();
 }