]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.api.acr/src/org/argeo/api/acr/spi/ProvidedSession.java
1 package org
.argeo
.api
.acr
.spi
;
3 import java
.util
.Collections
;
4 import java
.util
.Iterator
;
7 import javax
.xml
.XMLConstants
;
8 import javax
.xml
.namespace
.NamespaceContext
;
10 import org
.argeo
.api
.acr
.ContentNameSupplier
;
11 import org
.argeo
.api
.acr
.ContentSession
;
13 public interface ProvidedSession
extends ContentSession
, NamespaceContext
{
14 ProvidedRepository
getRepository();
19 /** @return the bound namespace or null if not found */
20 String
findNamespace(String prefix
);
22 // TODO find the default prefix?
23 Set
<String
> findPrefixes(String namespaceURI
);
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())
30 return prefixes
.iterator().next();
34 default String
getNamespaceURI(String prefix
) {
35 String namespaceURI
= ContentNameSupplier
.getStandardNamespaceURI(prefix
);
36 if (namespaceURI
!= null)
38 if (XMLConstants
.DEFAULT_NS_PREFIX
.equals(prefix
))
39 return XMLConstants
.NULL_NS_URI
;
40 namespaceURI
= findNamespace(prefix
);
41 if (namespaceURI
!= null)
43 return XMLConstants
.NULL_NS_URI
;
47 default String
getPrefix(String namespaceURI
) {
48 String prefix
= ContentNameSupplier
.getStandardPrefix(namespaceURI
);
51 if (XMLConstants
.NULL_NS_URI
.equals(namespaceURI
))
52 return XMLConstants
.DEFAULT_NS_PREFIX
;
53 return findPrefix(namespaceURI
);
57 default Iterator
<String
> getPrefixes(String namespaceURI
) {
58 Iterator
<String
> standard
= ContentNameSupplier
.getStandardPrefixes(namespaceURI
);
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();