package org.argeo.cms.internal.runtime;
+import java.io.IOException;
+import java.nio.file.Files;
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.api.cms.CmsLog;
+import org.argeo.api.cms.directory.CmsUserManager;
import org.argeo.cms.acr.CmsContentRepository;
+import org.argeo.cms.acr.directory.DirectoryContentProvider;
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 final static String ROOT_XML = "cr:root.xml";
- private CmsState cmsState;
+ private final static CmsLog log = CmsLog.getLog(DeployedContentRepository.class);
+
+ private CmsUserManager userManager;
@Override
public void start() {
- super.start();
- Path rootXml = KernelUtils.getOsgiInstancePath(KernelConstants.DIR_NODE).resolve(ROOT_XML);
- initRootContentProvider(rootXml);
+ long begin = System.currentTimeMillis();
+ try {
+ super.start();
+ Path rootXml = KernelUtils.getOsgiInstancePath(ROOT_XML);
+ initRootContentProvider(null);
+
+// Path srvPath = KernelUtils.getOsgiInstancePath(CmsConstants.SRV_WORKSPACE);
+// FsContentProvider srvContentProvider = new FsContentProvider("/" + CmsConstants.SRV_WORKSPACE, srvPath, false);
+// addProvider(srvContentProvider);
+
+ // run dir
+ Path runDirPath = KernelUtils.getOsgiInstancePath(CmsContentRepository.RUN_BASE);
+ if (runDirPath != null) {
+ Files.createDirectories(runDirPath);
+ FsContentProvider runContentProvider = new FsContentProvider(CmsContentRepository.RUN_BASE, runDirPath);
+ addProvider(runContentProvider);
+ }
+
+ // users
+ DirectoryContentProvider directoryContentProvider = new DirectoryContentProvider(
+ CmsContentRepository.DIRECTORY_BASE, userManager);
+ addProvider(directoryContentProvider);
- Path srvPath = KernelUtils.getOsgiInstancePath(CmsConstants.SRV_WORKSPACE);
- FsContentProvider srvContentProvider = new FsContentProvider(srvPath, false);
- addProvider("/" + CmsConstants.SRV_WORKSPACE, srvContentProvider);
+ // remote
+// DavContentProvider davContentProvider = new DavContentProvider("/srv",
+// URI.create("http://localhost/unstable/a2/"));
+// addProvider(davContentProvider);
+ } catch (IOException e) {
+ throw new IllegalStateException("Cannot start content repository", e);
+ }
+ long duration = System.currentTimeMillis() - begin;
+ log.debug(() -> "CMS content repository available (initialisation took " + duration + " ms)");
}
@Override
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;
+ public void setUserManager(CmsUserManager userManager) {
+ this.userManager = userManager;
}
}