JCR as an ACR backend
[lgpl/argeo-commons.git] / org.argeo.api.acr / src / org / argeo / api / acr / spi / ProvidedSession.java
index f90d6747565b81aeadee1d74075e7d86c2cd30c9..60f64def8dd77ad128e2b7931c6624f64b2ae161 100644 (file)
@@ -1,68 +1,74 @@
 package org.argeo.api.acr.spi;
 
-import java.util.Collections;
 import java.util.Iterator;
-import java.util.Set;
+import java.util.concurrent.CompletionStage;
 
-import javax.xml.XMLConstants;
 import javax.xml.namespace.NamespaceContext;
 
-import org.argeo.api.acr.ContentNameSupplier;
 import org.argeo.api.acr.ContentSession;
 
-public interface ProvidedSession extends ContentSession, NamespaceContext {
+public interface ProvidedSession extends ContentSession {
        ProvidedRepository getRepository();
 
+       CompletionStage<ProvidedSession> onClose();
+
        /*
         * NAMESPACE CONTEXT
         */
-       /** @return the bound namespace or null if not found */
-       String findNamespace(String prefix);
-
-       // TODO find the default prefix?
-       Set<String> findPrefixes(String namespaceURI);
-
-       /** To be overridden for optimisation, as it will be called a lot */
-       default String findPrefix(String namespaceURI) {
-               Set<String> prefixes = findPrefixes(namespaceURI);
-               if (prefixes.isEmpty())
-                       return null;
-               return prefixes.iterator().next();
-       }
-
-       @Override
-       default String getNamespaceURI(String prefix) {
-               String namespaceURI = ContentNameSupplier.getStandardNamespaceURI(prefix);
-               if (namespaceURI != null)
-                       return namespaceURI;
-               if (XMLConstants.DEFAULT_NS_PREFIX.equals(prefix))
-                       return XMLConstants.NULL_NS_URI;
-               namespaceURI = findNamespace(prefix);
-               if (namespaceURI != null)
-                       return namespaceURI;
-               return XMLConstants.NULL_NS_URI;
-       }
 
        @Override
        default String getPrefix(String namespaceURI) {
-               String prefix = ContentNameSupplier.getStandardPrefix(namespaceURI);
-               if (prefix != null)
-                       return prefix;
-               if (XMLConstants.NULL_NS_URI.equals(namespaceURI))
-                       return XMLConstants.DEFAULT_NS_PREFIX;
-               return findPrefix(namespaceURI);
+               Iterator<String> prefixes = getPrefixes(namespaceURI);
+               return prefixes.hasNext() ? prefixes.next() : null;
        }
 
-       @Override
-       default Iterator<String> getPrefixes(String namespaceURI) {
-               Iterator<String> standard = ContentNameSupplier.getStandardPrefixes(namespaceURI);
-               if (standard != null)
-                       return standard;
-               if (XMLConstants.NULL_NS_URI.equals(namespaceURI))
-                       return Collections.singleton(XMLConstants.DEFAULT_NS_PREFIX).iterator();
-               Set<String> prefixes = findPrefixes(namespaceURI);
-               assert prefixes != null;
-               return prefixes.iterator();
-       }
+//     /** @return the bound namespace or null if not found */
+//     String findNamespace(String prefix);
+//
+//     // TODO find the default prefix?
+//     Set<String> findPrefixes(String namespaceURI);
+//
+//     /** To be overridden for optimisation, as it will be called a lot */
+//     default String findPrefix(String namespaceURI) {
+//             Set<String> prefixes = findPrefixes(namespaceURI);
+//             if (prefixes.isEmpty())
+//                     return null;
+//             return prefixes.iterator().next();
+//     }
+
+//     @Override
+//     default String getNamespaceURI(String prefix) {
+//             String namespaceURI = NamespaceUtils.getStandardNamespaceURI(prefix);
+//             if (namespaceURI != null)
+//                     return namespaceURI;
+//             if (XMLConstants.DEFAULT_NS_PREFIX.equals(prefix))
+//                     return XMLConstants.NULL_NS_URI;
+//             namespaceURI = findNamespace(prefix);
+//             if (namespaceURI != null)
+//                     return namespaceURI;
+//             return XMLConstants.NULL_NS_URI;
+//     }
+//
+//     @Override
+//     default String getPrefix(String namespaceURI) {
+//             String prefix = NamespaceUtils.getStandardPrefix(namespaceURI);
+//             if (prefix != null)
+//                     return prefix;
+//             if (XMLConstants.NULL_NS_URI.equals(namespaceURI))
+//                     return XMLConstants.DEFAULT_NS_PREFIX;
+//             return findPrefix(namespaceURI);
+//     }
+//
+//     @Override
+//     default Iterator<String> getPrefixes(String namespaceURI) {
+//             Iterator<String> standard = NamespaceUtils.getStandardPrefixes(namespaceURI);
+//             if (standard != null)
+//                     return standard;
+//             if (XMLConstants.NULL_NS_URI.equals(namespaceURI))
+//                     return Collections.singleton(XMLConstants.DEFAULT_NS_PREFIX).iterator();
+//             Set<String> prefixes = findPrefixes(namespaceURI);
+//             assert prefixes != null;
+//             return prefixes.iterator();
+//     }
 
 }