模块 java.naming

类 SortControl

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
参见:
  • 字段详细信息

    • 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 - 如果为真,则服务必须遵守控制并返回按请求排序的搜索结果,否则拒绝执行搜索。如果为 false,则服务无需遵守该控制。
      抛出:
      IOException - 如果在将提供的参数编码到控件中时遇到错误。
    • SortControl

      public SortControl(String [] sortBy, boolean criticality) throws IOException
      构造一个控件以按升序对属性列表进行排序。将使用为与每个指定属性一起使用而定义的排序匹配规则来执行排序。
      参数:
      sortBy - 要排序的属性 ID 的非空列表。该列表按排序键优先级从高到低的顺序排列。
      criticality - 如果为真,则服务必须遵守控制并返回按请求排序的搜索结果,否则拒绝执行搜索。如果为 false,则服务无需遵守该控制。
      抛出:
      IOException - 如果在将提供的参数编码到控件中时遇到错误。
    • SortControl

      public SortControl(SortKey [] sortBy, boolean criticality) throws IOException
      构造一个控件以对排序键列表进行排序。每个排序键指定排序顺序和要使用的排序匹配规则。
      参数:
      sortBy - 用于排序的非空键列表。该列表按排序键优先级从高到低的顺序排列。
      criticality - 如果为真,则服务必须遵守控制并返回按请求排序的搜索结果,否则拒绝执行搜索。如果为 false,则服务无需遵守该控制。
      抛出:
      IOException - 如果在将提供的参数编码到控件中时遇到错误。