The following code sample shows how the class may be used:
// Open an LDAP association
LdapContext ctx = new InitialLdapContext();
// Activate paged results
int pageSize = 20; // 20 entries per page
byte[] cookie = null;
int total;
ctx.setRequestControls(new Control[]{
new PagedResultsControl(pageSize, Control.CRITICAL) });
do {
// Perform the search
NamingEnumeration results =
ctx.search("", "(objectclass=*)", new SearchControls());
// Iterate over a batch of search results
while (results != null && results.hasMore()) {
// Display an entry
SearchResult entry = (SearchResult)results.next();
System.out.println(entry.getName());
System.out.println(entry.getAttributes());
// Handle the entry's response controls (if any)
if (entry instanceof HasControls) {
// ((HasControls)entry).getControls();
}
}
// Examine the paged results control response
Control[] controls = ctx.getResponseControls();
if (controls != null) {
for (int i = 0; i < controls.length; i++) {
if (controls[i] instanceof PagedResultsResponseControl) {
PagedResultsResponseControl prrc =
(PagedResultsResponseControl)controls[i];
total = prrc.getResultSize();
cookie = prrc.getCookie();
} else {
// Handle other response controls (if any)
}
}
}
// Re-activate paged results
ctx.setRequestControls(new Control[]{
new PagedResultsControl(pageSize, cookie, Control.CRITICAL) });
} while (cookie != null);
// Close the LDAP association
ctx.close();
...
This class implements the LDAPv3 Control for paged-results as defined in RFC 2696. The control's value has the following ASN.1 definition:
realSearchControlValue ::= SEQUENCE {
size INTEGER (0..maxInt),
-- requested page size from client
-- result set size estimate from server
cookie OCTET STRING
}
PagedResultsResponseControl
| Modifier and Type | Field and Description |
|---|---|
| private static final byte[] | |
| public static final String | OID
The paged-results control's assigned object identifier is 1.2.840.113556.1.4.319. |
| private static final long |
| Access | Constructor and Description |
|---|---|
| public | PagedResultsControl(int
The number of entries to return in a page. pageSize, boolean If true then the server must honor the control
and return search results as indicated by
pageSize or refuse to perform the search.
If false, then the server need not honor the
control. criticality)Constructs a control to set the number of entries to be returned per page of results. |
| public | PagedResultsControl(int
The number of entries to return in a page. pageSize, byte[] A possibly null server-generated cookie. cookie, boolean If true then the server must honor the control
and return search results as indicated by
pageSize or refuse to perform the search.
If false, then the server need not honor the
control. criticality)Constructs a control to set the number of entries to be returned per page of results. |
| Modifier and Type | Method and Description |
|---|---|
| private byte[] | Returns: A possibly null byte array representing the ASN.1 BER encoded value of the LDAP paged-results control.The number of entries to return in a page. pageSize, byte[] A non-null server-generated cookie. cookie)Encodes the paged-results control's value using ASN.1 BER. |
| EMPTY_COOKIE | back to summary |
|---|---|
| private static final byte[] EMPTY_COOKIE | |
| OID | back to summary |
|---|---|
| public static final String OID The paged-results control's assigned object identifier is 1.2.840.113556.1.4.319. | |
| serialVersionUID | back to summary |
|---|---|
| private static final long serialVersionUID | |
| PagedResultsControl | back to summary |
|---|---|
| public PagedResultsControl(int pageSize, boolean criticality) throws IOException Constructs a control to set the number of entries to be returned per page of results.
| |
| PagedResultsControl | back to summary |
|---|---|
| public PagedResultsControl(int pageSize, byte[] cookie, boolean criticality) throws IOException Constructs a control to set the number of entries to be returned per page of results. The cookie is provided by the server and may be obtained from the paged-results response control. A sequence of paged-results can be abandoned by setting the pageSize to zero and setting the cookie to the last cookie received from the server.
| |
| setEncodedValue | back to summary |
|---|---|
| private byte[] setEncodedValue(int pageSize, byte[] cookie) throws IOException Encodes the paged-results control's value using ASN.1 BER. The result includes the BER tag and length for the control's value but does not include the control's object identifier and criticality setting.
| |