Question

Utilisation LdapTemplate dans LDAP Spring, j'ai ce code:

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
}

Mais depuis que j'ai lu mon Joshua Bloch, je sais que les exceptions ne doivent pas être utilisés pour le flux de contrôle. Est-il un moyen de rechercher un dn pour voir si elle existe sans lancer une exception si elle ne le fait pas? Il doit y avoir, mais je ne peux pas le trouver. Je suis à la recherche pour le code qui fonctionne comme ceci (ou similaire):

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

peut-elle aider quelqu'un?

BTW: il suffit de regarder le JavaDoc ne sera pas utile. Aucune des méthodes jet NameNotFoundException le dire dans les JavaDocs.

Était-ce utile?

La solution

La méthode lookup() n'est censé être utilisé quand on sait avec certitude que le DN existe. Ceci est normalement parce que vous avez recherché et trouvé un utilisateur ou d'un groupe précédemment, et mises en cache le DN renvoyé par le serveur.

Si vous cherchez quelque chose qui pourrait ou ne pourrait pas être là, le droit API à utiliser est ldapTemplate.search(), avec un filtre approprié. Cette fonction renvoie une liste de résultats, et dans le cas où aucun résultats retourne une liste vide plutôt que de lancer une exception.

Autres conseils

En fait, le printemps vous forcer ici à des exceptions d'utilisation pour le contrôle de flux (à savoir ce n'est pas votre faute, il est leur décision).

J'ai travaillé avec LdapTemplate il y a quelques mois et je ne pouvais pas trouver quelque chose de mieux attraper cette exception et d'évaluer cette situation comme « Utilisateur introuvable ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top