Programación en castellano Añadir una dirección | Buscador | Cursos | Artículos | Foros | Formación

Sistema de Nombrado en Java (JNDI) y II
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


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

Principio Página
© 1999-2002, Programación en castellano, s.l.
Contacto - Datos legales

ReD Internet: Hospedaje Web | envio sms gratis | Salvapantallas | Fondos de Escritorio, famosas | melodias moviles gratis| Gratis