Domanda

LdapTemplate nella primavera del LDAP, ho questo codice:

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
}

Ma da quando ho letto la mia Joshua Bloch So che le eccezioni non devono essere utilizzati per il controllo di flusso. C'è un modo per cercare un dn per vedere se esiste senza un'eccezione se non lo fa? Ci deve essere, ma non riesco a trovarlo. Sto cercando codice che funziona come questo (o simile):

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

Qualcuno può aiutarmi?

A proposito: solo guardando il JavaDoc non aiuterà. Nessuno dei metodi che tiro NameNotFoundException dirlo nelle JavaDocs.

È stato utile?

Soluzione

Il metodo lookup() si suppone da utilizzare solo quando si sa per certo che il DN esiste. Questo è normalmente perché hai cercato e trovato un utente o un gruppo in precedenza, e memorizzata nella cache il DN restituito dal server.

Se siete alla ricerca di qualcosa che potrebbe o non potrebbe essere lì, l'API diritto di utilizzo è ldapTemplate.search(), con un filtro adeguato. Questo un elenco di risultati, e nel caso in cui Nessun risultato restituisce una lista vuota piuttosto che un'eccezione rendimenti.

Altri suggerimenti

In realtà, Primavera ti costringono qui per utilizzare le eccezioni per il controllo del flusso (vale a dire che non è colpa tua, è la loro decisione).

Ho lavorato con LdapTemplate pochi mesi fa e non ho trovato niente di meglio poi prendere tale eccezione e valutare quella situazione come "Utente non trovato".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top