javax.naming.ldap

接口
异常
java.lang.Object
  继承者 javax.naming.ldap.BasicControl
      继承者 javax.naming.ldap.SortControl
所有已实现的接口:
Serializable, Control

public final class SortControl
     
extends BasicControl

请求 LDAP 服务器在返回搜索操作的结果前对这些结果进行排序。使用一个或多个排序键所组成的有序列表与关联的排序参数一起指定排序标准。搜索结果根据排序控件中提供的参数在 LDAP 服务器排序,然后返回给请求方。如果服务器上不支持排序(而排序控件被标记为关键),则不执行搜索操作并返回错误。

以下代码示例展示了使用该类的方式:


     // 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();
     ...

 

此类实现在 RFC 2891 中定义的用于服务器端排序的 LDAPv3 请求控件。 控件值具有以下 ASN.1 定义:


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

 

从以下版本开始:
1.5
另请参见:
SortKey, SortResponseControl, 序列化表格

字段摘要
static String OID
          服务器端排序控件的分配对象标识符为 1.2.840.113556.1.4.473。
 
从类 javax.naming.ldap.BasicControl 继承的字段
criticality, id, value
 
从接口 javax.naming.ldap.Control 继承的字段
CRITICAL, NONCRITICAL
 
构造方法摘要
SortControl(SortKey[] sortBy, boolean criticality)
          构造一个控件来对排序键列表进行排序。
SortControl(String[] sortBy, boolean criticality)
          构造一个控件来按升序对属性列表进行排序。
SortControl(String sortBy, boolean criticality)
          构造一个控件来按升序对单个属性进行排序。
 
方法摘要
 
从类 javax.naming.ldap.BasicControl 继承的方法
getEncodedValue, getID, isCritical
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

OID

public static final String OID
服务器端排序控件的分配对象标识符为 1.2.840.113556.1.4.473。

另请参见:
常量字段值
构造方法详细信息

SortControl

public SortControl(String sortBy,
                   boolean criticality)
            throws IOException
构造一个控件来按升序对单个属性进行排序。使用为指定属性定义的排序匹配规则执行排序。

参数:
sortBy - 用于排序的属性 ID。
criticality - 如果为 true,则服务器属性遵从控件,按照请求返回搜索结果或拒绝执行搜索。如果为 false,则服务器不必遵从控件。
抛出:
IOException - 如果在编码控件中提供的参数时遇到错误。

SortControl

public SortControl(String[] sortBy,
                   boolean criticality)
            throws IOException
构造一个控件来按升序对属性列表进行排序。使用为每个指定属性定义的排序匹配规则执行排序。

参数:
sortBy - 用于排序的非 null 属性 ID 列表。列表按从高到低的排序键优先级顺序排列。
criticality - 如果为 true,则服务器属性遵从控件,按照请求返回搜索结果或拒绝执行搜索。如果为 false,则服务器不必遵从控件。
抛出:
IOException - 如果在编码控件中提供的参数时遇到错误。

SortControl

public SortControl(SortKey[] sortBy,
                   boolean criticality)
            throws IOException
构造一个控件来对排序键列表进行排序。每个排序键都指定要使用的排序顺序和排序匹配规则。

参数:
sortBy - 用于排序的非 null 键列表。列表按从高到低的排序键优先级顺序排列。
criticality - 如果为 true,则服务器属性遵从控件,按照请求返回搜索结果或拒绝执行搜索。如果为 false,则服务器不必遵从控件。
抛出:
IOException - 如果在编码控件中提供的参数时遇到错误。