Search in sources :

Example 1 with InvalidSimplePageControlException

use of org.gluu.site.ldap.exception.InvalidSimplePageControlException in project oxCore by GluuFederation.

the class OperationsFacade method scrollSimplePagedResultsControl.

private ASN1OctetString scrollSimplePagedResultsControl(String dn, Filter filter, SearchScope scope, Control[] controls, int startIndex) throws LDAPSearchException, InvalidSimplePageControlException {
    SearchRequest searchRequest = new SearchRequest(dn, scope.getLdapSearchScope(), filter, "dn");
    int currentStartIndex = startIndex;
    ASN1OctetString cookie = null;
    do {
        int pageSize = Math.min(currentStartIndex, 100);
        searchRequest.setControls(new Control[] { new SimplePagedResultsControl(pageSize, cookie, true) });
        setControls(searchRequest, controls);
        SearchResult searchResult = getConnectionPool().search(searchRequest);
        currentStartIndex -= searchResult.getEntryCount();
        try {
            SimplePagedResultsControl c = SimplePagedResultsControl.get(searchResult);
            if (c != null) {
                cookie = c.getCookie();
            }
        } catch (LDAPException ex) {
            log.error("Error while accessing cookie" + ex.getMessage());
            throw new InvalidSimplePageControlException("Error while accessing cookie");
        }
    } while ((cookie != null) && (cookie.getValueLength() > 0) && (currentStartIndex > 0));
    return cookie;
}
Also used : ASN1OctetString(com.unboundid.asn1.ASN1OctetString) InvalidSimplePageControlException(org.gluu.site.ldap.exception.InvalidSimplePageControlException)

Example 2 with InvalidSimplePageControlException

use of org.gluu.site.ldap.exception.InvalidSimplePageControlException in project oxCore by GluuFederation.

the class OperationsFacade method search.

public SearchResult search(String dn, Filter filter, SearchScope scope, BatchOperation<?> batchOperation, int startIndex, int searchLimit, int sizeLimit, Control[] controls, String... attributes) throws LDAPSearchException {
    SearchRequest searchRequest;
    if (log.isTraceEnabled()) {
        // Find whole tree search
        if (StringHelper.equalsIgnoreCase(dn, "o=gluu")) {
            log.trace("Search in whole LDAP tree", new Exception());
        }
    }
    if (attributes == null) {
        searchRequest = new SearchRequest(dn, scope.getLdapSearchScope(), filter);
    } else {
        searchRequest = new SearchRequest(dn, scope.getLdapSearchScope(), filter, attributes);
    }
    boolean useSizeLimit = sizeLimit > 0;
    if (useSizeLimit) {
        // Use paged result to limit search
        searchLimit = sizeLimit;
    }
    SearchResult searchResult = null;
    List<SearchResult> searchResultList = new ArrayList<SearchResult>();
    List<SearchResultEntry> searchResultEntries = new ArrayList<SearchResultEntry>();
    List<SearchResultReference> searchResultReferences = new ArrayList<SearchResultReference>();
    if ((searchLimit > 0) || (startIndex > 0)) {
        if (searchLimit == 0) {
            // Default page size
            searchLimit = 100;
        }
        ASN1OctetString cookie = null;
        if (startIndex > 0) {
            try {
                cookie = scrollSimplePagedResultsControl(dn, filter, scope, controls, startIndex);
            } catch (InvalidSimplePageControlException ex) {
                throw new LDAPSearchException(ResultCode.OPERATIONS_ERROR, "Failed to scroll to specified startIndex", ex);
            }
        }
        if (batchOperation != null) {
            cookie = batchOperation.getCookie();
        }
        do {
            searchRequest.setControls(new Control[] { new SimplePagedResultsControl(searchLimit, cookie) });
            setControls(searchRequest, controls);
            if (batchOperation != null) {
                searchResult = batchOperation.getLdapConnection().search(searchRequest);
            } else {
                searchResult = getConnectionPool().search(searchRequest);
            }
            searchResultList.add(searchResult);
            searchResultEntries.addAll(searchResult.getSearchEntries());
            searchResultReferences.addAll(searchResult.getSearchReferences());
            cookie = null;
            try {
                SimplePagedResultsControl c = SimplePagedResultsControl.get(searchResult);
                if (c != null) {
                    cookie = c.getCookie();
                    if (batchOperation != null) {
                        batchOperation.setCookie(cookie);
                        batchOperation.setMoreResultsToReturn(c.moreResultsToReturn());
                    }
                }
            } catch (LDAPException ex) {
                log.error("Error while accessing cookies" + ex.getMessage());
            }
            if (useSizeLimit) {
                break;
            }
        } while ((cookie != null) && (cookie.getValueLength() > 0));
        SearchResult searchResultTemp = searchResultList.get(0);
        searchResult = new SearchResult(searchResultTemp.getMessageID(), searchResultTemp.getResultCode(), searchResultTemp.getDiagnosticMessage(), searchResultTemp.getMatchedDN(), searchResultTemp.getReferralURLs(), searchResultEntries, searchResultReferences, searchResultEntries.size(), searchResultReferences.size(), searchResultTemp.getResponseControls());
    } else {
        setControls(searchRequest, controls);
        searchResult = getConnectionPool().search(searchRequest);
    }
    return searchResult;
}
Also used : ASN1OctetString(com.unboundid.asn1.ASN1OctetString) InvalidSimplePageControlException(org.gluu.site.ldap.exception.InvalidSimplePageControlException) MappingException(org.gluu.site.ldap.persistence.exception.MappingException) DuplicateEntryException(org.gluu.site.ldap.exception.DuplicateEntryException) ConnectionException(org.gluu.site.ldap.exception.ConnectionException) InvalidArgumentException(org.gluu.site.ldap.persistence.exception.InvalidArgumentException) InvalidSimplePageControlException(org.gluu.site.ldap.exception.InvalidSimplePageControlException)

Aggregations

ASN1OctetString (com.unboundid.asn1.ASN1OctetString)2 InvalidSimplePageControlException (org.gluu.site.ldap.exception.InvalidSimplePageControlException)2 ConnectionException (org.gluu.site.ldap.exception.ConnectionException)1 DuplicateEntryException (org.gluu.site.ldap.exception.DuplicateEntryException)1 InvalidArgumentException (org.gluu.site.ldap.persistence.exception.InvalidArgumentException)1 MappingException (org.gluu.site.ldap.persistence.exception.MappingException)1