* "https://github.com/krb5/krb5/blob/master/src/plugins/kdb/ldap/libkdb_ldap/kerberos.schema">Kerberos
* LDAP (partial)</a>
*/
-public enum LdapAttrs implements SpecifiedName {
+public enum LdapAttrs implements SpecifiedName, QualifiedName {
/** */
uid("0.9.2342.19200300.100.1.1", "RFC 4519"),
/** */
public final static String DN = "dn";
- private final static String LDAP_ = "ldap:";
+// private final static String LDAP_ = "ldap:";
private final String oid, spec;
return spec;
}
- public String property() {
- return new StringBuilder(LDAP_).append(name()).toString();
+ @Override
+ public String getPrefix() {
+ return prefix();
+ }
+
+ public static String prefix() {
+ return "ldap";
+ }
+
+ @Override
+ public String getNamespace() {
+ return namespace();
+ }
+
+ public static String namespace() {
+ return "http://www.argeo.org/ns/ldap";
}
@Override
--- /dev/null
+package org.argeo.naming;
+
+/** Can be applied to {@link Enum}s in order to generate prefixed names. */
+public interface QualifiedName {
+ String name();
+
+ default String getPrefix() {
+ return null;
+ }
+
+ default String getNamespace() {
+ return null;
+ }
+
+ default String property() {
+ return qualified();
+ }
+
+ default String qualified() {
+ String prefix = getPrefix();
+ return prefix != null ? prefix + ":" + name() : name();
+ }
+
+ default String withNamespace() {
+ String namespace = getNamespace();
+ if (namespace == null)
+ throw new UnsupportedOperationException("No namespace is specified for " + getClass());
+ return "{" + namespace + "}" + name();
+ }
+}