Top Description Fields Constructors Methods
javax.naming.ldap

public final Class SortControl

extends BasicControl
Class Inheritance
Imports
java.io.IOException, com.sun.jndi.ldap.Ber, .BerEncoder

Requests that the results of a search operation be sorted by the LDAP server before being returned. The sort criteria are specified using an ordered list of one or more sort keys, with associated sort parameters. Search results are sorted at the LDAP server according to the parameters supplied in the sort control and then returned to the requestor. If sorting is not supported at the server (and the sort control is marked as critical) then the search operation is not performed and an error is returned.

The following code sample shows how the class may be used:

// Open an LDAP association
    LdapContext ctx = new InitialLdapContext();

    // Activate sorting
    String sortKey = "cn";
    ctx.setRequestControls(new Control[]{
        new SortControl(sortKey, Control.CRITICAL) });

    // Perform a search
    NamingEnumeration results =
        ctx.search("", "(objectclass=*)", new SearchControls());

    // Iterate over 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 sort control response
    Control[] controls = ctx.getResponseControls();
    if (controls != null) {
        for (int i = 0; i < controls.length; i++) {
            if (controls[i] instanceof SortResponseControl) {
                SortResponseControl src = (SortResponseControl)controls[i];
                if (! src.isSorted()) {
                    throw src.getException();
                }
            } else {
                // Handle other response controls (if any)
            }
        }
    }

    // Close the LDAP association
    ctx.close();
    ...

This class implements the LDAPv3 Request Control for server-side sorting as defined in RFC 2891. The control's value has the following ASN.1 definition:


    SortKeyList ::= SEQUENCE OF SEQUENCE {
        attributeType     AttributeDescription,
        orderingRule  [0] MatchingRuleId OPTIONAL,
        reverseOrder  [1] BOOLEAN DEFAULT FALSE }

Author
Vincent Ryan
Since
1.5
See Also
SortKey, SortResponseControl

Field Summary

Modifier and TypeField and Description
public static final String
OID

The server-side sort control's assigned object identifier is 1.2.840.113556.1.4.473.

private static final long
Inherited from javax.naming.ldap.BasicControl:
criticalityidvalue

Constructor Summary

AccessConstructor and Description
public
SortControl(String
An attribute ID to sort by.
sortBy
,
boolean
If true then the server must honor the control and return the search results sorted as requested or refuse to perform the search. If false, then the server need not honor the control.
criticality
)

Constructs a control to sort on a single attribute in ascending order.

public
SortControl(String[]
A non-null list of attribute IDs to sort by. The list is in order of highest to lowest sort key precedence.
sortBy
,
boolean
If true then the server must honor the control and return the search results sorted as requested or refuse to perform the search. If false, then the server need not honor the control.
criticality
)

Constructs a control to sort on a list of attributes in ascending order.

public
SortControl(SortKey[]
A non-null list of keys to sort by. The list is in order of highest to lowest sort key precedence.
sortBy
,
boolean
If true then the server must honor the control and return the search results sorted as requested or refuse to perform the search. If false, then the server need not honor the control.
criticality
)

Constructs a control to sort on a list of sort keys.

Method Summary

Modifier and TypeMethod and Description
private byte[]

Returns:

A possibly null byte array representing the ASN.1 BER encoded value of the sort control.
setEncodedValue
(SortKey[]
A non-null list of keys to sort by.
sortKeys
)

Encodes the sort control's value using ASN.1 BER.

Inherited from javax.naming.ldap.BasicControl:
getEncodedValuegetIDisCritical

Field Detail

OIDback to summary
public static final String OID

The server-side sort control's assigned object identifier is 1.2.840.113556.1.4.473.

serialVersionUIDback to summary
private static final long serialVersionUID

Hides javax.naming.ldap.BasicControl.serialVersionUID.

Constructor Detail

SortControlback to summary
public SortControl(String sortBy, boolean criticality) throws IOException

Constructs a control to sort on a single attribute in ascending order. Sorting will be performed using the ordering matching rule defined for use with the specified attribute.

Parameters
sortBy:String

An attribute ID to sort by.

criticality:boolean

If true then the server must honor the control and return the search results sorted as requested or refuse to perform the search. If false, then the server need not honor the control.

Exceptions
IOException:
If an error was encountered while encoding the supplied arguments into a control.
SortControlback to summary
public SortControl(String[] sortBy, boolean criticality) throws IOException

Constructs a control to sort on a list of attributes in ascending order. Sorting will be performed using the ordering matching rule defined for use with each of the specified attributes.

Parameters
sortBy:String[]

A non-null list of attribute IDs to sort by. The list is in order of highest to lowest sort key precedence.

criticality:boolean

If true then the server must honor the control and return the search results sorted as requested or refuse to perform the search. If false, then the server need not honor the control.

Exceptions
IOException:
If an error was encountered while encoding the supplied arguments into a control.
SortControlback to summary
public SortControl(SortKey[] sortBy, boolean criticality) throws IOException

Constructs a control to sort on a list of sort keys. Each sort key specifies the sort order and ordering matching rule to use.

Parameters
sortBy:SortKey[]

A non-null list of keys to sort by. The list is in order of highest to lowest sort key precedence.

criticality:boolean

If true then the server must honor the control and return the search results sorted as requested or refuse to perform the search. If false, then the server need not honor the control.

Exceptions
IOException:
If an error was encountered while encoding the supplied arguments into a control.

Method Detail

setEncodedValueback to summary
private byte[] setEncodedValue(SortKey[] sortKeys) throws IOException

Encodes the sort 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.

Parameters
sortKeys:SortKey[]

A non-null list of keys to sort by.

Returns:byte[]

A possibly null byte array representing the ASN.1 BER encoded value of the sort control.

Exceptions
IOException:
If a BER encoding error occurs.