]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.api.acr/src/org/argeo/api/acr/spi/ProvidedSession.java
Temporarily extend Jackrabbit version range
[lgpl/argeo-commons.git] / org.argeo.api.acr / src / org / argeo / api / acr / spi / ProvidedSession.java
1 package org.argeo.api.acr.spi;
2
3 import java.util.Collections;
4 import java.util.Iterator;
5 import java.util.Set;
6
7 import javax.xml.XMLConstants;
8 import javax.xml.namespace.NamespaceContext;
9
10 import org.argeo.api.acr.ContentNameSupplier;
11 import org.argeo.api.acr.ContentSession;
12
13 public interface ProvidedSession extends ContentSession, NamespaceContext {
14 ProvidedRepository getRepository();
15
16 /*
17 * NAMESPACE CONTEXT
18 */
19 /** @return the bound namespace or null if not found */
20 String findNamespace(String prefix);
21
22 // TODO find the default prefix?
23 Set<String> findPrefixes(String namespaceURI);
24
25 /** To be overridden for optimisation, as it will be called a lot */
26 default String findPrefix(String namespaceURI) {
27 Set<String> prefixes = findPrefixes(namespaceURI);
28 if (prefixes.isEmpty())
29 return null;
30 return prefixes.iterator().next();
31 }
32
33 @Override
34 default String getNamespaceURI(String prefix) {
35 String namespaceURI = ContentNameSupplier.getStandardNamespaceURI(prefix);
36 if (namespaceURI != null)
37 return namespaceURI;
38 if (XMLConstants.DEFAULT_NS_PREFIX.equals(prefix))
39 return XMLConstants.NULL_NS_URI;
40 namespaceURI = findNamespace(prefix);
41 if (namespaceURI != null)
42 return namespaceURI;
43 return XMLConstants.NULL_NS_URI;
44 }
45
46 @Override
47 default String getPrefix(String namespaceURI) {
48 String prefix = ContentNameSupplier.getStandardPrefix(namespaceURI);
49 if (prefix != null)
50 return prefix;
51 if (XMLConstants.NULL_NS_URI.equals(namespaceURI))
52 return XMLConstants.DEFAULT_NS_PREFIX;
53 return findPrefix(namespaceURI);
54 }
55
56 @Override
57 default Iterator<String> getPrefixes(String namespaceURI) {
58 Iterator<String> standard = ContentNameSupplier.getStandardPrefixes(namespaceURI);
59 if (standard != null)
60 return standard;
61 if (XMLConstants.NULL_NS_URI.equals(namespaceURI))
62 return Collections.singleton(XMLConstants.DEFAULT_NS_PREFIX).iterator();
63 Set<String> prefixes = findPrefixes(namespaceURI);
64 assert prefixes != null;
65 return prefixes.iterator();
66 }
67
68 }