javax.naming.ldap
Class SortControl

java.lang.Object sample code for java.lang.Object definition code for java.lang.Object 
  extended by javax.naming.ldap.BasicControl sample code for javax.naming.ldap.BasicControl definition code for javax.naming.ldap.BasicControl 
      extended by javax.naming.ldap.SortControl
All Implemented Interfaces:
Serializable sample code for java.io.Serializable definition code for java.io.Serializable , Control sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control

public final class SortControl
extends BasicControl sample code for javax.naming.ldap.BasicControl definition code for javax.naming.ldap.BasicControl

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 }

 

Since:
1.5
See Also:
SortKey sample code for javax.naming.ldap.SortKey definition code for javax.naming.ldap.SortKey , SortResponseControl sample code for javax.naming.ldap.SortResponseControl definition code for javax.naming.ldap.SortResponseControl , Serialized Form

Field Summary
static String sample code for java.lang.String definition code for java.lang.String OID sample code for javax.naming.ldap.SortControl.OID definition code for javax.naming.ldap.SortControl.OID
          The server-side sort control's assigned object identifier is 1.2.840.113556.1.4.473.
 
Fields inherited from class javax.naming.ldap.BasicControl sample code for javax.naming.ldap.BasicControl definition code for javax.naming.ldap.BasicControl
criticality sample code for javax.naming.ldap.BasicControl.criticality definition code for javax.naming.ldap.BasicControl.criticality , id sample code for javax.naming.ldap.BasicControl.id definition code for javax.naming.ldap.BasicControl.id , value sample code for javax.naming.ldap.BasicControl.value definition code for javax.naming.ldap.BasicControl.value
 
Fields inherited from interface javax.naming.ldap.Control sample code for javax.naming.ldap.Control definition code for javax.naming.ldap.Control
CRITICAL sample code for javax.naming.ldap.Control.CRITICAL definition code for javax.naming.ldap.Control.CRITICAL , NONCRITICAL sample code for javax.naming.ldap.Control.NONCRITICAL definition code for javax.naming.ldap.Control.NONCRITICAL
 
Constructor Summary
SortControl sample code for javax.naming.ldap.SortControl.SortControl(javax.naming.ldap.SortKey[], boolean) definition code for javax.naming.ldap.SortControl.SortControl(javax.naming.ldap.SortKey[], boolean) (SortKey sample code for javax.naming.ldap.SortKey definition code for javax.naming.ldap.SortKey [] sortBy, boolean criticality)
          Constructs a control to sort on a list of sort keys.
SortControl sample code for javax.naming.ldap.SortControl.SortControl(java.lang.String[], boolean) definition code for javax.naming.ldap.SortControl.SortControl(java.lang.String[], boolean) (String sample code for java.lang.String definition code for java.lang.String [] sortBy, boolean criticality)
          Constructs a control to sort on a list of attributes in ascending order.
SortControl sample code for javax.naming.ldap.SortControl.SortControl(java.lang.String, boolean) definition code for javax.naming.ldap.SortControl.SortControl(java.lang.String, boolean) (String sample code for java.lang.String definition code for java.lang.String  sortBy, boolean criticality)
          Constructs a control to sort on a single attribute in ascending order.
 
Method Summary
 
Methods inherited from class javax.naming.ldap.BasicControl sample code for javax.naming.ldap.BasicControl definition code for javax.naming.ldap.BasicControl
getEncodedValue sample code for javax.naming.ldap.BasicControl.getEncodedValue() definition code for javax.naming.ldap.BasicControl.getEncodedValue() , getID sample code for javax.naming.ldap.BasicControl.getID() definition code for javax.naming.ldap.BasicControl.getID() , isCritical sample code for javax.naming.ldap.BasicControl.isCritical() definition code for javax.naming.ldap.BasicControl.isCritical()
 
Methods inherited from class java.lang.Object sample code for java.lang.Object definition code for java.lang.Object
clone sample code for java.lang.Object.clone() definition code for java.lang.Object.clone() , equals sample code for java.lang.Object.equals(java.lang.Object) definition code for java.lang.Object.equals(java.lang.Object) , finalize sample code for java.lang.Object.finalize() definition code for java.lang.Object.finalize() , getClass sample code for java.lang.Object.getClass() definition code for java.lang.Object.getClass() , hashCode sample code for java.lang.Object.hashCode() definition code for java.lang.Object.hashCode() , notify sample code for java.lang.Object.notify() definition code for java.lang.Object.notify() , notifyAll sample code for java.lang.Object.notifyAll() definition code for java.lang.Object.notifyAll() , toString sample code for java.lang.Object.toString() definition code for java.lang.Object.toString() , wait sample code for java.lang.Object.wait() definition code for java.lang.Object.wait() , wait sample code for java.lang.Object.wait(long) definition code for java.lang.Object.wait(long) , wait sample code for java.lang.Object.wait(long, int) definition code for java.lang.Object.wait(long, int)
 

Field Detail

OID sample code for javax.naming.ldap.SortControl.OID

public static final String sample code for java.lang.String definition code for java.lang.String  OID
The server-side sort control's assigned object identifier is 1.2.840.113556.1.4.473.

See Also:
Constant Field Values
Constructor Detail

SortControl sample code for javax.naming.ldap.SortControl(java.lang.String, boolean) definition code for javax.naming.ldap.SortControl(java.lang.String, boolean)

public SortControl(String sample code for java.lang.String definition code for java.lang.String  sortBy,
                   boolean criticality)
            throws IOException sample code for java.io.IOException definition code for java.io.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 - An attribute ID to sort by.
criticality - 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.
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - If an error was encountered while encoding the supplied arguments into a control.

SortControl sample code for javax.naming.ldap.SortControl(java.lang.String[], boolean) definition code for javax.naming.ldap.SortControl(java.lang.String[], boolean)

public SortControl(String sample code for java.lang.String definition code for java.lang.String [] sortBy,
                   boolean criticality)
            throws IOException sample code for java.io.IOException definition code for java.io.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 - A non-null list of attribute IDs to sort by. The list is in order of highest to lowest sort key precedence.
criticality - 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.
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - If an error was encountered while encoding the supplied arguments into a control.

SortControl sample code for javax.naming.ldap.SortControl(javax.naming.ldap.SortKey[], boolean) definition code for javax.naming.ldap.SortControl(javax.naming.ldap.SortKey[], boolean)

public SortControl(SortKey sample code for javax.naming.ldap.SortKey definition code for javax.naming.ldap.SortKey [] sortBy,
                   boolean criticality)
            throws IOException sample code for java.io.IOException definition code for java.io.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 - A non-null list of keys to sort by. The list is in order of highest to lowest sort key precedence.
criticality - 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.
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - If an error was encountered while encoding the supplied arguments into a control.