protected internal ADGenericPagedReader(IDirectorySession session, ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, int pageSize, IEnumerable <PropertyDefinition> properties, bool skipCheckVirtualIndex) : base(session, rootId, scope, sortBy)
        {
            if (!typeof(ADRawEntry).IsAssignableFrom(typeof(TResult)))
            {
                throw new InvalidOperationException(DirectoryStrings.ErrorMustBeADRawEntry);
            }
            if (pageSize < 0 || pageSize > 10000)
            {
                throw new ArgumentOutOfRangeException("pageSize", pageSize, string.Format("pageSize should be between 1 and {0} or 0 to use the default page size: {1}", 10000, ADGenericPagedReader <TResult> .DefaultPageSize));
            }
            this.dummyInstance = (ADRawEntry)((object)((default(TResult) == null) ? Activator.CreateInstance <TResult>() : default(TResult)));
            QueryFilter  filter2 = filter;
            ConfigScopes configScopes;
            ADScope      readScope = session.GetReadScope(rootId, this.dummyInstance, false, out configScopes);
            ADObject     adobject;

            string[] ldapAttributes;
            base.Session.GetSchemaAndApplyFilter(this.dummyInstance, readScope, out adobject, out ldapAttributes, ref filter, ref properties);
            ADDataSession addataSession = base.Session as ADDataSession;

            if (addataSession != null)
            {
                addataSession.UpdateFilterforInactiveMailboxSearch(this.dummyInstance, ref filter);
            }
            base.LdapAttributes   = ldapAttributes;
            this.pageSize         = ((pageSize == 0) ? ADGenericPagedReader <TResult> .DefaultPageSize : pageSize);
            this.retrievedAllData = null;
            this.properties       = properties;
            session.CheckFilterForUnsafeIdentity(filter2);
            base.LdapFilter           = LdapFilterBuilder.LdapFilterFromQueryFilter(filter, skipCheckVirtualIndex, base.Session.SessionSettings.PartitionSoftLinkMode, base.Session.SessionSettings.IsTenantScoped);
            this.skipNonUniqueResults = (session is IConfigurationSession);
        }
Exemplo n.º 2
0
 internal static bool IsWithinScope(ADRawEntry obj, ADScope scope, out bool outOfScopeBecauseOfFilter)
 {
     return(ADDataSession.IsWithinScope(obj, scope, out outOfScopeBecauseOfFilter));
 }