package org.argeo.api.acr.spi; import java.util.Iterator; import java.util.concurrent.CompletionStage; import javax.xml.namespace.NamespaceContext; import org.argeo.api.acr.ContentSession; public interface ProvidedSession extends ContentSession { ProvidedRepository getRepository(); CompletionStage onClose(); /* * NAMESPACE CONTEXT */ @Override default String getPrefix(String namespaceURI) { Iterator prefixes = getPrefixes(namespaceURI); return prefixes.hasNext() ? prefixes.next() : null; } // /** @return the bound namespace or null if not found */ // String findNamespace(String prefix); // // // TODO find the default prefix? // Set findPrefixes(String namespaceURI); // // /** To be overridden for optimisation, as it will be called a lot */ // default String findPrefix(String namespaceURI) { // Set 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 getPrefixes(String namespaceURI) { // Iterator 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 prefixes = findPrefixes(namespaceURI); // assert prefixes != null; // return prefixes.iterator(); // } }