X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.api.acr%2Fsrc%2Forg%2Fargeo%2Fapi%2Facr%2FQNamed.java;fp=org.argeo.api.acr%2Fsrc%2Forg%2Fargeo%2Fapi%2Facr%2FQNamed.java;h=9852a602a339e3b8f796a2c85186933e53f4dd69;hb=7b90373ca37766e80fa5b127e6a2dcd90a9dc94f;hp=73ae4f02ead43b8c69038712e6e3a17477090ffe;hpb=9f4ee8be1c272ee5ece89d88b77179b9d470dea5;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java b/org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java index 73ae4f02e..9852a602a 100644 --- a/org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java +++ b/org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java @@ -15,23 +15,52 @@ public interface QNamed extends Supplier { return name(); } + /** + * A {@link QName} corresponding to this definition. Calls + * {@link #createQName()} by default, but it could return a cached value. + */ default QName qName() { - return new ContentName(getNamespace(), localName(), getDefaultPrefix()); + return createQName(); } + /** + * A prefixed representation of this qualified name within the provided + * {@link NamespaceContext}. + */ default String get(NamespaceContext namespaceContext) { return namespaceContext.getPrefix(getNamespace()) + ":" + localName(); } - /** This qualified named with its default prefix. If it is unqualified this method should be overridden, or QNamed.Unqualified be used. */ + /** + * Create a {@link QName} corresponding on this definition. Can typically be + * used to cache the {@link QName} in enums. + */ + default QName createQName() { + return new ContentName(getNamespace(), localName(), getDefaultPrefix()); + } + + /** + * This qualified named with its default prefix. If it is unqualified this + * method should be overridden, or QNamed.Unqualified be used. + */ default String get() { return getDefaultPrefix() + ":" + localName(); } + /** The namespace URI of this qualified name. */ String getNamespace(); + /** + * The default prefix of this qualified name, as expected to be found in + * {@link RuntimeNamespaceContext}. + */ String getDefaultPrefix(); + /** Compares to a plain {@link QName}. */ + default boolean equals(QName qName) { + return qName().equals(qName); + } + /** To be used by enums without namespace (typically XML attributes). */ static interface Unqualified extends QNamed { @Override