]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java
Introduce UUID identified and openForEdit/freeze cycle
[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 /** This qualified named with its default prefix. If it is unqualified this method should be overridden, or QNamed.Unqualified be used. */
27 default String get() {
28 return getDefaultPrefix() + ":" + localName();
29 }
30
31 String getNamespace();
32
33 String getDefaultPrefix();
34
35 /** To be used by enums without namespace (typically XML attributes). */
36 static interface Unqualified extends QNamed {
37 @Override
38 default String getNamespace() {
39 return XMLConstants.NULL_NS_URI;
40 }
41
42 @Override
43 default String getDefaultPrefix() {
44 return XMLConstants.DEFAULT_NS_PREFIX;
45 }
46
47 @Override
48 default String get() {
49 return localName();
50 }
51
52 }
53 }