This is an automated email from the ASF dual-hosted git repository.

pearl11594 pushed a commit to branch fix-ldapconf-list-pagination
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit f3329be397c4977f6e9c46cbeea6f11371fd1fc1
Author: Pearl Dsilva <[email protected]>
AuthorDate: Wed Aug 13 12:32:09 2025 -0400

    API: Fix pagination issue with listing LDAP configuration
---
 .../org/apache/cloudstack/ldap/LdapConfiguration.java |  2 +-
 .../org/apache/cloudstack/ldap/LdapManagerImpl.java   |  2 +-
 .../cloudstack/ldap/dao/LdapConfigurationDao.java     |  4 ++--
 .../cloudstack/ldap/dao/LdapConfigurationDaoImpl.java | 19 ++++++++++---------
 .../ldap/LdapDirectoryServerConnectionTest.java       |  2 +-
 5 files changed, 15 insertions(+), 14 deletions(-)

diff --git 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapConfiguration.java
 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapConfiguration.java
index 6a62ad8d99d..4b67bd44880 100644
--- 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapConfiguration.java
+++ 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapConfiguration.java
@@ -239,7 +239,7 @@ public class LdapConfiguration implements Configurable{
 
     public String getProviderUrl(final Long domainId) {
         final String protocol = getSSLStatus(domainId) == true ? "ldaps://" : 
"ldap://";;
-        final Pair<List<LdapConfigurationVO>, Integer> result = 
_ldapConfigurationDao.searchConfigurations(null, 0, domainId);
+        final Pair<List<LdapConfigurationVO>, Integer> result = 
_ldapConfigurationDao.searchConfigurations(null, 0, domainId, null, null);
         final StringBuilder providerUrls = new StringBuilder();
         String delim = "";
         for (final LdapConfigurationVO resource : result.first()) {
diff --git 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapManagerImpl.java
 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapManagerImpl.java
index 05b8578bb42..c73744bb48c 100644
--- 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapManagerImpl.java
+++ 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/LdapManagerImpl.java
@@ -377,7 +377,7 @@ public class LdapManagerImpl extends ComponentLifecycleBase 
implements LdapManag
         final int port = cmd.getPort();
         final Long domainId = cmd.getDomainId();
         final boolean listAll = cmd.listAll();
-        final Pair<List<LdapConfigurationVO>, Integer> result = 
_ldapConfigurationDao.searchConfigurations(hostname, port, domainId, listAll);
+        final Pair<List<LdapConfigurationVO>, Integer> result = 
_ldapConfigurationDao.searchConfigurations(hostname, port, domainId, listAll, 
cmd.getStartIndex(), cmd.getPageSizeVal());
         return new Pair<List<? extends LdapConfigurationVO>, 
Integer>(result.first(), result.second());
     }
 
diff --git 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDao.java
 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDao.java
index af774b685ed..30d05c5a6f2 100644
--- 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDao.java
+++ 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDao.java
@@ -39,7 +39,7 @@ public interface LdapConfigurationDao extends 
GenericDao<LdapConfigurationVO, Lo
 
     LdapConfigurationVO find(String hostname, int port, Long domainId, boolean 
listAll);
 
-    Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String 
hostname, int port, Long domainId);
+    Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String 
hostname, int port, Long domainId, Long offset, Long limit);
 
-    Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String 
hostname, int port, Long domainId, boolean listAll);
+    Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(String 
hostname, int port, Long domainId, boolean listAll, Long offset, Long limit);
 }
diff --git 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDaoImpl.java
 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDaoImpl.java
index c053e87b6bf..33fe98993d1 100644
--- 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDaoImpl.java
+++ 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/dao/LdapConfigurationDaoImpl.java
@@ -19,6 +19,7 @@ package org.apache.cloudstack.ldap.dao;
 import java.util.List;
 
 
+import com.cloud.utils.db.Filter;
 import org.springframework.stereotype.Component;
 
 import org.apache.cloudstack.ldap.LdapConfigurationVO;
@@ -63,29 +64,29 @@ public class LdapConfigurationDaoImpl extends 
GenericDaoBase<LdapConfigurationVO
 
     @Override
     public LdapConfigurationVO find(String hostname, int port, Long domainId) {
-        SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, 
port, domainId, false);
+        SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, 
port, domainId, false, null, null);
         return findOneBy(sc);
     }
 
     @Override
     public LdapConfigurationVO find(String hostname, int port, Long domainId, 
boolean listAll) {
-        SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, 
port, domainId, listAll);
+        SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, 
port, domainId, listAll, null, null);
         return findOneBy(sc);
     }
 
     @Override
-    public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final 
String hostname, final int port, final Long domainId) {
-        SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, 
port, domainId, false);
-        return searchAndCount(sc, null);
+    public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final 
String hostname, final int port, final Long domainId, Long offset, Long limit) {
+        SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, 
port, domainId, false, offset, limit);
+        return searchAndCount(sc, new Filter(LdapConfigurationVO.class, "id", 
true, offset, limit));
     }
 
     @Override
-    public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final 
String hostname, final int port, final Long domainId, final boolean listAll) {
-        SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, 
port, domainId, listAll);
-        return searchAndCount(sc, null);
+    public Pair<List<LdapConfigurationVO>, Integer> searchConfigurations(final 
String hostname, final int port, final Long domainId, final boolean listAll, 
Long offset, Long limit) {
+        SearchCriteria<LdapConfigurationVO> sc = getSearchCriteria(hostname, 
port, domainId, listAll, offset, limit);
+        return searchAndCount(sc, new Filter(LdapConfigurationVO.class, "id", 
true, offset, limit));
     }
 
-    private SearchCriteria<LdapConfigurationVO> getSearchCriteria(String 
hostname, int port, Long domainId,boolean listAll) {
+    private SearchCriteria<LdapConfigurationVO> getSearchCriteria(String 
hostname, int port, Long domainId,boolean listAll, Long offset, Long limit) {
         SearchCriteria<LdapConfigurationVO> sc;
         if (domainId != null) {
             // If domainid is present, ignore listall
diff --git 
a/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/ldap/LdapDirectoryServerConnectionTest.java
 
b/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/ldap/LdapDirectoryServerConnectionTest.java
index a216084aa3a..53afba0a34f 100644
--- 
a/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/ldap/LdapDirectoryServerConnectionTest.java
+++ 
b/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/ldap/LdapDirectoryServerConnectionTest.java
@@ -90,7 +90,7 @@ public class LdapDirectoryServerConnectionTest {
         
lenient().when(userManagerFactory.getInstance(LdapUserManager.Provider.OPENLDAP)).thenReturn(new
 OpenLdapUserManagerImpl(configuration));
         // construct an elaborate structure around a single object
         Pair<List<LdapConfigurationVO>, Integer> vos = new 
Pair<List<LdapConfigurationVO>, Integer>( 
Collections.singletonList(configurationVO),1);
-        lenient().when(configurationDao.searchConfigurations(null, 0, 
1L)).thenReturn(vos);
+        lenient().when(configurationDao.searchConfigurations(null, 0, 1L, 1L, 
20L)).thenReturn(vos);
 
         contextFactory = new LdapContextFactory(configuration);
         ldapManager = new LdapManagerImpl(configurationDao, contextFactory, 
userManagerFactory, configuration);

Reply via email to