/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.jaas; import java.util.Set; import org.ldaptive.Connection; import org.ldaptive.LdapException; import org.ldaptive.SearchOperation; import org.ldaptive.SearchRequest; import org.ldaptive.auth.AbstractSearchOperationFactory; /** * Base class for search role resolver implementations. * * @author Middleware Services */ public abstract class AbstractSearchRoleResolver extends AbstractSearchOperationFactory implements RoleResolver { @Override public Set<LdapRole> search(final SearchRequest request) throws LdapException { Connection conn = null; try { conn = getConnection(); final SearchOperation op = createSearchOperation(conn); return LdapRole.toRoles(op.execute(request).getResult()); } finally { if (conn != null) { conn.close(); } } } /** * Retrieve a connection that is ready for use. * * @return connection * * @throws LdapException if an error occurs opening the connection */ protected abstract Connection getConnection() throws LdapException; }