Ejemplo n.º 1
0
    /**
     * Executes an ldap search.
     *
     * @param conn to search with
     * @param sr to read properties from
     * @return ldap search queue
     * @throws LDAPException if an error occurs
     */
    protected LDAPSearchQueue search(final LDAPConnection conn, final SearchRequest sr)
        throws LDAPException {
      final SearchResultIterator i = new SearchResultIterator(super.search(conn, sr));
      listener.asyncRequestReceived(new JLdapAsyncRequest(i.getLDAPSearchQueue()));
      while (i.hasNext()) {
        final LDAPMessage message = i.next();
        if (message instanceof LDAPSearchResult) {
          listener.searchItemReceived(processLDAPSearchResult((LDAPSearchResult) message));
        } else if (message instanceof LDAPSearchResultReference) {
          listener.searchItemReceived(
              processLDAPSearchResultReference((LDAPSearchResultReference) message));
        } else if (message instanceof LDAPIntermediateResponse) {
          listener.searchItemReceived(
              processLDAPIntermediateResponse((LDAPIntermediateResponse) message));
        } else {
          throw new IllegalStateException("Unknown message: " + message);
        }
      }

      final Response<Void> response = createResponse(request, null, i.getResponse());
      listener.responseReceived(response);
      return null;
    }