Merge pull request #1361 from KevinVdV/DS-3138-jspui-remove-member-from-group

[DS-3138] JSPUI Exception when a EPerson is removed from a Group
This commit is contained in:
Hardy Pottinger
2016-04-22 11:02:59 -05:00

View File

@@ -24,10 +24,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.HashSet; import java.util.*;
import java.util.List;
import java.util.Set;
import java.util.UUID;
/** /**
* Servlet for editing groups * Servlet for editing groups
@@ -106,6 +103,13 @@ public class GroupEditServlet extends DSpaceServlet
// now get members, and add new ones and remove missing ones // now get members, and add new ones and remove missing ones
List<EPerson> members = group.getMembers(); List<EPerson> members = group.getMembers();
List<UUID> memberIdentifiers = new ArrayList<>();
// Store all the identifiers of our current members
for (EPerson member : members)
{
memberIdentifiers.add(member.getID());
}
List<Group> membergroups = group.getMemberGroups(); List<Group> membergroups = group.getMemberGroups();
if (eperson_ids != null) if (eperson_ids != null)
@@ -138,11 +142,11 @@ public class GroupEditServlet extends DSpaceServlet
} }
// process members, removing any that aren't in eperson_ids // process members, removing any that aren't in eperson_ids
for (EPerson e : members) for (UUID personId : memberIdentifiers)
{ {
if (!epersonIDSet.contains(e.getID())) if (!epersonIDSet.contains(personId))
{ {
groupService.removeMember(c, group, e); groupService.removeMember(c, group, personService.find(c, personId));
} }
} }
} }
@@ -150,9 +154,9 @@ public class GroupEditServlet extends DSpaceServlet
{ {
// no members found (ids == null), remove them all! // no members found (ids == null), remove them all!
for (EPerson e : members) for (UUID personId : memberIdentifiers)
{ {
groupService.removeMember(c, group, e); groupService.removeMember(c, group, personService.find(c, personId));
} }
} }