Skip to content

Commit f3329be

Browse files
committed
API: Fix pagination issue with listing LDAP configuration
1 parent 7e04143 commit f3329be

File tree

5 files changed

+15
-14
lines changed

5 files changed

+15
-14
lines changed

plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ public String getLastnameAttribute(final Long domainId) {
239239

240240
public String getProviderUrl(final Long domainId) {
241241
final String protocol = getSSLStatus(domainId) == true ? "ldaps://" : "ldap://";
242-
final Pair<List<LdapConfigurationVO>, Integer> result = _ldapConfigurationDao.searchConfigurations(null, 0, domainId);
242+
final Pair<List<LdapConfigurationVO>, Integer> result = _ldapConfigurationDao.searchConfigurations(null, 0, domainId, null, null);
243243
final StringBuilder providerUrls = new StringBuilder();
244244
String delim = "";
245245
for (final LdapConfigurationVO resource : result.first()) {

plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ public Pair<List<? extends LdapConfigurationVO>, Integer> listConfigurations(fin
377377
final int port = cmd.getPort();
378378
final Long domainId = cmd.getDomainId();
379379
final boolean listAll = cmd.listAll();
380-
final Pair<List<LdapConfigurationVO>, Integer> result = _ldapConfigurationDao.searchConfigurations(hostname, port, domainId, listAll);
380+
final Pair<List<LdapConfigurationVO>, Integer> result = _ldapConfigurationDao.searchConfigurations(hostname, port, domainId, listAll, cmd.getStartIndex(), cmd.getPageSizeVal());
381381
return new Pair<List<? extends LdapConfigurationVO>, Integer>(result.first(), result.second());
382382
}
383383

plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDao.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public interface LdapConfigurationDao extends GenericDao<LdapConfigurationVO, Lo
3939

4040
LdapConfigurationVO find(String hostname, int port, Long domainId, boolean listAll);
4141

42-
Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String hostname, int port, Long domainId);
42+
Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String hostname, int port, Long domainId, Long offset, Long limit);
4343

44-
Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String hostname, int port, Long domainId, boolean listAll);
44+
Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String hostname, int port, Long domainId, boolean listAll, Long offset, Long limit);
4545
}

plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDaoImpl.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.List;
2020

2121

22+
import com.cloud.utils.db.Filter;
2223
import org.springframework.stereotype.Component;
2324

2425
import org.apache.cloudstack.ldap.LdapConfigurationVO;
@@ -63,29 +64,29 @@ public LdapConfigurationVO findByHostname(final String hostname) {
6364

6465
@Override
6566
public LdapConfigurationVO find(String hostname, int port, Long domainId) {
66-
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, false);
67+
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, false, null, null);
6768
return findOneBy(sc);
6869
}
6970

7071
@Override
7172
public LdapConfigurationVO find(String hostname, int port, Long domainId, boolean listAll) {
72-
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, listAll);
73+
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, listAll, null, null);
7374
return findOneBy(sc);
7475
}
7576

7677
@Override
77-
public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final String hostname, final int port, final Long domainId) {
78-
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, false);
79-
return searchAndCount(sc, null);
78+
public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final String hostname, final int port, final Long domainId, Long offset, Long limit) {
79+
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, false, offset, limit);
80+
return searchAndCount(sc, new Filter(LdapConfigurationVO.class, "id", true, offset, limit));
8081
}
8182

8283
@Override
83-
public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final String hostname, final int port, final Long domainId, final boolean listAll) {
84-
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, listAll);
85-
return searchAndCount(sc, null);
84+
public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final String hostname, final int port, final Long domainId, final boolean listAll, Long offset, Long limit) {
85+
SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, port, domainId, listAll, offset, limit);
86+
return searchAndCount(sc, new Filter(LdapConfigurationVO.class, "id", true, offset, limit));
8687
}
8788

88-
private SearchCriteria<LdapConfigurationVO> getSearchCriteria(String hostname, int port, Long domainId,boolean listAll) {
89+
private SearchCriteria<LdapConfigurationVO> getSearchCriteria(String hostname, int port, Long domainId,boolean listAll, Long offset, Long limit) {
8990
SearchCriteria<LdapConfigurationVO> sc;
9091
if (domainId != null) {
9192
// If domainid is present, ignore listall

plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/ldap/LdapDirectoryServerConnectionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public void setup() throws Exception {
9090
lenient().when(userManagerFactory.getInstance(LdapUserManager.Provider.OPENLDAP)).thenReturn(new OpenLdapUserManagerImpl(configuration));
9191
// construct an elaborate structure around a single object
9292
Pair<List<LdapConfigurationVO>, Integer> vos = new Pair<List<LdapConfigurationVO>, Integer>( Collections.singletonList(configurationVO),1);
93-
lenient().when(configurationDao.searchConfigurations(null, 0, 1L)).thenReturn(vos);
93+
lenient().when(configurationDao.searchConfigurations(null, 0, 1L, 1L, 20L)).thenReturn(vos);
9494

9595
contextFactory = new LdapContextFactory(configuration);
9696
ldapManager = new LdapManagerImpl(configurationDao, contextFactory, userManagerFactory, configuration);

0 commit comments

Comments
 (0)