]> git.argeo.org Git - gpl/argeo-jcr.git/blobdiff - org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/CmsJcrDeployment.java
Make CMS JCR deployment mor erobust
[gpl/argeo-jcr.git] / org.argeo.cms.jcr / src / org / argeo / cms / jcr / internal / CmsJcrDeployment.java
index 35800f8953a50f23812771cf6b912c7441013c02..f3ce912951b5b522c5393151113f2480a76b20ac 100644 (file)
@@ -26,10 +26,12 @@ import javax.servlet.Servlet;
 import org.apache.jackrabbit.commons.cnd.CndImporter;
 import org.apache.jackrabbit.core.RepositoryContext;
 import org.apache.jackrabbit.core.RepositoryImpl;
+import org.argeo.api.acr.spi.ProvidedRepository;
 import org.argeo.api.cms.CmsConstants;
 import org.argeo.api.cms.CmsLog;
 import org.argeo.cms.ArgeoNames;
 import org.argeo.cms.jcr.CmsJcrUtils;
+import org.argeo.cms.jcr.acr.JcrContentNamespace;
 import org.argeo.cms.jcr.internal.servlet.CmsRemotingServlet;
 import org.argeo.cms.jcr.internal.servlet.CmsWebDavServlet;
 import org.argeo.cms.jcr.internal.servlet.JcrHttpUtils;
@@ -40,7 +42,6 @@ import org.argeo.jcr.JcrUtils;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
-import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.wiring.BundleCapability;
@@ -52,7 +53,7 @@ import org.osgi.util.tracker.ServiceTracker;
 /** Implementation of a CMS deployment. */
 public class CmsJcrDeployment {
        private final CmsLog log = CmsLog.getLog(getClass());
-       private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
+       private BundleContext bc;
 
        private DataModels dataModels;
        private String webDavConfig = JcrHttpUtils.WEBDAV_CONFIG;
@@ -62,17 +63,26 @@ public class CmsJcrDeployment {
        // Readiness
        private boolean nodeAvailable = false;
 
-//     CmsDeployment cmsDeployment;
-       public void start() {
+       private ProvidedRepository contentRepository;
+
+       public CmsJcrDeployment() {
+       }
+
+       // CmsDeployment cmsDeployment;
+       public void start(BundleContext bundleContext) {
+               // Bundle bundle = FrameworkUtil.getBundle(CmsJcrDeployment.class);
+               bc = bundleContext;
                dataModels = new DataModels(bc);
 
+               contentRepository.registerTypes(JcrContentNamespace.values());
+
                ServiceTracker<?, ?> repoContextSt = new RepositoryContextStc();
                repoContextSt.open();
                // KernelUtils.asyncOpen(repoContextSt);
 
 //             nodeDeployment = CmsJcrActivator.getService(NodeDeployment.class);
 
-               //JcrInitUtils.addToDeployment(cmsDeployment);
+               // JcrInitUtils.addToDeployment(cmsDeployment);
 
 //             contentRepository.registerTypes(NamespaceRegistry.PREFIX_JCR, NamespaceRegistry.NAMESPACE_JCR, null);
 //             contentRepository.registerTypes(NamespaceRegistry.PREFIX_MIX, NamespaceRegistry.NAMESPACE_MIX, null);
@@ -88,7 +98,6 @@ public class CmsJcrDeployment {
 //             if (nodeHttp != null)
 //                     nodeHttp.destroy();
 
-
                try {
                        for (ServiceReference<JackrabbitLocalRepository> sr : bc
                                        .getServiceReferences(JackrabbitLocalRepository.class, null)) {
@@ -351,7 +360,8 @@ public class CmsJcrDeployment {
 
        boolean isStandalone(String dataModelName) {
                return true;
-               //return cmsDeployment.getProps(CmsConstants.NODE_REPOS_FACTORY_PID, dataModelName) != null;
+               // return cmsDeployment.getProps(CmsConstants.NODE_REPOS_FACTORY_PID,
+               // dataModelName) != null;
        }
 
        private void publishLocalRepo(String dataModelName, Repository repository) {
@@ -432,6 +442,10 @@ public class CmsJcrDeployment {
                bc.registerService(Servlet.class, remotingServlet, ip);
        }
 
+       public void setContentRepository(ProvidedRepository contentRepository) {
+               this.contentRepository = contentRepository;
+       }
+
        private class RepositoryContextStc extends ServiceTracker<RepositoryContext, RepositoryContext> {
 
                public RepositoryContextStc() {