private String[] updateUserRoles(Role role, List<String> selectedUsers, Realm realm) throws Exception { UserDatabase userDatabase = UserDatabaseManager.getInstance().getUserDatabase(realm); User[] usersInRole = userDatabase.getUsersInRole(role); Collection<String> usersNotRemoved = new TreeSet<String>(); for (User user : usersInRole) { String principalName = user.getPrincipalName(); if (selectedUsers.contains(principalName)) { // role is already assigned so make sure this don't happen again selectedUsers.remove(principalName); } else { Role[] updatedRoles = removeRole(role, user.getRoles()); try { userDatabase.updateAccount(user, user.getEmail(), user.getFullname(), updatedRoles); } catch (GroupsRequiredForUserException e) { usersNotRemoved.add(principalName); } } } for (String principalName : selectedUsers) { User user = userDatabase.getAccount(principalName); Role[] updatedRoles = addRole(role, user.getRoles()); userDatabase.updateAccount(user, user.getEmail(), user.getFullname(), updatedRoles); } return usersNotRemoved.toArray(new String[usersNotRemoved.size()]); }