From c3a3e144c0c95a9e58e1bfd9f48b0990eb54db40 Mon Sep 17 00:00:00 2001
From: Philipp Gritsch <philipp.gritsch@uibk.ac.at>
Date: Mon, 17 Jun 2024 10:39:47 +0200
Subject: [PATCH] attempts to fix #501

---
 .../gitlab_events/GitlabEventService.java     | 12 ++++++------
 .../gitlab_events/ProjectPermissions.java     | 19 +++++++++++++------
 2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/main/java/at/ac/uibk/gitsearch/service/gitlab_events/GitlabEventService.java b/src/main/java/at/ac/uibk/gitsearch/service/gitlab_events/GitlabEventService.java
index ef44344a6..544b0656a 100644
--- a/src/main/java/at/ac/uibk/gitsearch/service/gitlab_events/GitlabEventService.java
+++ b/src/main/java/at/ac/uibk/gitsearch/service/gitlab_events/GitlabEventService.java
@@ -581,13 +581,13 @@ public class GitlabEventService {
     ProjectPermissions result = new ProjectPermissions();
     adminGitLabApi.enableRequestResponseLogging(java.util.logging.Level.INFO);
     try {
-      for (Member member : adminGitLabApi.getProjectApi().getMembers(p.getId())) {
+      for (Member member : adminGitLabApi.getProjectApi().getAllMembers(p.getId())) {
         if (member.getEmail() == null) {
           // member does not show email address?
           User user = adminGitLabApi.getUserApi().getUser(member.getId());
-          result.emailAddressesWithAccess.add(user.getEmail());
+          result.addEmailWithAccess(user.getEmail());
         } else {
-          result.emailAddressesWithAccess.add(member.getEmail());
+          result.addEmailWithAccess(member.getEmail());
         }
       }
     } catch (GitLabApiException e) {
@@ -596,7 +596,7 @@ public class GitlabEventService {
 
     final List<ProjectSharedGroup> sharedWithGroups = p.getSharedWithGroups();
     for (ProjectSharedGroup group : sharedWithGroups) {
-      result.groupsWithAccess.add(group.getGroupName());
+      result.addGroupWithAccess(group.getGroupName());
     }
     return result;
   }
@@ -635,8 +635,8 @@ public class GitlabEventService {
 
       gp.setArchived(p.getArchived());
       gp.setVisibility(p.getVisibility());
-      gp.setUsers(perm.getEmailAddressesWithAccess());
-      gp.setGroups(perm.getGroupsWithAccess());
+      gp.setUsers(new ArrayList<>(perm.getEmailAddressesWithAccess()));
+      gp.setGroups(new ArrayList<>(perm.getGroupsWithAccess()));
       gp.setOpen_issues_count(p.getOpenIssuesCount());
       gp.setForks_count(p.getForksCount());
       gp.setLast_activity_at(lastActivity);
diff --git a/src/main/java/at/ac/uibk/gitsearch/service/gitlab_events/ProjectPermissions.java b/src/main/java/at/ac/uibk/gitsearch/service/gitlab_events/ProjectPermissions.java
index 04a09f3d6..d101b0692 100644
--- a/src/main/java/at/ac/uibk/gitsearch/service/gitlab_events/ProjectPermissions.java
+++ b/src/main/java/at/ac/uibk/gitsearch/service/gitlab_events/ProjectPermissions.java
@@ -1,18 +1,25 @@
 package at.ac.uibk.gitsearch.service.gitlab_events;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
 public class ProjectPermissions {
 
-  final List<String> emailAddressesWithAccess = new ArrayList<>();
-  final List<String> groupsWithAccess = new ArrayList<>();
+  private final Set<String> emailAddressesWithAccess = new HashSet<>();
+  private final Set<String> groupsWithAccess = new HashSet<>();
 
-  public List<String> getEmailAddressesWithAccess() {
+  public void addEmailWithAccess(String email) {
+    this.emailAddressesWithAccess.add(email);
+  }
+
+  public void addGroupWithAccess(String group) {
+    this.groupsWithAccess.add(group);
+  }
+
+  public Set<String> getEmailAddressesWithAccess() {
     return emailAddressesWithAccess;
   }
 
-  public List<String> getGroupsWithAccess() {
+  public Set<String> getGroupsWithAccess() {
     return groupsWithAccess;
   }
 }
-- 
GitLab