Más Nombres
El interface
Context contiene dos métodos relacionados con los
nombres:
Context.getNameInNamespace() y Context.composeName(). Estos
métodos permiten al usuario del API manipular los nombres con respecto a un contexto.
Nombres Totalmente Cualificados
El usuario del API usa Context.getNameInNamespace() para obtener
un nombre totalmente cualificado de un ejemplar Context dentro
de su espacio de nombres. La definición de este método depende del servicio de nombres/directorio
subyacente. En una implementación real, este método podría acceder al servicio subyacente o usar
la información almacenada en el ejemplar Context para generar
una respuesta.
El ejemplo en forma de árbol mantiene
un puntero para determinar el nombre totalmente cualificado de un contexto. Aquí tenemos la
definición de su getNameInNamespace():
public String getNameInNamespace() throws NamingException {
HierCtx ancestor = parent;
// No ancestor; at root of namespace
if (ancestor == null) {
return "";
}
Name name = myParser.parse("");
name.add(myAtomicName);
// Get the parent's names
while (ancestor != null && ancestor.myAtomicName != null) {
name.add(0, ancestor.myAtomicName);
ancestor = ancestor.parent;
}
return name.toString();
}
Componer Nombres
El usuario del API usa Context.composeName() para
componer nombres que posiblemente expandan múltiples espacios de nombres. La lección
¿Qué es un nombre? describe esto
con más detalles.
Como el ejemplo del espacio de nombres en forma de
árbol no soporta federación, su nombre composeName()
sólo trata con nombres compuestos. Aquí está su definición:
public Name composeName(Name name, Name prefix) throws NamingException {
Name result;
// Both are compound names; compose using compound name rules
if (!(name instanceof CompositeName) &&
!(prefix instanceof CompositeName)) {
result = (Name)(prefix.clone());
result.addAll(name);
return new CompositeName().add(result.toString());
}
// Simplistic implementation; do not support federation
throw new OperationNotSupportedException(
"Do not support composing composite names");
}