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 852064b750bafb6e33245b138aa225133ade03bd..e58e2efa3bad90bb37f95d26253fab62fc6279d9 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 553d7096db0bba69f564b2cb09e036eb068f1954..f3ea3fac1c434c7f018d792ce1ad9a39102d1546 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());