X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.core%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fcore%2FDefaultSuiteMaintenanceService.java;fp=org.argeo.suite.core%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fcore%2FDefaultSuiteMaintenanceService.java;h=0000000000000000000000000000000000000000;hp=1c9feb210cdbb663df17301c6e3264211c3cb112;hb=4186dac38affdaff2550aef65fbc37fe3463c3ff;hpb=5bbce644be337f1ad9916c23dba141ad1f38b3ba diff --git a/org.argeo.suite.core/src/org/argeo/suite/core/DefaultSuiteMaintenanceService.java b/org.argeo.suite.core/src/org/argeo/suite/core/DefaultSuiteMaintenanceService.java deleted file mode 100644 index 1c9feb2..0000000 --- a/org.argeo.suite.core/src/org/argeo/suite/core/DefaultSuiteMaintenanceService.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.argeo.suite.core; - -import java.util.List; - -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.nodetype.NodeType; -import javax.jcr.security.Privilege; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.connect.AppMaintenanceService; -import org.argeo.connect.SystemMaintenanceService; -import org.argeo.jcr.JcrUtils; -import org.argeo.node.NodeConstants; -import org.argeo.suite.ArgeoSuiteRole; -import org.argeo.suite.SuiteException; - -/** Make the DJay-ing to provide a full running Suite platform */ -public class DefaultSuiteMaintenanceService implements SystemMaintenanceService { - private final static Log log = LogFactory.getLog(DefaultSuiteMaintenanceService.class); - - /* DEPENDENCY INJECTION */ - private Repository repository; - private String workspaceName; - private List maintenanceServices; - - public void init() { - Session adminSession = null; - try { - adminSession = repository.login(workspaceName); - if (prepareJcrTree(adminSession)) { - configurePrivileges(adminSession); - } - } catch (Exception e) { - throw new SuiteException("Cannot initialise model", e); - } finally { - JcrUtils.logoutQuietly(adminSession); - } - } - - // To be cleaned once first init and config mechanisms have been implemented - // private final static String publicPath = "/public"; - // FIXME Users must have read access on the jcr:system/jcr:versionStorage - // node under JackRabbit to be able to manage versions - private final static String jackRabbitVersionSystemPath = "/jcr:system"; - - @Override - public boolean prepareJcrTree(Session session) { - boolean hasCHanged = false; - try { - // JcrUtils.mkdirs(session, publicPath, NodeType.NT_UNSTRUCTURED); - if (session.hasPendingChanges()) { - session.save(); - hasCHanged = true; - } - } catch (RepositoryException e) { - throw new SuiteException("Cannot build model", e); - } - for (AppMaintenanceService service : maintenanceServices) - hasCHanged |= service.prepareJcrTree(session); - if (hasCHanged) - log.info("Repository has been initialised with Argeo Suite model"); - return hasCHanged; - } - - @Override - public void configurePrivileges(Session session) { - try { - // Remove unused default JCR rights - JcrUtils.clearAccessControList(session, "/", "everyone"); - - JcrUtils.addPrivilege(session, jackRabbitVersionSystemPath, ArgeoSuiteRole.coworker.dn(), - Privilege.JCR_READ); - // Default configuration of the workspace - JcrUtils.addPrivilege(session, "/", NodeConstants.ROLE_ADMIN, Privilege.JCR_ALL); - // JcrUtils.addPrivilege(session, publicPath, NodeConstants.ROLE_USER, Privilege.JCR_READ); - // JcrUtils.addPrivilege(session, publicPath, "anonymous", Privilege.JCR_READ); - // JcrUtils.addPrivilege(session, publicPath, NodeConstants.ROLE_ANONYMOUS, Privilege.JCR_READ); - - session.save(); - } catch (RepositoryException e) { - throw new SuiteException("Cannot build model", e); - } - for (AppMaintenanceService service : maintenanceServices) - service.configurePrivileges(session); - log.info("Access control configured"); - } - - public void destroy() { - } - - /* DEPENDENCY INJECTION */ - public void setRepository(Repository repository) { - this.repository = repository; - } - - public void setWorkspaceName(String workspaceName) { - this.workspaceName = workspaceName; - } - - public void setMaintenanceServices(List maintenanceServices) { - this.maintenanceServices = maintenanceServices; - } -}