X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FCmsInstance.java;h=14979711b5dc898ef20d84b54f89f64e93e26216;hb=aa3eae8ed83ae3b8b3cc98826ee02d121795cb60;hp=fb3e6ad4d88c5f6b531edf45182c2a4fe577bf40;hpb=61780b581925666edd4bd7743a00dca7170f1d35;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsInstance.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsInstance.java index fb3e6ad4d..14979711b 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsInstance.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsInstance.java @@ -1,9 +1,11 @@ package org.argeo.cms.internal.kernel; import javax.jcr.Repository; +import javax.naming.ldap.LdapName; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.cms.CmsException; import org.argeo.node.NodeConstants; import org.argeo.node.NodeInstance; import org.osgi.framework.BundleContext; @@ -15,6 +17,7 @@ public class CmsInstance implements NodeInstance { private final Log log = LogFactory.getLog(getClass()); private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext(); + private HomeRepository homeRepository; public CmsInstance() { initTrackers(); @@ -26,12 +29,20 @@ public class CmsInstance implements NodeInstance { @Override public Repository addingService(ServiceReference reference) { Object cn = reference.getProperty(NodeConstants.CN); - if (cn != null && cn.equals(NodeConstants.ALIAS_NODE)) { - if (log.isDebugEnabled()) - log.debug("Node repository is available"); + if (cn != null && cn.equals(NodeConstants.HOME)) { + homeRepository = (HomeRepository) bc.getService(reference); + if (log.isTraceEnabled()) + log.trace("Home repository is available"); } return super.addingService(reference); } + + @Override + public void removedService(ServiceReference reference, Repository service) { + super.removedService(reference, service); + homeRepository = null; + } + }.open(); } @@ -39,4 +50,12 @@ public class CmsInstance implements NodeInstance { } + @Override + public void createWorkgroup(LdapName dn) { + if (homeRepository == null) + throw new CmsException("Home repository is not available"); + // TODO add check that the group exists + homeRepository.createWorkgroup(dn); + } + }