diff --git a/src/main/java/net/tirasa/connid/bundles/ldap/LdapConfiguration.java b/src/main/java/net/tirasa/connid/bundles/ldap/LdapConfiguration.java index d00842a..b8e8321 100644 --- a/src/main/java/net/tirasa/connid/bundles/ldap/LdapConfiguration.java +++ b/src/main/java/net/tirasa/connid/bundles/ldap/LdapConfiguration.java @@ -233,6 +233,10 @@ public enum SearchScope { private Class connectionClass = LdapConnection.class; + private int pageSize = 100; + + private boolean usePaging = true; + /** * The SearchScope for user objects */ @@ -359,9 +363,7 @@ public void validate() { checkNotBlank(changeNumberAttribute, "changeNumberAttribute.notBlank"); - if (changeLogBlockSize <= 0) { - failValidation("changeLogBlockSize.legalValue"); - } + checkPositive(changeLogBlockSize, "changeLogBLockSize.legalValue"); checkNotBlank(changeLogContext, "changeLogContext.notBlank"); @@ -373,6 +375,14 @@ public void validate() { checkNotBlank(syncStrategy, "syncStrategy.notBlank"); checkLdapSyncStrategy(); + + checkPositive(pageSize, "pageSize.legalValue"); + } + + protected void checkPositive(int value, String errorMessage) { + if (value <= 0) { + failValidation(errorMessage); + } } protected void checkNotBlank(String value, String errorMessage) { @@ -751,6 +761,28 @@ public void setRespectResourcePasswordPolicyChangeAfterReset(boolean respectReso } @ConfigurationProperty(order = 26, + displayMessageKey = "usePaging.display", + helpMessageKey = "usePaging.help") + public boolean isUsePaging() { + return usePaging; + } + + public void setUsePaging(boolean usePaging) { + this.usePaging = usePaging; + } + + @ConfigurationProperty(order = 27, + displayMessageKey = "pageSize.display", + helpMessageKey = "pageSize.help") + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + @ConfigurationProperty(order = 28, displayMessageKey = "useVlvControls.display", helpMessageKey = "useVlvControls.help") public boolean isUseVlvControls() { @@ -761,7 +793,7 @@ public void setUseVlvControls(boolean useVlvControls) { this.useVlvControls = useVlvControls; } - @ConfigurationProperty(order = 27, + @ConfigurationProperty(order = 29, displayMessageKey = "vlvSortAttribute.display", helpMessageKey = "vlvSortAttribute.help") public String getVlvSortAttribute() { @@ -772,7 +804,7 @@ public void setVlvSortAttribute(String vlvSortAttribute) { this.vlvSortAttribute = vlvSortAttribute; } - @ConfigurationProperty(order = 28, + @ConfigurationProperty(order = 30, displayMessageKey = "uidAttribute.display", helpMessageKey = "uidAttribute.help") public String getUidAttribute() { @@ -783,7 +815,7 @@ public void setUidAttribute(final String uidAttribute) { this.uidAttribute = uidAttribute; } - @ConfigurationProperty(order = 29, + @ConfigurationProperty(order = 31, displayMessageKey = "gidAttribute.display", helpMessageKey = "gidAttribute.help") public String getGidAttribute() { @@ -794,7 +826,7 @@ public void setGidAttribute(final String gidAttribute) { this.gidAttribute = gidAttribute; } - @ConfigurationProperty(order = 30, + @ConfigurationProperty(order = 32, displayMessageKey = "aoidAttribute.display", helpMessageKey = "aoidAttribute.help") public String getAoidAttribute() { @@ -805,7 +837,7 @@ public void setAoidAttribute(final String aoidAttribute) { this.aoidAttribute = aoidAttribute; } - @ConfigurationProperty(order = 31, + @ConfigurationProperty(order = 33, displayMessageKey = "readSchema.display", helpMessageKey = "readSchema.help") public boolean isReadSchema() { @@ -817,7 +849,7 @@ public void setReadSchema(boolean readSchema) { } // Sync properties getters and setters. - @ConfigurationProperty(order = 32, operations = { SyncOp.class }, + @ConfigurationProperty(order = 34, operations = { SyncOp.class }, displayMessageKey = "baseContextsToSynchronize.display", helpMessageKey = "baseContextsToSynchronize.help") public String[] getBaseContextsToSynchronize() { @@ -828,7 +860,7 @@ public void setBaseContextsToSynchronize(String... baseContextsToSynchronize) { this.baseContextsToSynchronize = baseContextsToSynchronize.clone(); } - @ConfigurationProperty(order = 33, operations = { SyncOp.class }, + @ConfigurationProperty(order = 35, operations = { SyncOp.class }, displayMessageKey = "objectClassesToSynchronize.display", helpMessageKey = "objectClassesToSynchronize.help") public String[] getObjectClassesToSynchronize() { @@ -839,7 +871,7 @@ public void setObjectClassesToSynchronize(String... objectClassesToSynchronize) this.objectClassesToSynchronize = objectClassesToSynchronize.clone(); } - @ConfigurationProperty(order = 34, operations = { SyncOp.class }, + @ConfigurationProperty(order = 36, operations = { SyncOp.class }, displayMessageKey = "attributesToSynchronize.display", helpMessageKey = "attributesToSynchronize.help") public String[] getAttributesToSynchronize() { @@ -850,7 +882,7 @@ public void setAttributesToSynchronize(String... attributesToSynchronize) { this.attributesToSynchronize = attributesToSynchronize.clone(); } - @ConfigurationProperty(order = 35, operations = { SyncOp.class }, + @ConfigurationProperty(order = 37, operations = { SyncOp.class }, displayMessageKey = "modifiersNamesToFilterOut.display", helpMessageKey = "modifiersNamesToFilterOut.help") public String[] getModifiersNamesToFilterOut() { @@ -861,7 +893,7 @@ public void setModifiersNamesToFilterOut(String... modifiersNamesToFilterOut) { this.modifiersNamesToFilterOut = modifiersNamesToFilterOut.clone(); } - @ConfigurationProperty(order = 36, operations = { SyncOp.class }, + @ConfigurationProperty(order = 38, operations = { SyncOp.class }, displayMessageKey = "accountSynchronizationFilter.display", helpMessageKey = "accountSynchronizationFilter.help") public String getAccountSynchronizationFilter() { @@ -872,7 +904,7 @@ public void setAccountSynchronizationFilter(String accountSynchronizationFilter) this.accountSynchronizationFilter = accountSynchronizationFilter; } - @ConfigurationProperty(order = 37, operations = { SyncOp.class }, + @ConfigurationProperty(order = 39, operations = { SyncOp.class }, displayMessageKey = "changeLogBlockSize.display", helpMessageKey = "changeLogBlockSize.help") public int getChangeLogBlockSize() { @@ -883,7 +915,7 @@ public void setChangeLogBlockSize(int changeLogBlockSize) { this.changeLogBlockSize = changeLogBlockSize; } - @ConfigurationProperty(order = 38, operations = { SyncOp.class }, + @ConfigurationProperty(order = 40, operations = { SyncOp.class }, displayMessageKey = "changeNumberAttribute.display", helpMessageKey = "changeNumberAttribute.help") public String getChangeNumberAttribute() { @@ -894,7 +926,7 @@ public void setChangeNumberAttribute(String changeNumberAttribute) { this.changeNumberAttribute = changeNumberAttribute; } - @ConfigurationProperty(order = 39, operations = { SyncOp.class }, + @ConfigurationProperty(order = 41, operations = { SyncOp.class }, displayMessageKey = "changeLogContext.display", helpMessageKey = "changeNumberAttribute.help") public String getChangeLogContext() { @@ -905,7 +937,7 @@ public void setChangeLogContext(String changeLogContext) { this.changeLogContext = changeLogContext; } - @ConfigurationProperty(order = 40, operations = { SyncOp.class }, + @ConfigurationProperty(order = 42, operations = { SyncOp.class }, displayMessageKey = "changeLogPagingSupport.display", helpMessageKey = "changeLogPagingSupport.help") public boolean getChangeLogPagingSupport() { @@ -916,7 +948,7 @@ public void setChangeLogPagingSupport(boolean changeLogPagingSupport) { this.changeLogPagingSupport = changeLogPagingSupport; } - @ConfigurationProperty(order = 41, operations = { SyncOp.class }, + @ConfigurationProperty(order = 43, operations = { SyncOp.class }, displayMessageKey = "filterWithOrInsteadOfAnd.display", helpMessageKey = "filterWithOrInsteadOfAnd.help") public boolean isFilterWithOrInsteadOfAnd() { @@ -927,7 +959,7 @@ public void setFilterWithOrInsteadOfAnd(boolean filterWithOrInsteadOfAnd) { this.filterWithOrInsteadOfAnd = filterWithOrInsteadOfAnd; } - @ConfigurationProperty(order = 42, operations = { SyncOp.class }, + @ConfigurationProperty(order = 44, operations = { SyncOp.class }, displayMessageKey = "removeLogEntryObjectClassFromFilter.display", helpMessageKey = "removeLogEntryObjectClassFromFilter.help") public boolean isRemoveLogEntryObjectClassFromFilter() { @@ -938,7 +970,7 @@ public void setRemoveLogEntryObjectClassFromFilter(boolean removeLogEntryObjectC this.removeLogEntryObjectClassFromFilter = removeLogEntryObjectClassFromFilter; } - @ConfigurationProperty(order = 43, operations = { SyncOp.class }, + @ConfigurationProperty(order = 45, operations = { SyncOp.class }, displayMessageKey = "synchronizePasswords.display", helpMessageKey = "synchronizePasswords.help") public boolean isSynchronizePasswords() { @@ -949,7 +981,7 @@ public void setSynchronizePasswords(boolean synchronizePasswords) { this.synchronizePasswords = synchronizePasswords; } - @ConfigurationProperty(order = 44, operations = { SyncOp.class }, + @ConfigurationProperty(order = 46, operations = { SyncOp.class }, displayMessageKey = "passwordAttributeToSynchronize.display", helpMessageKey = "passwordAttributeToSynchronize.help") public String getPasswordAttributeToSynchronize() { @@ -960,7 +992,7 @@ public void setPasswordAttributeToSynchronize(String passwordAttributeToSynchron this.passwordAttributeToSynchronize = passwordAttributeToSynchronize; } - @ConfigurationProperty(order = 45, operations = { SyncOp.class }, confidential = true, + @ConfigurationProperty(order = 47, operations = { SyncOp.class }, confidential = true, displayMessageKey = "passwordDecryptionKey.display", helpMessageKey = "passwordDecryptionKey.help") public GuardedByteArray getPasswordDecryptionKey() { @@ -972,7 +1004,7 @@ public void setPasswordDecryptionKey(GuardedByteArray passwordDecryptionKey) { copy() : null; } - @ConfigurationProperty(order = 46, operations = { SyncOp.class }, confidential = true, + @ConfigurationProperty(order = 48, operations = { SyncOp.class }, confidential = true, displayMessageKey = "passwordDecryptionInitializationVector.display", helpMessageKey = "passwordDecryptionInitializationVector.help") public GuardedByteArray getPasswordDecryptionInitializationVector() { @@ -984,7 +1016,7 @@ public void setPasswordDecryptionInitializationVector(GuardedByteArray passwordD ? passwordDecryptionInitializationVector.copy() : null; } - @ConfigurationProperty(order = 47, + @ConfigurationProperty(order = 49, displayMessageKey = "statusManagementClass.display", helpMessageKey = "statusManagementClass.help") public String getStatusManagementClass() { @@ -995,7 +1027,7 @@ public void setStatusManagementClass(String statusManagementClass) { this.statusManagementClass = statusManagementClass; } - @ConfigurationProperty(order = 48, + @ConfigurationProperty(order = 50, displayMessageKey = "retrievePasswordsWithSearch.display", helpMessageKey = "retrievePasswordsWithSearch.help") public boolean getRetrievePasswordsWithSearch() { @@ -1006,7 +1038,7 @@ public void setRetrievePasswordsWithSearch(boolean retrievePasswordsWithSearch) this.retrievePasswordsWithSearch = retrievePasswordsWithSearch; } - @ConfigurationProperty(order = 49, + @ConfigurationProperty(order = 51, displayMessageKey = "dnAttribute.display", helpMessageKey = "dnAttribute.help") public String getDnAttribute() { @@ -1017,7 +1049,7 @@ public void setDnAttribute(String dnAttribute) { this.dnAttribute = dnAttribute; } - @ConfigurationProperty(order = 50, + @ConfigurationProperty(order = 52, displayMessageKey = "groupSearchFilter.display", helpMessageKey = "groupSearchFilter.help") public String getGroupSearchFilter() { @@ -1028,7 +1060,7 @@ public void setGroupSearchFilter(String groupSearchFilter) { this.groupSearchFilter = groupSearchFilter; } - @ConfigurationProperty(order = 51, + @ConfigurationProperty(order = 53, displayMessageKey = "readTimeout.display", helpMessageKey = "readTimeout.help") public long getReadTimeout() { @@ -1039,7 +1071,7 @@ public void setReadTimeout(long readTimeout) { this.readTimeout = readTimeout; } - @ConfigurationProperty(order = 52, + @ConfigurationProperty(order = 54, displayMessageKey = "connectTimeout.display", helpMessageKey = "connectTimeout.help") public long getConnectTimeout() { @@ -1050,7 +1082,7 @@ public void setConnectTimeout(long connectTimeout) { this.connectTimeout = connectTimeout; } - @ConfigurationProperty(order = 53, + @ConfigurationProperty(order = 55, displayMessageKey = "syncStrategy.display", helpMessageKey = "syncStrategy.help") public String getSyncStrategy() { @@ -1189,6 +1221,7 @@ protected EqualsHashCodeBuilder createHashCodeBuilder() { builder.append(groupSearchFilter); builder.append(connectTimeout); builder.append(readTimeout); + builder.append(pageSize); return builder; } diff --git a/src/main/java/net/tirasa/connid/bundles/ldap/search/LdapSearch.java b/src/main/java/net/tirasa/connid/bundles/ldap/search/LdapSearch.java index d7dfcb1..0642ec7 100644 --- a/src/main/java/net/tirasa/connid/bundles/ldap/search/LdapSearch.java +++ b/src/main/java/net/tirasa/connid/bundles/ldap/search/LdapSearch.java @@ -406,13 +406,13 @@ protected List getBaseDNs() { protected LdapSearchStrategy getSearchStrategy() { LdapSearchStrategy result = conn.getConfiguration().newDefaultSearchStrategy(false); - if (options.getPageSize() != null) { + if (conn.getConfiguration().isUsePaging()) { if (conn.getConfiguration().isUseVlvControls() && conn.supportsControl(VirtualListViewControl.OID)) { String vlvSortAttr = conn.getConfiguration().getVlvSortAttribute(); - result = new VlvIndexSearchStrategy(vlvSortAttr, options.getPageSize()); + result = new VlvIndexSearchStrategy(vlvSortAttr, conn.getConfiguration().getPageSize()); } else if (conn.supportsControl(PagedResultsControl.OID)) { result = new PagedSearchStrategy( - options.getPageSize(), + conn.getConfiguration().getPageSize(), options.getPagedResultsCookie(), options.getPagedResultsOffset(), handler instanceof SearchResultsHandler ? (SearchResultsHandler) handler : null, diff --git a/src/main/java/net/tirasa/connid/bundles/ldap/search/LdapSearchStrategy.java b/src/main/java/net/tirasa/connid/bundles/ldap/search/LdapSearchStrategy.java index 62570e3..85d8c1e 100644 --- a/src/main/java/net/tirasa/connid/bundles/ldap/search/LdapSearchStrategy.java +++ b/src/main/java/net/tirasa/connid/bundles/ldap/search/LdapSearchStrategy.java @@ -75,7 +75,7 @@ protected static String searchControlsToString(final SearchControls controls) { public static Class getSearchStrategy(LdapConnection conn, OperationOptions options) { Class clazz = DefaultSearchStrategy.class; - if (options.getPageSize() != null) { + if (conn.getConfiguration().isUsePaging()) { if (conn.getConfiguration().isUseVlvControls() && conn.supportsControl(VirtualListViewControl.OID)) { clazz = VlvIndexSearchStrategy.class; } else if (conn.supportsControl(PagedResultsControl.OID)) { diff --git a/src/main/java/net/tirasa/connid/bundles/ldap/search/PagedSearchStrategy.java b/src/main/java/net/tirasa/connid/bundles/ldap/search/PagedSearchStrategy.java index e4505d6..d22629c 100644 --- a/src/main/java/net/tirasa/connid/bundles/ldap/search/PagedSearchStrategy.java +++ b/src/main/java/net/tirasa/connid/bundles/ldap/search/PagedSearchStrategy.java @@ -107,16 +107,28 @@ public void doSearch(final LdapContext initCtx, final List baseDNs, fina for (int i = 0; i < sortKeys.length; i++) { skis[i] = new javax.naming.ldap.SortKey(sortKeys[i].getField(), sortKeys[i].isAscendingOrder(), null); + if (LOG.isOk()) { + LOG.ok("Adding '{0}' as a requested sort key", sortKeys[i].getField()); + } } // We don't want to make this critical... better return unsorted results than nothing. sortControl = new SortControl(skis, Control.NONCRITICAL); } + + if (LOG.isOk()) { + if (cookie != null) { + LOG.ok("Setting paged request control with page size '{0}' and cookie '{1}'", + pageSize - records, + cookie != null ? Base64.getEncoder().encodeToString(cookie) : ""); + } + } + PagedResultsControl pagedResultsControl = new PagedResultsControl(pageSize - records, cookie, + Control.CRITICAL); if (sortControl == null) { - ctx.setRequestControls(new Control[] { - new PagedResultsControl(pageSize - records, cookie, Control.CRITICAL) }); + ctx.setRequestControls(new Control[] { pagedResultsControl }); } else { ctx.setRequestControls(new Control[] { - new PagedResultsControl(pageSize - records, cookie, Control.CRITICAL), sortControl + pagedResultsControl, sortControl }); } @@ -139,6 +151,15 @@ public void doSearch(final LdapContext initCtx, final List baseDNs, fina PagedResultsResponseControl pagedControl = getPagedControl(ctx.getResponseControls()); if (pagedControl != null) { cookie = pagedControl.getCookie(); + if (LOG.isOk()) + { + if (cookie != null) { + LOG.ok("Server returned a paged results control with cookie '{0}'", + Base64.getEncoder().encodeToString(cookie)); + } + + } + if (pagedControl.getResultSize() > 0) { remainingResults = pagedControl.getResultSize(); } diff --git a/src/test/java/net/tirasa/connid/bundles/ldap/LdapConfigurationTests.java b/src/test/java/net/tirasa/connid/bundles/ldap/LdapConfigurationTests.java index 85d00d9..af1b566 100644 --- a/src/test/java/net/tirasa/connid/bundles/ldap/LdapConfigurationTests.java +++ b/src/test/java/net/tirasa/connid/bundles/ldap/LdapConfigurationTests.java @@ -309,6 +309,24 @@ public void passwordDecryptionInitializationVectorNotBlank() { assertThrows(ConfigurationException.class, () -> config.validate()); } + @Test + public void pageSizeNotNegative() { + config.setPageSize(-1); + assertThrows(ConfigurationException.class, () -> config.validate()); + } + + @Test + public void pageSizeNotZero() { + config.setPageSize(0); + assertThrows(ConfigurationException.class, () -> config.validate()); + } + + @Test + public void pageSizePositive() { + config.setPageSize(1); + assertDoesNotThrow(() -> config.validate()); + } + @Test public void defaultValues() { config = new LdapConfiguration(); @@ -358,6 +376,8 @@ public void defaultValues() { assertEquals(OperationOptions.SCOPE_SUBTREE, config.getAnyObjectSearchScope()); assertNull(config.getAnyObjectSearchFilter()); assertEquals("net.tirasa.connid.bundles.ldap.sync.sunds.SunDSChangeLogSyncStrategy", config.getSyncStrategy()); + assertEquals(100, config.getPageSize()); + assertEquals(true, config.isUsePaging()); } @Test diff --git a/src/test/java/net/tirasa/connid/bundles/ldap/search/LdapSearchTests.java b/src/test/java/net/tirasa/connid/bundles/ldap/search/LdapSearchTests.java index 07b3411..abed97d 100644 --- a/src/test/java/net/tirasa/connid/bundles/ldap/search/LdapSearchTests.java +++ b/src/test/java/net/tirasa/connid/bundles/ldap/search/LdapSearchTests.java @@ -94,10 +94,12 @@ public void ldapFilterWithNonExistingEntryDN() { // Simple paged results. config = newConfiguration(); - searchExpectingNoResult(config, filter, new OperationOptionsBuilder().setPageSize(25).build()); + config.setPageSize(25); + searchExpectingNoResult(config, filter, new OperationOptionsBuilder().build()); // No paging. config = newConfiguration(); + config.setUsePaging(false); searchExpectingNoResult(config, filter, new OperationOptionsBuilder().build()); } @@ -112,10 +114,12 @@ public void ldapFilterWithInvalidEntryDN() { // Simple paged results. config = newConfiguration(); - searchExpectingNoResult(config, filter, new OperationOptionsBuilder().setPageSize(25).build()); + config.setPageSize(25); + searchExpectingNoResult(config, filter, new OperationOptionsBuilder().build()); // No paging. config = newConfiguration(); + config.setUsePaging(false); searchExpectingNoResult(config, filter, new OperationOptionsBuilder().build()); } @@ -140,10 +144,12 @@ public void canCancelSearch() { // Simple paged results. config = newConfiguration(); config.setBaseContexts(ACME_DN, BIG_COMPANY_DN); - searchExpectingSingleResult(config, new OperationOptionsBuilder().setPageSize(25).build()); + config.setPageSize(25); + searchExpectingSingleResult(config, new OperationOptionsBuilder().build()); // No paging. config = newConfiguration(); + config.setUsePaging(false); config.setBaseContexts(ACME_DN, BIG_COMPANY_DN); searchExpectingSingleResult(config, new OperationOptionsBuilder().build()); } @@ -161,14 +167,15 @@ public void simplePagedSearch() { ConnectorFacade facade = newFacade(config); // read first page + config.setPageSize(100); List objects = TestHelpers.searchToList( - facade, ObjectClass.ACCOUNT, null, new OperationOptionsBuilder().setPageSize(100).build()); + facade, ObjectClass.ACCOUNT, null, new OperationOptionsBuilder().build()); assertNotNull(getObjectByName(objects, BUGS_BUNNY_DN)); assertNotNull(getObjectByName(objects, USER_0_DN)); assertEquals(100, objects.size()); // read all pages, being each page of 100 entries - final OperationOptionsBuilder builder = new OperationOptionsBuilder().setPageSize(100); + final OperationOptionsBuilder builder = new OperationOptionsBuilder(); final String[] cookies = new String[1]; final Integer[] count = new Integer[] { 0, 0 }; do { @@ -212,10 +219,11 @@ public void vlvIndexSearch() { config.setUidAttribute("entryDN"); config.setGidAttribute("entryDN"); config.setUseVlvControls(true); + config.setPageSize(1); ConnectorFacade facade = newFacade(config); List objects = TestHelpers.searchToList( - facade, ObjectClass.ACCOUNT, null, new OperationOptionsBuilder().setPageSize(1).build()); + facade, ObjectClass.ACCOUNT, null, new OperationOptionsBuilder().build()); assertNotNull(getObjectByName(objects, USER_0_DN)); // 1000 is the default search size limit for OpenDJ. assertTrue(objects.size() > 1000); @@ -223,7 +231,7 @@ public void vlvIndexSearch() { // OpenDJ-specific. OperationOptionsBuilder builder = new OperationOptionsBuilder().setAttributesToGet("debugsearchindex"); FirstOnlyResultsHandler handler = new FirstOnlyResultsHandler(); - facade.search(ObjectClass.ACCOUNT, null, handler, builder.setPageSize(1).build()); + facade.search(ObjectClass.ACCOUNT, null, handler, builder.build()); String debugsearch = handler.getSingleResult(). getAttributeByName("debugsearchindex").getValue().get(0).toString(); assertTrue(debugsearch.contains("vlv")); @@ -231,6 +239,7 @@ public void vlvIndexSearch() { public void defaultStrategy() { LdapConfiguration config = newConfiguration(); + config.setUsePaging(false); ConnectorFacade facade = newFacade(config); final boolean[] isAllResultsReturned = new boolean[1]; @@ -319,7 +328,6 @@ public void scope() { OperationOptionsBuilder optionsBuilder = new OperationOptionsBuilder(); optionsBuilder.setScope(OperationOptions.SCOPE_ONE_LEVEL); optionsBuilder.setContainer(new QualifiedUid(oclass, organization.getUid())); - optionsBuilder.setPageSize(100); List objects = TestHelpers.searchToList( facade, ObjectClass.ACCOUNT, null, optionsBuilder.build()); assertTrue(objects.isEmpty()); @@ -343,7 +351,6 @@ public void configurableUserScope() { // Prepare options OperationOptionsBuilder optionsBuilder = new OperationOptionsBuilder(); optionsBuilder.setContainer(new QualifiedUid(oclass, organization.getUid())); - optionsBuilder.setPageSize(100); OperationOptions options = optionsBuilder.build(); // We can get bugs bunny with an 'object' search by DN @@ -382,7 +389,6 @@ public void configurableGroupScope() { // Prepare options OperationOptionsBuilder optionsBuilder = new OperationOptionsBuilder(); optionsBuilder.setContainer(new QualifiedUid(oclass, organization.getUid())); - optionsBuilder.setPageSize(100); OperationOptions options = optionsBuilder.build(); // We can get 'unique bugs and friends' with an 'object' search by DN @@ -423,7 +429,6 @@ public void configurableAnyObjectScope() { // Prepare options OperationOptionsBuilder optionsBuilder = new OperationOptionsBuilder(); optionsBuilder.setContainer(new QualifiedUid(oclass, organization.getUid())); - optionsBuilder.setPageSize(100); OperationOptions options = optionsBuilder.build(); // Set up for 'device' search @@ -598,11 +603,13 @@ public void missingParenthesesAddedToAnyObjectSearchFilter() { @Test public void multipleBaseDNs() { - ConnectorFacade facade = newFacade(); + LdapConfiguration config = newConfiguration(); + config.setPageSize(1000); + ConnectorFacade facade = newFacade(config); // This should find accounts from both base DNs. List objects = TestHelpers.searchToList( - facade, ObjectClass.ACCOUNT, null, new OperationOptionsBuilder().setPageSize(1000).build()); + facade, ObjectClass.ACCOUNT, null, new OperationOptionsBuilder().build()); assertNotNull(getObjectByName(objects, BUGS_BUNNY_DN)); assertNotNull(getObjectByName(objects, USER_0_DN)); }