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); }