protected void updateGroupMembership()

in src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractGroupPostServlet.java [52:95]


    protected void updateGroupMembership(Resource baseResource,
                                        Map<String, ?> properties,
                                        Authorizable authorizable, 
                                        List<Modification> changes)
            throws RepositoryException {
        if (authorizable.isGroup()) {
            Group group = ((Group) authorizable);
            String groupPath = systemUserManagerPaths.getGroupPrefix()
                + group.getID();

            ResourceResolver resolver = baseResource.getResourceResolver();
            boolean changed = false;
            
            UserManager userManager = AccessControlUtil.getUserManager(resolver.adaptTo(Session.class));

            // first remove any members posted as ":member@Delete"
            String[] membersToDelete = convertToStringArray(properties.get(SlingPostConstants.RP_PREFIX
                + "member" + SlingPostConstants.SUFFIX_DELETE));
            for (String member : membersToDelete) {
                Authorizable memberAuthorizable = getAuthorizable(baseResource, member,userManager,resolver);
                if (memberAuthorizable != null) {
                    group.removeMember(memberAuthorizable);
                    changed = true;
                }
            }

            // second add any members posted as ":member"
            String[] membersToAdd = convertToStringArray(properties.get(SlingPostConstants.RP_PREFIX
                + "member"));
            for (String member : membersToAdd) {
                Authorizable memberAuthorizable = getAuthorizable(baseResource, member,userManager,resolver);
                if (memberAuthorizable != null) {
                    group.addMember(memberAuthorizable);
                    changed = true;
                }
            }

            if (changed) {
                // add an entry to the changes list to record the membership
                // change
                changes.add(Modification.onModified(groupPath + "/members"));
            }
        }
    }