En esta página: Analizar Nombres Convertir un nombre significa usar su representación string (java.lang.String) para obtener su representación estructural (Name). El JNDI proporciona un analizador de nombres para nombres mixtos y un interface genérico para analizar nombres compuestos. Los proveedores de servicios proporcionan las implementaciones reales de los analizadores de nombres para nombres compuestos exportados por sus espacios de nombres. Convertir Nombres Mixtos Para convertir un nombre mixto, podemos usar su representación string en el constructor de CompositeName. Por ejemplo, el siguiente código convierte el nombre string en un nombre estructurado, CompositeName // Parse the string name into a CompositeName Name cname = new CompositeName( "cn=homedir,cn=Jon Ruiz,ou=people/tutorial/report.txt"); Puedes ver la sección Nombres Mixtos para ver ejemplos de cómo acceder y cambiar los componentes de un CompositeName. Convertir Nombres Compuestos Para convertir un nombre compuesto, usamos el interface NameParser. Este interface contiene un sólo método: Name parse(String name) throws InvalidNameException; Sin embargo, primero debemos obtener un NameParser desde el proveedor de servicios que soporta el espacio de nombres. Aquí tenemos un ejemplo que obtiene analizadores de nombres para espacios de nombres LDAP y espacios de nombres de ficheros. // Create the initial context Context ctx = new InitialContext(); // Get the parser for LDAP NameParser ldapParser = ctx.getNameParser("ldap://localhost:389/o=jnditutorial"); // Get the parser for filenames NameParser fsParser = ctx.getNameParser("file:/"); Puedes ver la sección Nombres Compuestos para más ejemplos de cómo obtener un ejemplar de NameParser. Una vez que tenemos un ejemplar de un NameParser, podemos usar su método parse() para convertir nombres compuestos. Como una continuación del ejemplo, podemos usar ldapParser para convertir un nombre string LDAP en su forma estructural, de esta forma // Parse the name using the LDAP parser Name compoundName = ldapParser.parse("cn=John Smith, ou=People, o=JNDITutorial"); De forma similar, podemos usar fsParser para convertir un nombre de fichero de esta forma. // Parse the name using the LDAP parser Name compoundName = fsParser.parse("tmp/tutorial/beyond/names/parse.html"); Observa que cada analizador determina la síntaxis de nombres que aceptará. Si suministramos un nombre de fichero válido que no es un nombre LDAP legal a un analizador LDAP, obtendremos una InvalidNameException. Aunque parse() devuelve un Name, NameParser está pensada para ser utilizada sólo con nombres compuestos, no con nombres mixtos. El objeto devuelto por parse() podría o no ser un ejemplar de CompoundName. El único requerimiento es que implemente el interface Name. El tipo exacto del objeto devuelto depende de la implementación del proveedor de servicios.
|