import java.io.IOException;
import java.util.EnumSet;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
import javax.jcr.NoSuchWorkspaceException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.argeo.api.NodeUtils;
import org.argeo.jcr.Jcr;
import org.argeo.jcr.JcrUtils;
import org.argeo.naming.Distinguished;
-import org.argeo.node.NodeUtils;
import org.osgi.service.useradmin.Group;
import org.osgi.service.useradmin.Role;
import org.osgi.service.useradmin.UserAdmin;
}
}
+ /** Configures a workspace. */
protected void configureJcr(Repository repository, String workspaceName) {
Session adminSession;
try {
return null;
}
+ /**
+ * To be overridden in order to programmatically set relationships between
+ * roles. Does nothing by default.
+ */
protected void configureStandardRoles() {
}
- protected void addManagersToGroup(String groupDn) {
- }
-
/**
* Creates the base JCR tree structure expected for this app if necessary.
*
* UTILITIES
*/
+ /** Create these roles as group if they don't exist. */
protected void makeSureRolesExists(EnumSet<? extends Distinguished> enumSet) {
makeSureRolesExists(Distinguished.enumToDns(enumSet));
}
+ /** Create these roles as group if they don't exist. */
protected void makeSureRolesExists(Set<String> requiredRoles) {
if (requiredRoles == null)
return;
}
}
- protected void addManagersToGroups(List<String> groupDns) {
- for (String groupDn : groupDns)
- addManagersToGroup(groupDn);
- }
-
- protected void addToGroup(String officeGroup, String groupDn) {
- if (officeGroup.contentEquals(groupDn)) {
+ /** Add a user or group to a group. */
+ protected void addToGroup(String groupToAddDn, String groupDn) {
+ if (groupToAddDn.contentEquals(groupDn)) {
if (log.isTraceEnabled())
log.trace("Ignore adding group " + groupDn + " to itself");
return;
}
if (getUserAdmin() == null) {
- log.warn("No user admin service available, cannot add group " + officeGroup + " to " + groupDn);
+ log.warn("No user admin service available, cannot add group " + groupToAddDn + " to " + groupDn);
return;
}
- Group managerGroup = (Group) getUserAdmin().getRole(officeGroup);
+ Group groupToAdd = (Group) getUserAdmin().getRole(groupToAddDn);
+ if (groupToAdd == null)
+ throw new IllegalArgumentException("Group " + groupToAddDn + " not found");
Group group = (Group) getUserAdmin().getRole(groupDn);
if (group == null)
throw new IllegalArgumentException("Group " + groupDn + " not found");
try {
getUserTransaction().begin();
- if (group.addMember(managerGroup))
- log.info("Added " + officeGroup + " to " + group);
+ if (group.addMember(groupToAdd))
+ log.info("Added " + groupToAddDn + " to " + group);
getUserTransaction().commit();
} catch (Exception e) {
try {
} catch (Exception e1) {
// silent
}
- throw new IllegalStateException("Cannot add " + managerGroup + " to " + group);
+ throw new IllegalStateException("Cannot add " + groupToAddDn + " to " + groupDn);
}
}