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.