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

Reply via email to