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=1b09095425a7c067c097eb91bed5b4a4a33f0dc8;hp=5fedd1d314d2a3b6fe9aea5df884b897f8c58f3d;hpb=0243aa5633af84d8608ba912483dbaaaefac42f1;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 5fedd1d31..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.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); + } + }