protected override void InternalProcessRecord()
 {
     TaskLogger.LogEnter(new object[]
     {
         this.Identity
     });
     if (this.Identity != null)
     {
         LocalizedString?     localizedString;
         IEnumerable <ADUser> dataObjects = base.GetDataObjects(this.Identity, base.OptionalIdentityData, out localizedString);
         this.WriteResult <ADUser>(dataObjects);
         if (!base.HasErrors && base.WriteObjectCount == 0U && this.validatorObjectCount == -1)
         {
             string    source    = (base.DataSession != null) ? base.DataSession.Source : null;
             Exception exception = new ManagementObjectNotFoundException(localizedString ?? base.GetErrorMessageObjectNotFound(this.Identity.ToString(), typeof(ADUser).ToString(), source));
             base.WriteError(exception, ErrorCategory.InvalidData, null);
         }
     }
     TaskLogger.LogExit();
 }
Example #2
0
        protected IConfigurable GetDataObject <TObject>(IIdentityParameter id, IConfigDataProvider session, ObjectId rootID, OptionalIdentityData optionalData, LocalizedString notFoundError, LocalizedString multipleFoundError) where TObject : IConfigurable, new()
        {
            IConfigurable         result          = null;
            LocalizedString?      localizedString = null;
            IEnumerable <TObject> objects         = id.GetObjects <TObject>(rootID, session, optionalData, out localizedString);

            using (IEnumerator <TObject> enumerator = objects.GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    result = enumerator.Current;
                    if (enumerator.MoveNext())
                    {
                        Exception innerException = new ManagementObjectAmbiguousException(multipleFoundError);
                        base.WriteError(new TaskInvalidOperationException(multipleFoundError, innerException), ExchangeErrorCategory.Client, this.Identity);
                    }
                }
                else
                {
                    LocalizedString message;
                    if (localizedString != null)
                    {
                        string          notFound         = notFoundError;
                        LocalizedString?localizedString2 = localizedString;
                        message = Strings.ErrorNotFoundWithReason(notFound, (localizedString2 != null) ? localizedString2.GetValueOrDefault() : null);
                    }
                    else
                    {
                        message = notFoundError;
                    }
                    Exception innerException = new ManagementObjectNotFoundException(message);
                    base.WriteError(new TaskInvalidOperationException(notFoundError, innerException), ExchangeErrorCategory.Client, this.Identity);
                }
            }
            return(result);
        }
        private static PartitionId ResolvePartitionId(AccountPartitionIdParameter accountPartitionIdParameter, Task.TaskErrorLoggingDelegate errorLogger)
        {
            PartitionId     result = null;
            LocalizedString?localizedString;
            IEnumerable <AccountPartition> objects = accountPartitionIdParameter.GetObjects <AccountPartition>(null, DirectorySessionFactory.Default.CreateTopologyConfigurationSession(ConsistencyMode.PartiallyConsistent, ADSessionSettings.SessionSettingsFactory.Default.FromRootOrgScopeSet(), 548, "ResolvePartitionId", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Deployment\\NewOrganizationTask.cs"), null, out localizedString);
            Exception ex = null;

            using (IEnumerator <AccountPartition> enumerator = objects.GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    AccountPartition accountPartition = enumerator.Current;
                    if (!accountPartition.TryGetPartitionId(out result))
                    {
                        ex = new NotSupportedException(Strings.ErrorCorruptedPartition(accountPartitionIdParameter.ToString()));
                    }
                    else if (enumerator.MoveNext())
                    {
                        ex = new ManagementObjectAmbiguousException(Strings.ErrorObjectNotUnique(accountPartitionIdParameter.ToString()));
                    }
                    if (accountPartition.IsSecondary)
                    {
                        ex = new ArgumentException(Strings.ErrorSecondaryPartitionNotEnabledForProvisioning(accountPartitionIdParameter.RawIdentity));
                    }
                }
                else
                {
                    ex = new ManagementObjectNotFoundException(localizedString ?? Strings.ErrorObjectNotFound(accountPartitionIdParameter.ToString()));
                }
            }
            if (ex != null)
            {
                errorLogger(ex, ErrorCategory.InvalidArgument, accountPartitionIdParameter);
            }
            return(result);
        }