]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsInstance.java
Fix automated Kerberos config
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / CmsInstance.java
1 package org.argeo.cms.internal.kernel;
2
3 import javax.jcr.Repository;
4 import javax.naming.ldap.LdapName;
5
6 import org.apache.commons.logging.Log;
7 import org.apache.commons.logging.LogFactory;
8 import org.argeo.cms.CmsException;
9 import org.argeo.node.NodeConstants;
10 import org.argeo.node.NodeInstance;
11 import org.osgi.framework.BundleContext;
12 import org.osgi.framework.FrameworkUtil;
13 import org.osgi.framework.ServiceReference;
14 import org.osgi.util.tracker.ServiceTracker;
15
16 public class CmsInstance implements NodeInstance {
17 private final Log log = LogFactory.getLog(getClass());
18 private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
19
20 private HomeRepository homeRepository;
21
22 public CmsInstance() {
23 initTrackers();
24 }
25
26 private void initTrackers() {
27 // node repository
28 new ServiceTracker<Repository, Repository>(bc, Repository.class, null) {
29 @Override
30 public Repository addingService(ServiceReference<Repository> reference) {
31 Object cn = reference.getProperty(NodeConstants.CN);
32 if (cn != null && cn.equals(NodeConstants.HOME)) {
33 homeRepository = (HomeRepository) bc.getService(reference);
34 if (log.isDebugEnabled())
35 log.debug("Home repository is available");
36 }
37 return super.addingService(reference);
38 }
39
40 @Override
41 public void removedService(ServiceReference<Repository> reference, Repository service) {
42 super.removedService(reference, service);
43 homeRepository = null;
44 }
45
46 }.open();
47 }
48
49 public void shutdown() {
50
51 }
52
53 @Override
54 public void createWorkgroup(LdapName dn) {
55 if (homeRepository == null)
56 throw new CmsException("Home repository is not available");
57 // TODO add check that the group exists
58 homeRepository.createWorkgroup(dn);
59 }
60
61 }