]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java
Start improving single-user login
[lgpl/argeo-commons.git] / org.argeo.api.acr / src / org / argeo / api / acr / QNamed.java
1 package org.argeo.api.acr;
2
3 import java.util.function.Supplier;
4
5 import javax.xml.XMLConstants;
6 import javax.xml.namespace.NamespaceContext;
7 import javax.xml.namespace.QName;
8
9 /** An optionally qualified name. Primarily meant to be used in enums. */
10 public interface QNamed extends Supplier<String> {
11 String name();
12
13 /** To be overridden when XML naming is not compatible with Java naming. */
14 default String localName() {
15 return name();
16 }
17
18 default QName qName() {
19 return new ContentName(getNamespace(), localName(), getDefaultPrefix());
20 }
21
22 default String get(NamespaceContext namespaceContext) {
23 return namespaceContext.getPrefix(getNamespace()) + ":" + localName();
24 }
25
26 default String get() {
27 return getDefaultPrefix() + ":" + localName();
28 }
29
30 String getNamespace();
31
32 String getDefaultPrefix();
33
34 /** To be used by enums without namespace (typically XML attributes). */
35 static interface Unqualified extends QNamed {
36 @Override
37 default String getNamespace() {
38 return XMLConstants.NULL_NS_URI;
39 }
40
41 @Override
42 default String getDefaultPrefix() {
43 return XMLConstants.DEFAULT_NS_PREFIX;
44 }
45
46 }
47 }