Hi, I have followed the instructions from a thread reporting the same issue
(
http://mail-archives.apache.org/mod_mbox/directory-api/201312.mbox/%3CCAPmZGnw%2B7jMiACgxc14DMg-Ss-2JY%3Db-9j8Euxb8iJ%2BC1sb%3DXQ%40mail.gmail.com%3E)
but I am still getting the ClassCastException error.
Using 2.0.0-M15 server and 1.0.0.-M20 api. This is the code:
connection = new LdapNetworkConnection("localhost", 10389);
connection.setTimeOut(0);
connection.bind();
System.setProperty(StandaloneLdapApiService.CONTROLS_LIST,PagedResultsFactory.class.getName());
PagedResults pagedSearchControl = new PagedResultsDecorator(
connection.getCodecService());
pagedSearchControl.setSize(300);
// Loop over all the elements
List<Entry> results = new ArrayList<Entry>();
boolean hasUnwillingToPerform = false;
Integer p = 0;
while (true) {
EntryCursor cursor = null;
try {
SearchRequest searchRequest = new SearchRequestImpl();
searchRequest.setBase(new Dn("ou=organizations,dc=test"));
searchRequest.setFilter("(objectclass=device)");
searchRequest.setScope(SearchScope.SUBTREE);
searchRequest.addAttributes("*");
searchRequest.addControl(pagedSearchControl);
searchRequest.setSizeLimit(10000);
cursor = new EntryCursorImpl(
connection.search(searchRequest));
while (cursor.next()) {
Entry result = cursor.get();
results.add(result);
}
p++;
System.out.println("PAGE: " + p.toString());
System.out.println("TOTAL of Results: " + results.size());
SearchResultDone result = cursor.getSearchResultDone();
pagedSearchControl = (PagedResults)
result.getControl(PagedResults.OID);
if (result.getLdapResult().getResultCode() ==
ResultCodeEnum.UNWILLING_TO_PERFORM) {
hasUnwillingToPerform = true;
break;
}
} finally {
if (cursor != null) {
cursor.close();
}
}
// check if this is over
byte[] cookie = pagedSearchControl.getCookie();
if (Strings.isEmpty(cookie)) {
// If so, exit the loop
break;
}
// Prepare the next iteration
pagedSearchControl.setSize(300);
}
if (hasUnwillingToPerform) {
throw new IllegalStateException("AD can't handle paging");
}
// Cleanup the session
connection.unBind();
connection.close();
I have checked the system properties at run time and I see this:
apacheds.controls=org.apache.directory.api.ldap.codec.controls.search.pagedSearch.PagedResultsFactory
Still getting "Exception in thread "main" java.lang.ClassCastException:
org.apache.directory.api.ldap.codec.BasicControlDecorator cannot be cast to
org.apache.directory.api.ldap.model.message.controls.PagedResults
I appreciate any help.
Thanks,
Gabriel