From 2bfb33807a6463d8f3f621f64037d5d0f5eac2f2 Mon Sep 17 00:00:00 2001 From: mguessan Date: Tue, 27 Jul 2010 20:46:49 +0000 Subject: [PATCH] LDAP: use sizeLimit in contactFind git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1306 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/ldap/LdapConnection.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/java/davmail/ldap/LdapConnection.java b/src/java/davmail/ldap/LdapConnection.java index 27dbbd39..09dbc1ac 100644 --- a/src/java/davmail/ldap/LdapConnection.java +++ b/src/java/davmail/ldap/LdapConnection.java @@ -1263,7 +1263,7 @@ public class LdapConnection extends AbstractConnection { try { // check if this is a contact uid Integer.parseInt(uid); - persons = contactFind(session.isEqualTo("imapUid", uid), returningAttributes); + persons = contactFind(session.isEqualTo("imapUid", uid), returningAttributes, sizeLimit); } catch (NumberFormatException e) { // ignore, this is not a contact uid } @@ -1298,7 +1298,7 @@ public class LdapConnection extends AbstractConnection { Map> persons = new HashMap>(); if (ldapFilter.isFullSearch()) { // append personal contacts first - for (Map person : contactFind(null, returningAttributes).values()) { + for (Map person : contactFind(null, returningAttributes, sizeLimit).values()) { persons.put(person.get("imapUid"), person); if (persons.size() == sizeLimit) { break; @@ -1325,7 +1325,7 @@ public class LdapConnection extends AbstractConnection { // if ldapfilter is not a full search and filter is null, // ignored all attribute filters => return empty results if (ldapFilter.isFullSearch() || filter != null) { - for (Map person : contactFind(filter, returningAttributes).values()) { + for (Map person : contactFind(filter, returningAttributes, sizeLimit).values()) { persons.put(person.get("imapUid"), person); if (persons.size() == sizeLimit) { @@ -1387,10 +1387,11 @@ public class LdapConnection extends AbstractConnection { * * @param condition search filter * @param returningAttributes requested attributes + * @param maxCount maximum item count * @return List of users * @throws IOException on error */ - public Map> contactFind(ExchangeSession.Condition condition, Set returningAttributes) throws IOException { + public Map> contactFind(ExchangeSession.Condition condition, Set returningAttributes, int maxCount) throws IOException { Set contactReturningAttributes; if (returningAttributes != null && !returningAttributes.isEmpty()) { contactReturningAttributes = new HashSet(); @@ -1408,7 +1409,7 @@ public class LdapConnection extends AbstractConnection { Map> results = new HashMap>(); - List contacts = session.searchContacts(ExchangeSession.CONTACTS, contactReturningAttributes, condition, 0); + List contacts = session.searchContacts(ExchangeSession.CONTACTS, contactReturningAttributes, condition, maxCount); for (ExchangeSession.Contact contact : contacts) { if (contact.get("imapUid") != null) {