JCR as an ACR backend
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / runtime / DeployedContentRepository.java
diff --git a/org.argeo.cms/src/org/argeo/cms/internal/runtime/DeployedContentRepository.java b/org.argeo.cms/src/org/argeo/cms/internal/runtime/DeployedContentRepository.java
new file mode 100644 (file)
index 0000000..6392fda
--- /dev/null
@@ -0,0 +1,47 @@
+package org.argeo.cms.internal.runtime;
+
+import java.nio.file.Path;
+import java.util.Map;
+
+import org.argeo.api.acr.spi.ContentProvider;
+import org.argeo.api.cms.CmsConstants;
+import org.argeo.api.cms.CmsState;
+import org.argeo.cms.acr.CmsContentRepository;
+import org.argeo.cms.acr.fs.FsContentProvider;
+import org.argeo.util.LangUtils;
+
+public class DeployedContentRepository extends CmsContentRepository {
+       private final static String ROOT_XML = "root.xml";
+       private final static String ACR_MOUNT_PATH = "acr.mount.path";
+
+       private CmsState cmsState;
+
+       @Override
+       public void start() {
+               super.start();
+               Path rootXml = KernelUtils.getOsgiInstancePath(KernelConstants.DIR_NODE).resolve(ROOT_XML);
+               initRootContentProvider(rootXml);
+
+               Path srvPath = KernelUtils.getOsgiInstancePath(CmsConstants.SRV_WORKSPACE);
+               FsContentProvider srvContentProvider = new FsContentProvider(srvPath, false);
+               addProvider("/" + CmsConstants.SRV_WORKSPACE, srvContentProvider);
+       }
+
+       @Override
+       public void stop() {
+               super.stop();
+       }
+
+       public void addContentProvider(ContentProvider provider, Map<String, Object> properties) {
+               String base = LangUtils.get(properties, ACR_MOUNT_PATH);
+               addProvider(base, provider);
+       }
+
+       public void removeContentProvider(ContentProvider provider, Map<String, Object> properties) {
+       }
+
+       public void setCmsState(CmsState cmsState) {
+               this.cmsState = cmsState;
+       }
+
+}