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");
}