Pergunta

Usando LDAPTEMPLATE No LDAP da primavera, eu tenho 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
}

Mas desde que li meu Joshua Bloch, sei que as exceções não devem ser usadas para o fluxo de controle. Existe uma maneira de procurar um DN para ver se ele existe sem jogar uma exceção se não o fizer? Deve haver, mas não consigo encontrá -lo. Estou procurando um código que funcione como este (ou similar):

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

Alguém pode ajudar?

BTW: Só de olhar para o javadoc não ajudará. Nenhum dos métodos que jogam NameNotFoundException Diga isso nos javadocs.

Foi útil?

Solução

o lookup() O método deve ser usado apenas quando você sabe com certeza que o DN existe. Isso normalmente é porque você pesquisou e encontrou um usuário ou grupo anteriormente, e o cache do DN retornou do servidor.

Se você está procurando algo que possa ou não estar lá, a API certa para usar é ldapTemplate.search(), com um filtro apropriado. Isso retorna uma lista de resultados e, no caso em que não são encontrados resultados, retorna uma lista vazia em vez de jogar uma exceção.

Outras dicas

Na verdade, o Spring Force você aqui para usar exceções para o controle de fluxo (ou seja, não é sua culpa, é a decisão deles).

Eu trabalhei com o LDAPTEMPLAT há alguns meses e não consegui encontrar nada melhor do que pegar essa exceção e avaliar essa situação como "o usuário não encontrado".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top