Make ACR content providers more configurable
[lgpl/argeo-commons.git] / jcr / org.argeo.cms.jcr / src / org / argeo / cms / jcr / acr / JcrContentProvider.java
index 235e27d1a922139558d8e8c42da322199340dda5..08f0ee12fa48a36ed061bd33314d29cd565d8336 100644 (file)
@@ -16,7 +16,7 @@ import org.argeo.api.acr.Content;
 import org.argeo.api.acr.spi.ContentProvider;
 import org.argeo.api.acr.spi.ProvidedContent;
 import org.argeo.api.acr.spi.ProvidedSession;
-import org.argeo.cms.acr.CmsContentRepository;
+import org.argeo.api.cms.CmsConstants;
 import org.argeo.cms.acr.ContentUtils;
 import org.argeo.cms.jcr.CmsJcrUtils;
 import org.argeo.jcr.JcrException;
@@ -24,6 +24,7 @@ import org.argeo.jcr.JcrUtils;
 
 /** A JCR workspace accessed as an {@link ContentProvider}. */
 public class JcrContentProvider implements ContentProvider, NamespaceContext {
+
        private Repository jcrRepository;
        private Session adminSession;
 
@@ -32,7 +33,7 @@ public class JcrContentProvider implements ContentProvider, NamespaceContext {
        private Map<ProvidedSession, JcrSessionAdapter> sessionAdapters = Collections.synchronizedMap(new HashMap<>());
 
        public void start(Map<String, String> properties) {
-               mountPath = properties.get(CmsContentRepository.ACR_MOUNT_PATH_PROPERTY);
+               mountPath = properties.get(CmsConstants.ACR_MOUNT_PATH);
                if ("/".equals(mountPath))
                        throw new IllegalArgumentException("JCR content provider cannot be root /");
                Objects.requireNonNull(mountPath);
@@ -40,7 +41,8 @@ public class JcrContentProvider implements ContentProvider, NamespaceContext {
        }
 
        public void stop() {
-               JcrUtils.logoutQuietly(adminSession);
+               if (adminSession.isLive())
+                       JcrUtils.logoutQuietly(adminSession);
        }
 
        public void setJcrRepository(Repository jcrRepository) {