X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.api.acr%2Fsrc%2Forg%2Fargeo%2Fapi%2Facr%2FQNamed.java;h=9852a602a339e3b8f796a2c85186933e53f4dd69;hb=9e6715d360fb29bb817ecaf6d49f0c8a3cc014f5;hp=063a7d32175f1d0e0a949964720c35a239464f68;hpb=d2bca81ff63496bf1d879f4cbcd6a531f598e69c;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 063a7d321..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,22 +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(); } + /** + * 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 @@ -43,5 +73,10 @@ public interface QNamed extends Supplier { return XMLConstants.DEFAULT_NS_PREFIX; } + @Override + default String get() { + return localName(); + } + } }