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:


Resultados de la Búsqueda

Cuando usamos los métodos de búsqueda del interface DirContext, obtenemos de vuelta una NamingEnumeration. Cada ítem de la NamingEnumeration es un SearchResult, que contiene la siguiente información.

Nombre

Cada SearchResult contiene el nombre de la entrada LDAP que satisface el criterio de búsqueda. Obtenemos el nombre de la entrada usando getName(). Este método devuelve el cnombre mixto de la entrada LDAP en relación al contexto fuente. Este contexto es el contexto al que se resuelve el parámetro nombre. En lenguaje LDAP, el contexto fuente es el objeto base de la búsqueda. Aquí tenemos un ejemplo:

NamingEnumeration answer = ctx.search("ou=NewHires",
"(&(mySpecialKey={0}) (cn=*{1}))",
      // Filter expression new Object[]{key, name},
      // Filter arguments     null);
      // Default search controls

El contexto fuente de este ejemplo se llama "ou=NewHires". Los nombres de SearchResult de answer son relativos a "ou=NewHires". Por ejemplo, si getName() devuelve "cn=J. Duke", entonces este nombre es relativo a ctx será "cn=J. Duke, ou=NewHires".

Si realizamos la búsqueda usando SearchControls.SUBTREE_SCOPE o SearchControls.OBJECT_SCOPE y el propio contexto fuente satisface el filtro de búsqueda, el nombre devuelto sera "" (el nombre vacío) porque es el nombre relativo al contexto fuente.

Esta no es toda la historia. Si la búsqueda implica remisiones (ver la lección Remisiones) o desreferenciar alias (ver la lección Miscellaneous), el SearchResult correspondiente tendrá nombres que no son relativos al contexto fuente. En su lugar, serán URLs que se refieren directamente a la entrada. Para determinar si un nombre devuelto por getName() es relativo o asbsoluto, usamos isRelative(). Si el método devuelve true, el nombre es relativo al contexto fuente, si devuelve false, el nombre es una URL.

Si el nombre es una URL y necesitamos usarla, podemos pasársela al contexto incial, que entiende las URLs (ver la lección Miscelaneas).

Si necesitamos obtener el DN completo de la entrada, podemos seguir la pista de los ancestros del SearchResult o usar Context.getNameInNamespace().

Objecto

Si se condujo la búsqueda para devolver el objeto de la entrada , se llamó a (SearchControls.setReturningObjFlag() con true), entonces SearchResult contendrá un objeto que representa la entrada. Para recuperar este objeto, llamamos a getObject(). Si anteriormente se únio un objeto java.io.Serializable, Referenceable, o Reference con ese nombre LDAP, entonces se utilizan los atributos de la entrada para reconstruir ese objeto (ver el ejemplo de la lección Leer Objetos desde el Directorio). De otra forma, los atributos de la entrada se usan para crear un ejemplar de DirContext que representa la entrada LDAP. En cualquier caso, el proveedor LDAP llama a DirectoryManager.getObjectInstance() sobre el objeto que devuelve el resultado.

Nombre de Clase

Si se condujo la búsqueda para devolver el objeto de la entrada , el nombre de la clase se deriva del objeto devuelto. Si la búsqueda solicitó atributos que incluyen la recuperación del atributo "javaClassName" de la entrada LDAP, el nombre de la clase será el valor de este atributo. Si no es así, el nombre de la clase es "javax.naming.directory.DirContext". El nombre de la clase se obtiene desde getClassName().

Atributos

Cuando realizamos una búsqueda, podemos seleccionar los atributos a devolver siministrando un parámetro a uno de los métodos search() o seleccionando controles de búsqueda usando SearchControls.setReturningAttributes(). Si no se han especificado atributos explícitamente, entonces se devuelve todos los atributos de la entrada LDAP. Para especificar que no se debe devolver ningún atributo, debemos pasar un array vacío (new String[0]).

Para recuperar los atributos de una entrad LDAP, llamamos a getAttributes() sobre el SearchResult.

Controles de Respuesta

Puedes ir a la lección Controles y Extensiones para ver más detalles sobre cómo recuperar un resultado de una búsqueda con controles de búsqueda.


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