From 4ace24e406b39a499ad95dc73aa0c482e4d19f24 Mon Sep 17 00:00:00 2001 From: mguessan Date: Mon, 7 Sep 2009 12:24:50 +0000 Subject: [PATCH] LDAP: exclude non contact entries from search, fiw map key and sn copy for iCal git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@705 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/exchange/ExchangeSession.java | 7 ++++--- src/java/davmail/ldap/LdapConnection.java | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index e5f63d16..4285c204 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -2642,9 +2642,10 @@ public class ExchangeSession { "\"urn:schemas:contacts:telephoneNumber\"," + "\"urn:schemas:contacts:title\"," + "\"urn:schemas:httpmail:textdescription\"") - .append(" FROM Scope('SHALLOW TRAVERSAL OF \"").append(contactsUrl).append("\"')\n"); + .append(" FROM Scope('SHALLOW TRAVERSAL OF \"").append(contactsUrl).append("\"')\n") + .append(" WHERE \"DAV:contentclass\" = 'urn:content-classes:person' \n"); if (searchFilter != null && searchFilter.length() > 0) { - searchRequest.append(" WHERE ").append(searchFilter); + searchRequest.append(" AND ").append(searchFilter); } MultiStatusResponse[] responses = DavGatewayHttpClientFacade.executeSearchMethod( httpClient, URIUtil.encodePath(contactsUrl), searchRequest.toString()); @@ -2687,7 +2688,7 @@ public class ExchangeSession { results.put(item.get("uid"), item); } - LOGGER.debug("contactFind " + searchFilter + ": " + results.size() + " result(s)"); + LOGGER.debug("contactFind " + ((searchFilter==null)?"":searchFilter) + ": " + results.size() + " result(s)"); return results; } diff --git a/src/java/davmail/ldap/LdapConnection.java b/src/java/davmail/ldap/LdapConnection.java index 0e03a252..d3c621e1 100644 --- a/src/java/davmail/ldap/LdapConnection.java +++ b/src/java/davmail/ldap/LdapConnection.java @@ -553,7 +553,7 @@ public class LdapConnection extends AbstractConnection { if (ldapFilter.isFullSearch()) { // append personal contacts first for (Map person : session.contactFind(null).values()) { - persons.put(person.get("AN"), person); + persons.put(person.get("uid"), person); if (persons.size() == sizeLimit) { break; } @@ -575,7 +575,7 @@ public class LdapConnection extends AbstractConnection { } else { // append personal contacts first for (Map person : session.contactFind(ldapFilter.getContactSearchFilter()).values()) { - persons.put(person.get("AN"), person); + persons.put(person.get("uid"), person); if (persons.size() == sizeLimit) { break; } @@ -804,7 +804,7 @@ public class LdapConnection extends AbstractConnection { } // iCal: copy cn to sn - if (iCalSearch && ldapPerson.get("cn") != null) { + if (iCalSearch && ldapPerson.get("cn") != null && returningAttributes.contains("sn")) { ldapPerson.put("sn", ldapPerson.get("cn")); }