Pregunta

LdapTemplate en la primavera de LDAP, tengo este código:

Object object=null;
try{
    String dn = "cn=readers,ou=groups,dc=mycompany, dc=com";
    object = this.ldapTemplate.lookup(dn);
} catch(final NameNotFoundException e){
    // create Object
}

Pero desde que ha leído mi Joshua Bloch Sé que las excepciones no deben ser utilizados para el control de flujo. ¿Hay una manera de buscar un dn para ver si existe sin lanzar una excepción si no lo hace? Tiene que haber, pero no puedo encontrarlo. Busco código que obras como esta (o similar):

String dn = "cn=readers,ou=groups,dc=mycompany, dc=com";
Object object=this.ldapTemplate.someMethod(dn);
if(object==null){
    // create Object
}

¿Alguien puede ayudarme?

Por cierto: sólo mirar el JavaDoc no ayudará. Ninguno de los métodos que NameNotFoundException tiro decir lo que en los JavaDocs.

¿Fue útil?

Solución

El método lookup() sólo se supone que debe ser utilizada cuando se sabe con certeza que existe el DN. Esto es normalmente porque se ha buscado y encontrado un usuario o grupo con anterioridad, y se almacena el DN devuelto desde el servidor.

Si usted está buscando algo que podría o no estar allí, la API de derecho de uso es ldapTemplate.search(), con un filtro apropiado. Esto devuelve una lista de resultados, y en el caso en que no se encuentran resultados que devuelve una lista vacía en lugar de lanzar una excepción.

Otros consejos

En realidad, la primavera le obligan aquí para utilizar excepciones para el control de flujo (es decir, no es tu culpa, es su decisión).

trabajé con LdapTemplate hace unos meses y no he podido encontrar nada mejor que coger esa excepción y evaluar esa situación como "Usuario no encontrado".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top