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"));
}
}
}