Stabilise deployment
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / CmsInstance.java
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
new file mode 100644 (file)
index 0000000..795f063
--- /dev/null
@@ -0,0 +1,43 @@
+package org.argeo.cms.internal.kernel;
+
+import javax.jcr.Repository;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.jcr.ArgeoJcrConstants;
+import org.argeo.node.NodeConstants;
+import org.argeo.node.NodeInstance;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class CmsInstance implements NodeInstance {
+       private final Log log = LogFactory.getLog(getClass());
+       private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
+
+
+       public CmsInstance() {
+               initTrackers();
+       }
+
+       private void initTrackers() {
+               // node repository
+               new ServiceTracker<Repository, Repository>(bc, Repository.class, null) {
+                       @Override
+                       public Repository addingService(ServiceReference<Repository> reference) {
+                               Object cn = reference.getProperty(NodeConstants.CN);
+                               if (cn != null && cn.equals(ArgeoJcrConstants.ALIAS_NODE)) {
+                                       if (log.isDebugEnabled())
+                                               log.debug("Node repository is available");
+                               }
+                               return super.addingService(reference);
+                       }
+               }.open();
+       }
+
+       public void shutdown() {
+
+       }
+
+}