]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java
Improve ACR, introduce migration from JCR.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / CmsContentSession.java
index 0255856344e34109d05c301465be74d1415c32d7..13494dd0a8588825b23c386fa926471bbe5543dc 100644 (file)
@@ -1,26 +1,23 @@
 package org.argeo.cms.acr;
 
-import java.util.Iterator;
+import java.util.HashSet;
 import java.util.Locale;
-import java.util.Map;
 import java.util.Set;
-import java.util.TreeSet;
 import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionStage;
 import java.util.function.Consumer;
-import java.util.stream.Collectors;
 
 import javax.security.auth.Subject;
 
 import org.argeo.api.acr.Content;
 import org.argeo.api.acr.ContentSession;
 import org.argeo.api.acr.CrName;
-import org.argeo.api.acr.NamespaceUtils;
 import org.argeo.api.acr.spi.ContentProvider;
 import org.argeo.api.acr.spi.ProvidedContent;
 import org.argeo.api.acr.spi.ProvidedRepository;
 import org.argeo.api.acr.spi.ProvidedSession;
+import org.argeo.api.uuid.UuidFactory;
 import org.argeo.cms.acr.xml.DomContentProvider;
 
 /** Implements {@link ProvidedSession}. */
@@ -31,20 +28,23 @@ class CmsContentSession implements ProvidedSession {
        private Subject subject;
        private Locale locale;
 
+       private UuidFactory uuidFactory;
+
        private CompletableFuture<ProvidedSession> closed = new CompletableFuture<>();
 
        private CompletableFuture<ContentSession> edition;
 
-       private Set<ContentProvider> modifiedProviders = new TreeSet<>();
+       private Set<ContentProvider> modifiedProviders = new HashSet<>();
 
        private Content sessionRunDir;
 
-       public CmsContentSession(AbstractContentRepository contentRepository, UUID uuid, Subject subject, Locale locale) {
+       public CmsContentSession(AbstractContentRepository contentRepository, UUID uuid, Subject subject, Locale locale,
+                       UuidFactory uuidFactory) {
                this.contentRepository = contentRepository;
                this.subject = subject;
                this.locale = locale;
                this.uuid = uuid;
-
+               this.uuidFactory = uuidFactory;
        }
 
        public void close() {
@@ -98,6 +98,10 @@ class CmsContentSession implements ProvidedSession {
                return contentRepository;
        }
 
+       public UuidFactory getUuidFactory() {
+               return uuidFactory;
+       }
+
        /*
         * MOUNT MANAGEMENT
         */
@@ -113,17 +117,19 @@ class CmsContentSession implements ProvidedSession {
         * NAMESPACE CONTEXT
         */
 
-       @Override
-       public String getNamespaceURI(String prefix) {
-               return NamespaceUtils.getNamespaceURI((p) -> contentRepository.getTypesManager().getPrefixes().get(p), prefix);
-       }
-
-       @Override
-       public Iterator<String> getPrefixes(String namespaceURI) {
-               return NamespaceUtils.getPrefixes((ns) -> contentRepository.getTypesManager().getPrefixes().entrySet().stream()
-                               .filter(e -> e.getValue().equals(ns)).map(Map.Entry::getKey).collect(Collectors.toUnmodifiableSet()),
-                               namespaceURI);
-       }
+//     @Override
+//     public String getNamespaceURI(String prefix) {
+//             return RuntimeNamespaceContext.getNamespaceContext().getNamespaceURI(prefix);
+////           return NamespaceUtils.getNamespaceURI((p) -> contentRepository.getTypesManager().getPrefixes().get(p), prefix);
+//     }
+//
+//     @Override
+//     public Iterator<String> getPrefixes(String namespaceURI) {
+//             return RuntimeNamespaceContext.getNamespaceContext().getPrefixes(namespaceURI);
+////           return NamespaceUtils.getPrefixes((ns) -> contentRepository.getTypesManager().getPrefixes().entrySet().stream()
+////                           .filter(e -> e.getValue().equals(ns)).map(Map.Entry::getKey).collect(Collectors.toUnmodifiableSet()),
+////                           namespaceURI);
+//     }
 
        @Override
        public CompletionStage<ContentSession> edit(Consumer<ContentSession> work) {
@@ -167,7 +173,7 @@ class CmsContentSession implements ProvidedSession {
                        else {
                                Content runDir = get(CmsContentRepository.RUN_BASE);
                                // TODO deal with no run dir available?
-                               sessionRunDir = runDir.add(uuid.toString(), CrName.COLLECTION.get());
+                               sessionRunDir = runDir.add(uuid.toString(), CrName.collection.qName());
                        }
                }
                return sessionRunDir;