]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.api.acr/src/org/argeo/api/acr/ContentSession.java
Experiment with package level A2 metadata
[lgpl/argeo-commons.git] / org.argeo.api.acr / src / org / argeo / api / acr / ContentSession.java
1 package org.argeo.api.acr;
2
3 import java.util.Locale;
4 import java.util.Objects;
5
6 import javax.security.auth.Subject;
7 import javax.xml.XMLConstants;
8 import javax.xml.namespace.NamespaceContext;
9 import javax.xml.namespace.QName;
10
11 public interface ContentSession extends NamespaceContext {
12 Subject getSubject();
13
14 Locale getLocale();
15
16 Content get(String path);
17
18 /*
19 * NAMESPACE CONTEXT
20 */
21
22 default ContentName parsePrefixedName(String nameWithPrefix) {
23 Objects.requireNonNull(nameWithPrefix, "Name cannot be null");
24 if (nameWithPrefix.charAt(0) == '{') {
25 return new ContentName(QName.valueOf(nameWithPrefix), this);
26 }
27 int index = nameWithPrefix.indexOf(':');
28 if (index < 0) {
29 return new ContentName(nameWithPrefix);
30 }
31 String prefix = nameWithPrefix.substring(0, index);
32 // TODO deal with empty name?
33 String localName = nameWithPrefix.substring(index + 1);
34 String namespaceURI = getNamespaceURI(prefix);
35 if (XMLConstants.NULL_NS_URI.equals(namespaceURI))
36 throw new IllegalStateException("Prefix " + prefix + " is unbound.");
37 return new ContentName(namespaceURI, localName, prefix);
38 }
39
40 default String toPrefixedName(QName name) {
41 if (XMLConstants.NULL_NS_URI.equals(name.getNamespaceURI()))
42 return name.getLocalPart();
43 String prefix = getPrefix(name.getNamespaceURI());
44 if (prefix == null)
45 throw new IllegalStateException("Namespace " + name.getNamespaceURI() + " is unbound.");
46 return prefix + ":" + name.getLocalPart();
47 }
48
49 }