internal virtual IEnumerable <T> GetObjectsInOrganization <T>(string identityString, ADObjectId rootId, IDirectorySession session, OptionalIdentityData optionalData) where T : IConfigurable, new()
        {
            if (string.IsNullOrEmpty(identityString))
            {
                throw new ArgumentException("IdentityString must contain a non-empty value", "identityString");
            }
            EnumerableWrapper <T> wrapper = EnumerableWrapper <T> .GetWrapper(this.PerformPrimarySearch <T>(this.GetNameMatchingFilter(identityString, false), rootId, session, true, optionalData));

            if (!wrapper.HasElements() && this.IsWildcardDefined(identityString))
            {
                wrapper = EnumerableWrapper <T> .GetWrapper(this.PerformPrimarySearch <T>(this.GetNameMatchingFilter(identityString, true), rootId, session, true, optionalData));
            }
            return(wrapper);
        }
        // Token: 0x06000C96 RID: 3222 RVA: 0x00027884 File Offset: 0x00025A84
        IEnumerable <T> IIdentityParameter.GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }
            if (null == this.CallAnsweringRuleId)
            {
                throw new InvalidOperationException(Strings.ErrorOperationOnInvalidObject);
            }
            IConfigurable[] array = session.Find <T>(null, this.CallAnsweringRuleId, false, null);
            if (array == null || array.Length == 0)
            {
                notFoundReason = new LocalizedString?(Strings.ErrorManagementObjectNotFound(this.ToString()));
                return(new T[0]);
            }
            notFoundReason = null;
            T[] array2 = new T[array.Length];
            int num    = 0;

            foreach (IConfigurable configurable in array)
            {
                array2[num++] = (T)((object)configurable);
            }
            return(array2);
        }
        IEnumerable <T> IIdentityParameter.GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }
            if (null == this.InternalMailboxFolderId)
            {
                throw new InvalidOperationException(Strings.ErrorOperationOnInvalidObject);
            }
            if (!(session is MailboxFolderDataProviderBase))
            {
                throw new NotSupportedException("session: " + session.GetType().FullName);
            }
            if (optionalData != null && optionalData.AdditionalFilter != null)
            {
                throw new NotSupportedException("Supplying Additional Filters is not currently supported by this IdParameter.");
            }
            T t = (T)((object)session.Read <T>(this.InternalMailboxFolderId));

            if (t == null)
            {
                notFoundReason = new LocalizedString?(Strings.ErrorManagementObjectNotFound(this.ToString()));
                return(new T[0]);
            }
            notFoundReason = null;
            return(new T[]
            {
                t
            });
        }
        internal override IEnumerable <T> GetObjects <T>(ADObjectId rootId, IDirectorySession session, IDirectorySession subTreeSession, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            TaskLogger.LogEnter();
            notFoundReason = null;
            IEnumerable <T> result = new List <T>();

            if (typeof(Database).IsAssignableFrom(typeof(T)) && !string.IsNullOrEmpty(base.RawIdentity))
            {
                LegacyDN legacyDN = null;
                if (LegacyDN.TryParse(base.RawIdentity, out legacyDN))
                {
                    QueryFilter filter = new ComparisonFilter(ComparisonOperator.Equal, DatabaseSchema.ExchangeLegacyDN, base.RawIdentity);
                    result = base.PerformPrimarySearch <T>(filter, rootId, session, true, optionalData);
                }
            }
            else
            {
                result = base.GetObjects <T>(rootId, session, subTreeSession, optionalData, out notFoundReason);
            }
            TaskLogger.LogExit();
            return(result);
        }
Beispiel #5
0
        // Token: 0x06000A29 RID: 2601 RVA: 0x00021A8C File Offset: 0x0001FC8C
        internal override IEnumerable <T> GetObjects <T>(ADObjectId rootId, IDirectorySession session, IDirectorySession subTreeSession, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            IEnumerable <T> enumerable = null;
            List <T>        list       = new List <T>();

            notFoundReason = null;
            int num  = 0;
            int num2 = 0;

            if (base.InternalADObjectId != null)
            {
                enumerable = base.GetADObjectIdObjects <T>(base.InternalADObjectId, rootId, subTreeSession, optionalData);
            }
            EnumerableWrapper <T> wrapper = EnumerableWrapper <T> .GetWrapper(enumerable);

            if (wrapper.HasElements())
            {
                using (IEnumerator <T> enumerator = wrapper.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        T item = enumerator.Current;
                        if (ServerIdParameter.HasRole((ADObjectId)item.Identity, this.RoleRestriction, (IConfigDataProvider)session) || (this.AllowLegacy && !ServerIdParameter.HasRole((ADObjectId)item.Identity, ServerRole.All, (IConfigDataProvider)session)))
                        {
                            list.Add(item);
                        }
                        else if (!ServerIdParameter.HasRole((ADObjectId)item.Identity, ServerRole.All, (IConfigDataProvider)session))
                        {
                            num2++;
                        }
                        else
                        {
                            num++;
                        }
                    }
                    goto IL_21B;
                }
            }
            if (!string.IsNullOrEmpty(this.CommonName) && this.ServerId != null)
            {
                ADObjectId[] matchingIdentities = this.ServerId.GetMatchingIdentities((IConfigDataProvider)session);
                foreach (ADObjectId rootId2 in matchingIdentities)
                {
                    enumerable = base.GetObjectsInOrganization <T>(this.CommonName, rootId2, session, optionalData);
                    foreach (T item2 in enumerable)
                    {
                        if (ServerIdParameter.HasRole((ADObjectId)item2.Identity, this.RoleRestriction, (IConfigDataProvider)session) || (this.AllowLegacy && !ServerIdParameter.HasRole((ADObjectId)item2.Identity, ServerRole.All, (IConfigDataProvider)session)))
                        {
                            list.Add(item2);
                        }
                        else if (!ServerIdParameter.HasRole((ADObjectId)item2.Identity, ServerRole.All, (IConfigDataProvider)session))
                        {
                            num2++;
                        }
                        else
                        {
                            num++;
                        }
                    }
                }
            }
IL_21B:
            if (list.Count == 0)
            {
                if (num2 != 0)
                {
                    notFoundReason = new LocalizedString?(Strings.ExceptionLegacyObjects(this.ToString()));
                }
                if (num != 0)
                {
                    notFoundReason = new LocalizedString?(Strings.ExceptionRoleNotFoundObjects(this.ToString()));
                }
            }
            return(list);
        }
Beispiel #6
0
        // Token: 0x060002D4 RID: 724 RVA: 0x0000B448 File Offset: 0x00009648
        private IEnumerable <TResult> ResolveIdList <TObject, TResult>(IEnumerable idParameters, IConfigDataProvider session, ObjectId rootId, OptionalIdentityData optionalData, ExchangeErrorCategory errorCategory, Func <IIdentityParameter, LocalizedString> parameterToNotFoundError, Func <IIdentityParameter, LocalizedString> parameterToMultipleFoundError, Func <IConfigurable, TResult> convertToResult, Func <IConfigurable, IConfigurable> validateObject) where TObject : IConfigurable, new()
        {
            Func <IConfigurable, TResult>            func       = null;
            Func <IConfigurable, IConfigurable>      func2      = null;
            Dictionary <TResult, IIdentityParameter> dictionary = new Dictionary <TResult, IIdentityParameter>();

            if (idParameters != null)
            {
                if (convertToResult == null)
                {
                    if (func == null)
                    {
                        func = ((IConfigurable obj) => (TResult)((object)obj.Identity));
                    }
                    convertToResult = func;
                }
                if (validateObject == null)
                {
                    if (func2 == null)
                    {
                        func2 = ((IConfigurable obj) => obj);
                    }
                    validateObject = func2;
                }
                foreach (object obj2 in idParameters)
                {
                    IIdentityParameter identityParameter  = (IIdentityParameter)obj2;
                    LocalizedString?   notFoundError      = (parameterToNotFoundError == null) ? null : new LocalizedString?(parameterToNotFoundError(identityParameter));
                    LocalizedString?   multipleFoundError = (parameterToMultipleFoundError == null) ? null : new LocalizedString?(parameterToMultipleFoundError(identityParameter));
                    IConfigurable      arg = this.GetDataObject <TObject>(identityParameter, session, rootId, notFoundError, multipleFoundError);
                    arg = validateObject(arg);
                    TResult tresult = convertToResult(arg);
                    if (dictionary.ContainsKey(tresult))
                    {
                        throw new ManagementObjectDuplicateException(Strings.ErrorDuplicateManagementObjectFound(dictionary[tresult], identityParameter, tresult));
                    }
                    dictionary.Add(tresult, identityParameter);
                }
            }
            return(dictionary.Keys);
        }
Beispiel #7
0
 public IEnumerable <T> GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason) where T : IConfigurable, new()
 {
     notFoundReason = null;
     return(session.FindPaged <T>(null, rootId, false, null, 0));
 }
Beispiel #8
0
        internal virtual IEnumerable <T> GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason) where T : IConfigurable, new()
        {
            TaskLogger.LogEnter();
            notFoundReason = null;
            IEnumerable <AddressBookBase> enumerable = new List <AddressBookBase>();

            try
            {
                if (typeof(T) != typeof(AddressBookBase))
                {
                    throw new ArgumentException(Strings.ErrorInvalidType(typeof(T).Name), "type");
                }
                if (session == null)
                {
                    throw new ArgumentNullException("session");
                }
                IList <IEnumerable <AddressBookBase> > list = new List <IEnumerable <AddressBookBase> >();
                if (this.addressListIdParameter != null)
                {
                    list.Add(this.addressListIdParameter.GetObjects <AddressBookBase>(rootId, session));
                }
                if (this.globalAddressListIdParameter != null)
                {
                    list.Add(this.globalAddressListIdParameter.GetObjects <AddressBookBase>(rootId, session));
                }
                enumerable = EnumerableWrapper <AddressBookBase> .GetWrapper(list);
            }
            finally
            {
                TaskLogger.LogExit();
            }
            return((IEnumerable <T>)enumerable);
        }
Beispiel #9
0
 IEnumerable <T> IIdentityParameter.GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
 {
     return(this.GetObjects <T>(rootId, session, optionalData, out notFoundReason));
 }
        internal override IEnumerable <T> GetObjects <T>(ADObjectId rootId, IDirectorySession session, IDirectorySession subTreeSession, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            TaskLogger.LogEnter();
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }
            if (!(session is IConfigurationSession))
            {
                throw new ArgumentException(Strings.ErrorInvalidType(session.GetType().Name), "session");
            }
            if (((typeof(T) == typeof(ADOrganizationalUnit) && session.UseConfigNC) || (typeof(T) == typeof(ExchangeConfigurationUnit) && !session.UseConfigNC)) && !Environment.StackTrace.Contains("Microsoft.Exchange.Management.Deployment.OrganizationTaskHelper.GetExchangeConfigUnitFromOrganizationId"))
            {
                throw new ArgumentException("Session is using the wrong Naming Context for the desired search");
            }
            notFoundReason = null;
            EnumerableWrapper <T> result = EnumerableWrapper <T> .Empty;

            if (base.IsMultitenancyEnabled())
            {
                if (this.IsWildcardDefined(base.RawIdentity))
                {
                    if (null == this.AccountPartition)
                    {
                        notFoundReason = new LocalizedString?(Strings.ErrorOrganizationWildcard);
                        return(result);
                    }
                    IEnumerable <ExchangeConfigurationUnit> configurationUnits = this.GetConfigurationUnits((IConfigurationSession)session, base.RawIdentity);
                    return(EnumerableWrapper <T> .GetWrapper((IEnumerable <T>) configurationUnits, this.GetEnumerableFilter <T>()));
                }
                else
                {
                    OrganizationId organizationId = this.ResolveOrganizationId(session.SessionSettings.CurrentOrganizationId);
                    if (!OrganizationId.ForestWideOrgId.Equals(organizationId))
                    {
                        ADSessionSettings adsessionSettings = ADSessionSettings.FromCustomScopeSet(ScopeSet.ResolveUnderScope(organizationId, session.SessionSettings.ScopeSet), session.SessionSettings.RootOrgId, organizationId, session.SessionSettings.ExecutingUserOrganizationId, true);
                        adsessionSettings.TenantConsistencyMode = TenantConsistencyMode.IncludeRetiredTenants;
                        bool flag = TaskHelper.ShouldPassDomainControllerToSession(session.DomainController, adsessionSettings);
                        ITenantConfigurationSession tenantConfigurationSession = DirectorySessionFactory.Default.CreateTenantConfigurationSession(flag ? session.DomainController : null, session.ReadOnly, session.ConsistencyMode, flag ? session.NetworkCredential : null, adsessionSettings, 314, "GetObjects", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\ObjectModel\\IdentityParameter\\organizationidparameter.cs");
                        tenantConfigurationSession.UseConfigNC      = session.UseConfigNC;
                        tenantConfigurationSession.UseGlobalCatalog = session.UseGlobalCatalog;
                        if (typeof(ExchangeConfigurationUnit) == typeof(T) && organizationId.ConfigurationUnit != null)
                        {
                            List <ExchangeConfigurationUnit> list = new List <ExchangeConfigurationUnit>();
                            ExchangeConfigurationUnit        exchangeConfigurationUnit = tenantConfigurationSession.Read <ExchangeConfigurationUnit>(organizationId.ConfigurationUnit);
                            if (exchangeConfigurationUnit != null)
                            {
                                list.Add(exchangeConfigurationUnit);
                                result = EnumerableWrapper <T> .GetWrapper((IEnumerable <T>) list, this.GetEnumerableFilter <T>());
                            }
                        }
                        else if (organizationId.OrganizationalUnit != null)
                        {
                            List <ADOrganizationalUnit> list2 = new List <ADOrganizationalUnit>();
                            ADOrganizationalUnit        adorganizationalUnit = tenantConfigurationSession.Read <ADOrganizationalUnit>(organizationId.OrganizationalUnit);
                            if (adorganizationalUnit != null)
                            {
                                list2.Add(adorganizationalUnit);
                                result = EnumerableWrapper <T> .GetWrapper((IEnumerable <T>) list2, this.GetEnumerableFilter <T>());
                            }
                        }
                    }
                }
            }
            TaskLogger.LogExit();
            return(result);
        }
Beispiel #11
0
        // Token: 0x06000CBF RID: 3263 RVA: 0x00027CD0 File Offset: 0x00025ED0
        internal IEnumerable <T> GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason) where T : IConfigurable, new()
        {
            if (optionalData != null && optionalData.AdditionalFilter != null)
            {
                throw new NotSupportedException("Supplying Additional Filters is not currently supported by this IdParameter.");
            }
            notFoundReason = null;
            T t = (T)((object)session.Read <T>(this));

            T[] result;
            if (t != null)
            {
                result = new T[]
                {
                    t
                };
            }
            else
            {
                result = new T[0];
            }
            return(result);
        }
        internal override IEnumerable <T> GetObjects <T>(ADObjectId rootId, IDirectorySession session, IDirectorySession subTreeSession, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            IEnumerable <T>       objects = base.GetObjects <T>(rootId, session, subTreeSession, optionalData, out notFoundReason);
            EnumerableWrapper <T> wrapper = EnumerableWrapper <T> .GetWrapper(objects);

            if (!wrapper.HasElements())
            {
                LocalizedString value;
                if (((IConfigDataProvider)session).Source != null)
                {
                    value = Strings.ErrorManagementObjectNotFoundWithSource(this.ToString(), ((IConfigDataProvider)session).Source);
                }
                else
                {
                    value = Strings.ErrorManagementObjectNotFound(this.ToString());
                }
                if (notFoundReason != null)
                {
                    string          notFound        = value;
                    LocalizedString?localizedString = notFoundReason;
                    value = Strings.ErrorNotFoundWithReason(notFound, (localizedString != null) ? localizedString.GetValueOrDefault() : null);
                }
                notFoundReason = new LocalizedString?(Strings.ErrorRoleAssignmentNotFound(value));
            }
            return(objects);
        }
Beispiel #13
0
        private IEnumerable <T> GetMultitenancyObjects <T>(string identityString, ADObjectId rootId, IDirectorySession session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason) where T : IConfigurable, new()
        {
            if (identityString == null)
            {
                throw new ArgumentNullException("rawIdentity");
            }
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }
            notFoundReason = null;
            string text;
            string identityString2;

            if (!this.IsMultitenancyEnabled() || !this.TryParseOrganizationName(out text, out identityString2))
            {
                return(EnumerableWrapper <T> .Empty);
            }
            IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(session.DomainController, true, session.ConsistencyMode, session.NetworkCredential, session.SessionSettings, 1403, "GetMultitenancyObjects", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\ObjectModel\\BaseTasks\\ADIdParameter.cs");

            tenantOrTopologyConfigurationSession.UseConfigNC          = true;
            tenantOrTopologyConfigurationSession.LinkResolutionServer = session.LinkResolutionServer;
            if (!string.IsNullOrEmpty(session.DomainController) && tenantOrTopologyConfigurationSession.SessionSettings.CurrentOrganizationId.Equals(OrganizationId.ForestWideOrgId) && tenantOrTopologyConfigurationSession.SessionSettings.PartitionId.ForestFQDN != TopologyProvider.LocalForestFqdn)
            {
                return(EnumerableWrapper <T> .Empty);
            }
            if (this.IsWildcardDefined(text))
            {
                notFoundReason = new LocalizedString?(Strings.ErrorOrganizationWildcard);
                return(EnumerableWrapper <T> .Empty);
            }
            OrganizationId organizationId;

            if (this.orgIdResolved)
            {
                organizationId = this.resolvedOrganizationId;
            }
            else
            {
                organizationId = this.GetOrganizationId(session.SessionSettings.CurrentOrganizationId, text);
            }
            IDirectorySession directorySession = session;

            if (organizationId != null && !OrganizationId.ForestWideOrgId.Equals(organizationId) && session.SessionSettings != null && session.SessionSettings.CurrentOrganizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                directorySession = TaskHelper.UnderscopeSessionToOrganization(session, organizationId, true);
            }
            if (organizationId != null && !OrganizationId.ForestWideOrgId.Equals(organizationId) && organizationId.Equals(directorySession.SessionSettings.CurrentOrganizationId))
            {
                IEnumerable <T> objectsInOrganization = this.GetObjectsInOrganization <T>(identityString2, rootId, directorySession, optionalData);
                return(EnumerableWrapper <T> .GetWrapper(objectsInOrganization));
            }
            return(EnumerableWrapper <T> .Empty);
        }
Beispiel #14
0
        internal IEnumerable <T> PerformPrimarySearch <T>(QueryFilter filter, ADObjectId rootId, IDirectorySession session, bool deepSearch, OptionalIdentityData optionalData) where T : IConfigurable, new()
        {
            if (rootId != null && rootId.IsRelativeDn)
            {
                throw new ArgumentException("RootId cannot be a relative DN", "rootId");
            }
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }
            if (optionalData == null)
            {
                optionalData = new OptionalIdentityData();
            }
            if (session.ConfigScope == ConfigScopes.TenantLocal && rootId == null && !this.IsNullScopedSession(session))
            {
                if (optionalData.ConfigurationContainerRdn != null)
                {
                    rootId = this.CreateContainerRootId(session, optionalData.ConfigurationContainerRdn);
                }
                else if (optionalData.RootOrgDomainContainerId != null && this.IsForestWideScopedSession(session))
                {
                    rootId = optionalData.RootOrgDomainContainerId;
                }
            }
            QueryFilter filter2 = QueryFilter.AndTogether(new QueryFilter[]
            {
                filter,
                this.AdditionalQueryFilter,
                optionalData.AdditionalFilter
            });
            IEnumerable <T> enumerable = this.PerformSearch <T>(filter2, rootId, session, deepSearch);

            return(EnumerableWrapper <T> .GetWrapper(enumerable, this.GetEnumerableFilter <T>()));
        }
Beispiel #15
0
 // Token: 0x060002D2 RID: 722 RVA: 0x0000B360 File Offset: 0x00009560
 protected MultiValuedProperty <TResult> ResolveIdParameterCollection <TIdParameter, TObject, TResult>(IEnumerable <TIdParameter> idParameters, IConfigDataProvider session, ObjectId rootId, OptionalIdentityData optionalData) where TIdParameter : IIdentityParameter where TObject : IConfigurable, new()
 {
     return(this.ResolveIdParameterCollection <TIdParameter, TObject, TResult>(idParameters, session, rootId, optionalData, (ExchangeErrorCategory)0, null, null, null, null));
 }
Beispiel #16
0
 // Token: 0x060009B2 RID: 2482 RVA: 0x00021087 File Offset: 0x0001F287
 public IEnumerable <T> GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason) where T : IConfigurable, new()
 {
     throw new NotImplementedException();
 }
Beispiel #17
0
        // Token: 0x060002D3 RID: 723 RVA: 0x0000B380 File Offset: 0x00009580
        protected MultiValuedProperty <TResult> ResolveIdParameterCollection <TIdParameter, TObject, TResult>(IEnumerable <TIdParameter> idParameters, IConfigDataProvider session, ObjectId rootId, OptionalIdentityData optionalData, ExchangeErrorCategory errorCategory, Func <IIdentityParameter, LocalizedString> parameterToNotFoundError, Func <IIdentityParameter, LocalizedString> parameterToMultipleFoundError, Func <IConfigurable, TResult> convertToResult, Func <IConfigurable, IConfigurable> validateObject) where TIdParameter : IIdentityParameter where TObject : IConfigurable, new()
        {
            MultiValuedProperty <TIdParameter> multiValuedProperty = idParameters as MultiValuedProperty <TIdParameter>;
            MultiValuedProperty <TResult>      result;

            if (multiValuedProperty != null && multiValuedProperty.IsChangesOnlyCopy)
            {
                Hashtable hashtable = new Hashtable();
                if (multiValuedProperty.Added.Length > 0)
                {
                    IEnumerable <TResult> value = this.ResolveIdList <TObject, TResult>(multiValuedProperty.Added, session, rootId, optionalData, errorCategory, parameterToNotFoundError, parameterToMultipleFoundError, convertToResult, validateObject);
                    hashtable.Add("Add", value);
                }
                if (multiValuedProperty.Removed.Length > 0)
                {
                    IEnumerable <TResult> value2 = this.ResolveIdList <TObject, TResult>(multiValuedProperty.Removed, session, rootId, optionalData, errorCategory, parameterToNotFoundError, parameterToMultipleFoundError, convertToResult, null);
                    hashtable.Add("Remove", value2);
                }
                result = new MultiValuedProperty <TResult>(hashtable);
            }
            else
            {
                IEnumerable <TResult> value3 = this.ResolveIdList <TObject, TResult>(idParameters, session, rootId, optionalData, errorCategory, parameterToNotFoundError, parameterToMultipleFoundError, convertToResult, validateObject);
                result = new MultiValuedProperty <TResult>(value3);
            }
            return(result);
        }
Beispiel #18
0
 public IEnumerable <T> GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason) where T : IConfigurable, new()
 {
     notFoundReason = null;
     if (this.IsUniqueIdentity)
     {
         return(new List <T>(1)
         {
             (T)((object)session.Read <T>(this.sendAddressIdentity))
         });
     }
     return(session.FindPaged <T>(null, rootId, false, null, 0));
 }
Beispiel #19
0
        // Token: 0x060002D5 RID: 725 RVA: 0x0000B580 File Offset: 0x00009780
        protected IConfigurable GetDataObject <TObject>(IIdentityParameter id, IConfigDataProvider session, ObjectId rootID, OptionalIdentityData optionalData, LocalizedString?notFoundError, LocalizedString?multipleFoundError, ExchangeErrorCategory errorCategory) where TObject : IConfigurable, new()
        {
            IConfigurable         result = null;
            LocalizedString?      localizedString;
            IEnumerable <TObject> dataObjects = this.GetDataObjects <TObject>(id, session, rootID, optionalData, out localizedString);
            Exception             ex          = null;

            using (IEnumerator <TObject> enumerator = dataObjects.GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    result = enumerator.Current;
                    if (enumerator.MoveNext())
                    {
                        ex = new ManagementObjectAmbiguousException(multipleFoundError ?? Strings.ErrorManagementObjectAmbiguous(id.ToString()));
                    }
                }
                else if (notFoundError != null)
                {
                    LocalizedString message;
                    if (localizedString != null)
                    {
                        LocalizedString?localizedString2 = notFoundError;
                        string          notFound         = (localizedString2 != null) ? localizedString2.GetValueOrDefault() : null;
                        LocalizedString?localizedString3 = localizedString;
                        message = Strings.ErrorNotFoundWithReason(notFound, (localizedString3 != null) ? localizedString3.GetValueOrDefault() : null);
                    }
                    else
                    {
                        message = notFoundError.Value;
                    }
                    ex = new ManagementObjectNotFoundException(message);
                }
                else
                {
                    ex = new ManagementObjectNotFoundException(localizedString ?? this.GetErrorMessageObjectNotFound(id.ToString(), typeof(TObject).ToString(), (this.DataSession != null) ? this.DataSession.Source : null));
                }
            }
            if (ex != null)
            {
                if (errorCategory != (ExchangeErrorCategory)0)
                {
                    RecipientTaskHelper.SetExceptionErrorCategory(ex, errorCategory);
                }
                throw ex;
            }
            return(result);
        }
Beispiel #20
0
        // Token: 0x06000AD6 RID: 2774 RVA: 0x000232D4 File Offset: 0x000214D4
        internal override IEnumerable <T> GetObjectsInOrganization <T>(string identityString, ADObjectId rootId, IDirectorySession session, OptionalIdentityData optionalData)
        {
            EnumerableWrapper <T> wrapper = EnumerableWrapper <T> .GetWrapper(base.GetObjectsInOrganization <T>(identityString, rootId, session, optionalData));

            if (wrapper.HasElements())
            {
                return(wrapper);
            }
            int num = identityString.IndexOf('\\');

            if (0 < num && identityString.Length > num + 1)
            {
                string propertyValue       = identityString.Substring(num + 1);
                string unescapedCommonName = identityString.Substring(0, num);
                OptionalIdentityData optionalIdentityData = null;
                if (optionalData != null)
                {
                    optionalIdentityData = optionalData.Clone();
                    optionalIdentityData.ConfigurationContainerRdn = null;
                }
                ADObjectId  adobjectId = (rootId == null) ? MessageClassificationIdParameter.DefaultRoot((IConfigDataProvider)session) : rootId;
                ADObjectId  childId    = adobjectId.Parent.GetChildId(unescapedCommonName);
                QueryFilter filter     = new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Name, propertyValue);
                return(base.PerformPrimarySearch <T>(filter, childId, session, false, optionalIdentityData));
            }
            return(new T[0]);
        }
        internal override IEnumerable <T> GetObjects <T>(ADObjectId rootId, IDirectorySession session, IDirectorySession subTreeSession, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            if (typeof(T) != typeof(ReducedRecipient))
            {
                throw new ArgumentException(Strings.ErrorInvalidType(typeof(T).Name), "type");
            }
            OptionalIdentityData optionalIdentityData;

            if (optionalData == null)
            {
                optionalIdentityData = new OptionalIdentityData();
            }
            else
            {
                optionalIdentityData = optionalData.Clone();
            }
            RoleGroupIdParameter @object = new RoleGroupIdParameter(base.RawIdentity);
            ADGroup object2 = base.GetObject <ADGroup>(rootId, session, subTreeSession, optionalIdentityData, new RecipientIdParameter.GetObjectsDelegate <ADGroup>(@object.GetObjects <ADGroup>), out notFoundReason);

            if (object2 == null)
            {
                return(EnumerableWrapper <T> .Empty);
            }
            optionalIdentityData.RootOrgDomainContainerId = null;
            IDirectorySession directorySession        = TaskHelper.UnderscopeSessionToOrganization(session, object2.OrganizationId, true);
            IDirectorySession reducedRecipientSession = DirectorySessionFactory.Default.GetReducedRecipientSession((IRecipientSession)directorySession, 160, "GetObjects", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\ObjectModel\\IdentityParameter\\RecipientParameters\\RoleGroupMemberIdParameter.cs");
            QueryFilter       filter = new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.MemberOfGroup, object2.Id);

            return(base.PerformPrimarySearch <T>(filter, null, reducedRecipientSession, true, optionalIdentityData));
        }
Beispiel #22
0
        // Token: 0x06000AB2 RID: 2738 RVA: 0x00022EF8 File Offset: 0x000210F8
        IEnumerable <T> IIdentityParameter.GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            if (this.IsFullyQualified)
            {
                notFoundReason = new LocalizedString?(Strings.ErrorManagementObjectNotFound(this.ToString()));
            }
            else
            {
                notFoundReason = null;
            }
            QueryFilter queryFilter = this.GetQueryFilter(session);

            if (optionalData != null && optionalData.AdditionalFilter != null)
            {
                queryFilter = QueryFilter.AndTogether(new QueryFilter[]
                {
                    queryFilter,
                    optionalData.AdditionalFilter
                });
            }
            return(session.FindPaged <T>(queryFilter, rootId, false, null, 0));
        }
Beispiel #23
0
        internal override IEnumerable <T> GetObjects <T>(ADObjectId rootId, IDirectorySession session, IDirectorySession subTreeSession, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            if (typeof(T) != typeof(ExtendedRight))
            {
                throw new ArgumentException(Strings.ErrorInvalidType(typeof(T).Name), "type");
            }
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }
            if (ExtendedRightIdParameter.AllExtendedRights == null)
            {
                ADPagedReader <ExtendedRight> adpagedReader = ((ITopologyConfigurationSession)session).GetAllExtendedRights();
                ExtendedRightIdParameter.allExtendedRights = adpagedReader.ReadAllPages();
            }
            base.GetObjects <T>(rootId, session, subTreeSession, optionalData, out notFoundReason);
            List <T> list = new List <T>();

            foreach (ExtendedRight extendedRight in ExtendedRightIdParameter.AllExtendedRights)
            {
                if (ADObjectId.Equals(extendedRight.Id, base.InternalADObjectId) || (base.InternalADObjectId != null && base.InternalADObjectId.ObjectGuid == extendedRight.RightsGuid) || (base.RawIdentity != null && (string.Compare(extendedRight.DisplayName, base.RawIdentity, StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(extendedRight.Name, base.RawIdentity, StringComparison.OrdinalIgnoreCase) == 0)))
                {
                    list.Add((T)((object)extendedRight));
                    break;
                }
            }
            return(list);
        }
Beispiel #24
0
 // Token: 0x060002C0 RID: 704 RVA: 0x0000B00F File Offset: 0x0000920F
 protected IEnumerable <TDataObject> GetDataObjects(IIdentityParameter id, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
 {
     return(this.GetDataObjects <TDataObject>(id, this.DataSession, this.RootId, optionalData, out notFoundReason));
 }
        // Token: 0x06000C70 RID: 3184 RVA: 0x00027120 File Offset: 0x00025320
        internal override IEnumerable <T> GetObjects <T>(ADObjectId rootId, IDirectorySession session, IDirectorySession subTreeSession, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
        {
            ITopologyConfigurationSession topologyConfigurationSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(session.DomainController, true, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromRootOrgScopeSet(), 104, "GetObjects", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\ObjectModel\\IdentityParameter\\SystemAttendantIdParameter.cs");
            IEnumerable <Server>          objects = base.GetObjects <Server>(rootId, topologyConfigurationSession, topologyConfigurationSession, null, out notFoundReason);
            List <T> list = new List <T>();

            foreach (Server server in objects)
            {
                ADObjectId  childId = server.Id.GetChildId("Microsoft System Attendant");
                QueryFilter filter  = new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.ObjectCategory, "exchangeAdminService");
                IEnumerable <ADRecipient> enumerable = base.PerformPrimarySearch <ADRecipient>(filter, childId, session, true, optionalData);
                int num = 0;
                foreach (ADRecipient adrecipient in enumerable)
                {
                    list.Add((T)((object)adrecipient));
                    num++;
                }
            }
            return(list);
        }
Beispiel #26
0
 // Token: 0x060002C3 RID: 707 RVA: 0x0000B05C File Offset: 0x0000925C
 protected IConfigurable GetDataObject <TObject>(IIdentityParameter id, IConfigDataProvider session, ObjectId rootID, OptionalIdentityData optionalData, LocalizedString?notFoundError, LocalizedString?multipleFoundError) where TObject : IConfigurable, new()
 {
     return(this.GetDataObject <TObject>(id, session, rootID, optionalData, notFoundError, multipleFoundError, (ExchangeErrorCategory)0));
 }
 // Token: 0x060009DE RID: 2526 RVA: 0x000214F0 File Offset: 0x0001F6F0
 internal override IEnumerable <T> GetObjects <T>(ADObjectId rootId, IDirectorySession session, IDirectorySession subTreeSession, OptionalIdentityData optionalData, out LocalizedString?notFoundReason)
 {
     if (typeof(T) != typeof(HostedConnectionFilterPolicy))
     {
         throw new ArgumentException(Strings.ErrorInvalidType(typeof(T).Name), "type");
     }
     return(base.GetObjects <T>(rootId, session, subTreeSession, optionalData, out notFoundReason));
 }
Beispiel #28
0
        // Token: 0x060002C5 RID: 709 RVA: 0x0000B08C File Offset: 0x0000928C
        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);
        }
        public IEnumerable <T> GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason) where T : IConfigurable, new()
        {
            notFoundReason = null;
            AggregationSubscriptionQueryFilter filter = new AggregationSubscriptionQueryFilter(this);

            return(session.FindPaged <T>(filter, rootId, false, null, 0));
        }
Beispiel #30
0
        internal IEnumerable <T> GetADObjectIdObjects <T>(ADObjectId identity, ADObjectId rootId, IDirectorySession session, OptionalIdentityData optionalData) where T : IConfigurable, new()
        {
            if (identity != null)
            {
                OrganizationId organizationId;
                if (this.InternalADObjectId != null && this.InternalADObjectId.Equals(identity) && this.orgIdResolved)
                {
                    organizationId = this.resolvedOrganizationId;
                }
                else
                {
                    organizationId = this.GetOrganizationId(session.SessionSettings.CurrentOrganizationId, identity);
                }
                IDirectorySession directorySession = session;
                if (organizationId != null)
                {
                    directorySession = TaskHelper.UnderscopeSessionToOrganization(session, organizationId, true);
                }
                if (session.ConfigScope == ConfigScopes.TenantSubTree)
                {
                    directorySession = ADSession.RescopeSessionToTenantSubTree(directorySession);
                }
                if (directorySession.IsRootIdWithinScope <T>(rootId))
                {
                    if (ADObjectId.Equals(identity, identity.DomainId) && !typeof(OrganizationalUnitIdParameterBase).IsAssignableFrom(base.GetType()))
                    {
                        if (!typeof(ADRawEntryIdParameter).IsAssignableFrom(base.GetType()))
                        {
                            goto IL_15F;
                        }
                    }
                    try
                    {
                        ADObjectId rootId2 = rootId;
                        bool       enforceContainerizedScoping = directorySession.EnforceContainerizedScoping;
                        bool       flag = directorySession is IRecipientSession;
                        if (rootId == null && !string.IsNullOrEmpty(identity.DistinguishedName))
                        {
                            if (!ADObjectId.Equals(identity, identity.DomainId) && directorySession.IsRootIdWithinScope <T>(identity.Parent))
                            {
                                rootId2 = identity.Parent;
                            }
                            else if (directorySession.IsRootIdWithinScope <T>(identity))
                            {
                                rootId2 = identity;
                                if (flag)
                                {
                                    directorySession.EnforceContainerizedScoping = false;
                                }
                            }
                        }
                        try
                        {
                            EnumerableWrapper <T> wrapper = EnumerableWrapper <T> .GetWrapper(this.PerformPrimarySearch <T>(new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Id, identity), rootId2, directorySession, true, optionalData));

                            if (wrapper.HasElements())
                            {
                                return(wrapper);
                            }
                        }
                        finally
                        {
                            if (flag)
                            {
                                directorySession.EnforceContainerizedScoping = enforceContainerizedScoping;
                            }
                        }
                    }
                    catch (LocalizedException exception)
                    {
                        if (!TaskHelper.IsTaskKnownException(exception))
                        {
                            throw;
                        }
                    }
IL_15F:
                    if (identity.ObjectGuid != Guid.Empty)
                    {
                        return(this.PerformPrimarySearch <T>(new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Guid, identity.ObjectGuid), rootId, directorySession, true, optionalData));
                    }
                }
            }
            return(EnumerableWrapper <T> .Empty);
        }