Sistema de Nombrado en Java (JNDI) y II

Casi todos los m�todos del interface Context deben procesar nombres. Por consistencia, deber�amos usar el mismo patr�n en cada m�todo que procese nombres. Una forma de conseguir esta conveniencia es definir y utilizar m�todos de utilidad para procesar el nombre de entrada. Aqu� damos dos ejemplos, uno para una implementaci�n de contexto de un espacio de nombres plano y otro para una implementaci�n de contexto de un espacio de nombres en forma de �rbol. Si una implementaci�n de contexto soporta un espacio de nombre plano o en forma de �rbol est� determindo por el servicio de nombres/directorio subyacente o por los requerimientos del proveedor de servicio.

Como se recomend� en la lecci�n Las Reglas de Fondo , para �mbos ejemplos, cada m�todo del interface Context que acepta un nombre java.lang.String est� definido simplemente para llamar a su compa�ero que acepta un Name. El resto de esta explicaci�n se enfoca en tratar los nombres estructurados.

.�Un Ejemplo de Espacio de Nombres Plano

El primer ejemplo implementa un espacio de nombres plano y no soporta federaci�n. Los m�todos que aceptan un Name usan el siguiente m�todo de utilidad para determinar los componentes del nombre que deben ser procesados:

protected String getMyComponents(Name name) throws NamingException {
    if (name instanceof CompositeName) {
        if (name.size() > 1) {
	    throw new InvalidNameException(name.toString() +
		" has more components than namespace can handle");
	}
	return name.get(0);
    } else {
	// A compound name
	return name.toString();
    }
}

Como el contexto no soporta federaci�n, acepta s�lo nombres mixtos de un s�lo componente o nombres compuestos. Si recibe un nombre mixto multi-componente, lanza una InvalidNameException.

.�Un Espacio de Nombres en Forma de �rbol

El segundo ejemplo implementa un espacio de nombres con forma de �rbol y no soporta federaci�n. Los m�todos que aceptan un Name usan el siguiente m�todo de utilidad para determinar los componentes del nombre que deber�an ser procesados:

protected Name getMyComponents(Name name) throws NamingException {
    if (name instanceof CompositeName) {
	if (name.size() > 1) {
	    throw new InvalidNameException(name.toString() +
		" has more components than namespace can handle");
	}

	// Turn component that belongs to you into a compound name
	return myParser.parse(name.get(0));
    } else {
	// Already parsed
	return name;
    }
}

Al contrario que en el ejemplo plano, este m�todo devuelve un Name que representa un nombre compuesto estructurado en lugar de un java.lang.String. Cuando este m�todo obtiene un CompositeName, convierte el primer componente en un nombre compuesto y lo devuelve.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR