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:


Límites del Sistema de Nombres

La lección Federación describe como determina un proveedor de servicio qué componentes de un nombre mixto debe procesar y cuales pasar. La lección Los Componentes Esenciales contiene dos ejemplos de cómo una implementación de contexto selecciona componentes del nombre de entrada para procesarlos. Estos ejemplos conciernen a las implementaciones de contexto en que soportan separación fuerte y por lo tanto seleccionan el primer componente de un nombre mixto.

Para soportar separación débil, necesitamos reescribir el método de utilidad getMyComponents() y todos los métodos del contexto para eliminar la presunción de componente simple. Abajo tenemos un método más general que, dado un nombre compuesto o mixto devuelve un array de dos elementos. En ese array, el primer componente contiene los componentes a procesar por el sistema de nombres actual y el segundo componente contiene los componentes a procesar por los sistemas de nombres siguientes. Este ejemplo maneja separación fuerte:

protected Name[] parseComponents(Name name) throws NamingException {
    Name head, tail;
    if (name instanceof CompositeName) {
        int separator;
        // If there is no name to parse, or 
	// if you're already at the boundary
        if (name.isEmpty() ||  name.get(0).equals("")) {
    	    separator = 0;
        } else {
	    separator = 1;
        }

	head = name.getPrefix(separator);
	tail = name.getSuffix(separator);
    } else {
	// Treat this like a compound name
	head = new CompositeName().add(name.toString());
	tail = null;
    }

    return new Name[]{head, tail};
}

Abajo tenemos el mismo método reescrito para soportar separación débil. Para esta implementación de contexto particular, sólo se seleccionan los primeros componentes que contenga el caracter igual ("=") para ser procesados por el sistema de nombres actual:

protected Name[] parseComponents(Name name) throws NamingException {
    Name head, tail;
    if (name instanceof CompositeName) {
        int separator;
        // If there is no name to parse, or 
	// if you're already at the boundary
        if (name.isEmpty() ||  name.get(0).equals("")) {
	    separator = 0;
        } else {
	    // Find the leading components that have "="
	    int total = name.size();
	    int i;
	    for (i = 0; i < total; i++) {
	        if (name.get(i).indexOf('=') < 0) {
		    break;
	        }
	    }
	    separator = i;
        }

	head = name.getPrefix(separator);
	tail = name.getSuffix(separator);
    } else {
	// Treat this like a compound name
	head = new CompositeName().add(name.toString());
	tail = null;
    }

    return new Name[]{head, tail};
}

Si la implementación de contexto soporta separación débil dinámica (es decir, determina dinámicamente los límites del sistema de nombres), parseComponents() devolverá todos los componentes como pertenecientes al sistema de nombres actual. Aquí tenemos un ejemplo:

protected Name[] parseComponents(Name name) throws NamingException {
    Name head, tail;
    if (name instanceof CompositeName) {
        int separator;
        // If there is no name to parse, or 
	// if you're already at the boundary
        if (name.isEmpty() ||  name.get(0).equals("")) {
	    separator = 0;
        } else {
	    // All components are eligible
	    separator = name.size();
        }

	head = name.getPrefix(separator);
	tail = name.getSuffix(separator);
    } else {
	// Treat this like a compound name
	head = new CompositeName().add(name.toString());
	tail = null;
    }

    return new Name[]{head, tail};
}

Una vez que hemos definido este método, nuestros métodos de contexto pueden usarlo para extraer los componentes. Aquí tenemos un ejemplo:

Name[] nm = parseComponents(name);
Name mine = nm[0];
Name rest = nm[1];

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