From d36a82c54700878518e20407f208d75a139f9ee6 Mon Sep 17 00:00:00 2001 From: William Enright <william.enright@savoirfairelinux.com> Date: Mon, 14 Sep 2020 14:09:40 -0400 Subject: [PATCH] directory search: changed error code with no users found, fixed empty searchResult retuning null instead of empty array Change-Id: Ib54abb2647b297bd317bd193243380cb43d48528 --- .../directory/SearchDirectoryServlet.java | 21 ++++++++----------- .../connector/service/UserProfileService.java | 3 ++- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java index 852064b7..e58e2efa 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java @@ -67,18 +67,13 @@ public class SearchDirectoryServlet extends HttpServlet { else { profiles = v.searchUserProfiles(req.getParameter("queryString"), "FULL_TEXT_NAME"); List<UserProfile> profiles2 = v.searchUserProfiles(req.getParameter("queryString"), "LOGON_NAME"); - if (profiles != null) { - for (Iterator<UserProfile> it = profiles.iterator(); it.hasNext(); ) { - UserProfile p = it.next(); - for (UserProfile p2 : profiles2) { - if (p2.equals(p)) - it.remove(); - } + for (Iterator<UserProfile> it = profiles.iterator(); it.hasNext(); ) { + UserProfile p = it.next(); + for (UserProfile p2 : profiles2) { + if (p2.equals(p)) + it.remove(); } } - - if (profiles == null) - profiles = new ArrayList<>(); profiles.addAll(profiles2); } @@ -122,7 +117,9 @@ public class SearchDirectoryServlet extends HttpServlet { } dataStore.updateUserProfile(profile); }); - - resp.getOutputStream().write(JsonStream.serialize(userProfiles).getBytes()); + if (!userProfiles.isEmpty()) { + resp.getOutputStream().write(JsonStream.serialize(userProfiles).getBytes()); + resp.setStatus(200); + } else resp.sendError(404, "No users were found!"); } } diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java index 553d7096..f3ea3fac 100644 --- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java +++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java @@ -32,6 +32,7 @@ import org.ldaptive.SearchOperation; import org.ldaptive.SearchRequest; import org.ldaptive.SearchResponse; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -55,7 +56,7 @@ public class UserProfileService { connection.open(); SearchOperation search = new SearchOperation(connectionFactory); SearchResponse res = search.execute(buildRequest(queryString,field, exactMatch)); - if (res.getEntries().size() == 0) return null; + if (res.getEntries().size() == 0) return new ArrayList<>(); return res.getEntries().stream().map(UserProfileService::profileFromResponse).collect(Collectors.toList()); } catch (Exception e) { log.error("Could not search LDAP directory with error " + e.toString()); -- GitLab