Sorry I forgot to mention my many thanks to Stefan :). Further pointers are much appreciated.
Yaning From: Xu, Yaning [mailto:[email protected]] Sent: Thursday, July 02, 2015 3:39 PM To: Apache Directory Developers List Subject: How to implement getIdentities(int start, int limit) more effectively Hi all, As we have discussed https://issues.apache.org/jira/browse/DIRKRB-295 , IdentityService.getIdentities() should be removed. However, to implement getIdentities(int start, int limit), which returns a sorted result, I have to get all identities from the ldap server and then sort them. Is it possible for the Ldap server to return a sorted result for the client connection? In [1], I see a test about Page Search on client side testPagedSearchWrongCookie(), and it uses pagedSearchControl.setSize(3) to set the page size, the problem are: *how can I get a search result based on the start index and pageSize, like I may use getIdentities(int start, int limit) to return a result; *how can I get a sorted result from the server, so that I don't have to get all the entries and then sort them to get the result; [1] https://svn.apache.org/repos/asf/directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/search/PagedSearchIT.java public List<String> getIdentities(int start, int limit) { List<String> identities = getIdentities(); if (limit == -1) { return identities; } return getIdentities().subList(start, start + limit); } private List<String> getIdentities() { List<String> identityNames = new ArrayList<>(); EntryCursor cursor; Entry entry; try { cursor = connection.search( getConfig().getString("base_dn"), "(objectclass=*)", SearchScope.ONELEVEL, KerberosAttribute.KRB5_PRINCIPAL_NAME_AT); if (cursor == null) { return null; } while (cursor.next()) { entry = cursor.get(); identityNames.add(entry.get(KerberosAttribute.KRB5_PRINCIPAL_NAME_AT).getString()); } cursor.close(); Collections.sort(identityNames); } catch (LdapException e) { e.printStackTrace(); } catch (CursorException e) { e.printStackTrace(); } return identityNames; } Regards, Yaning
