public Group updateGroup()

in src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateGroupServlet.java [176:216]


    public Group updateGroup(Session jcrSession, 
                                String name,
                                Map<String, ?> properties, 
                                List<Modification> changes)
            throws RepositoryException {

        Group group = null;
        UserManager userManager = AccessControlUtil.getUserManager(jcrSession);
        Authorizable authorizable = userManager.getAuthorizable(name);
        if (authorizable instanceof Group) {
            group = (Group)authorizable;
        } else {
            throw new ResourceNotFoundException(
                "Group to update could not be determined");
        }
        
        
        String groupPath = systemUserManagerPaths.getGroupPrefix()
            + group.getID();

        Map<String, RequestProperty> reqPropertiesMap = collectContentMap(properties);
        Collection<RequestProperty> reqPropertyValues = reqPropertiesMap.values();
        // create a resource resolver to resolve the relative paths used for group membership values
        try (ResourceResolver resourceResolver = resourceResolverFactory.getResourceResolver(Collections.singletonMap(JcrResourceConstants.AUTHENTICATION_INFO_SESSION, jcrSession))) {
            // cleanup any old content (@Delete parameters)
            processDeletes(group, reqPropertyValues, changes);

            // ensure root of new content with the expected primary/mixin types
            processCreate(jcrSession, group, reqPropertiesMap, changes);

            // write content from form
            writeContent(jcrSession, group, reqPropertyValues, changes);

            // update the group memberships
            Resource baseResource = resourceResolver.getResource(groupPath);
            updateGroupMembership(baseResource, properties, group, changes);
        } catch (RepositoryException | LoginException re) {
            throw new RepositoryException("Failed to update group.", re);
        }
        return group;
    }