所有类


javax.naming.ldap
类 LdapName

java.lang.Object
  继承者 javax.naming.ldap.LdapName
所有已实现的接口:
Serializable, Cloneable, Comparable<Object>, Name

public class LdapName
   
   
   
   
   
extends Object
implements Name

此类表示 RFC 2253 指定的标识名。标识名(即 DN)由名为相对标识名(即 RDN)的一列有序组件组成。RFC 2253 中描述了 DN 的语法细节。

此类对 RFC 2253 中存在的一些歧义解释如下:

  • RFC 2253 未定义术语“空白”。在其位置使用 ASCII 空白字符 0x20 (" ")。
  • 空白在 ','、';'、'=' 和 '+' 的两边都允许使用。这种空白可以被此代码接受,但不是此代码生成的,在比较名称时将被忽略。
  • 包含 '=' 或非先导 '#' 字符(取消转义)的 AttributeValue 字符串是可以接受的。

传递给 LdapName 或由它返回的字符串名称使用完整的 Unicode 字符集。它们也可能包含一些编码为 UTF-8 的字符,用三字符的子字符串(如 "\\B4")表示其中每个八位组。但是,它们不能包含编码为 UTF-8 并使用该字符串中的单个字符表示每个八位组的字符:因为这可能会使含义不明确。

LdapName 将恰当地解析所有有效名称,但是在解析无效名称时不会尝试检测所有可能的错误情况。在接受无效名称时,它显得很“大方”。名称的“有效性”在将名称提供给 LDAP 服务器时最终确定,服务器将基于名称的模式信息和互操作性考虑之类的因素来决定接受还是拒绝该名称。

在测试名称的相等性时,属性类型(二进制和字符串值)不区分大小写。值不同但使用等效的引用、转义或 UTF8 十六进制编码的字符串视为相等。多值 RDN 中组件的顺序(如 "ou=Sales+cn=Bob")无关紧要。

LDAP 名称的组件(即 RDN)已经编号。带有 n 个 RDN 的 LDAP 名称的索引范围从 0 到 n-1。可将该范围写为 [0,n)。最右边的 RDN 位于索引 0 处,最左边的 RDN 位于索引 n-1 处。例如,标识名:"CN=Steve Kille, O=Isode Limited, C=GB" 按以下顺序进行编号,范围为从 0 到 2:{C=GB, O=Isode Limited, CN=Steve Kille}。空 LDAP 名称由空 RDN 列表表示。

LdapName 的实例的并发多线程只读访问不必是同步的。

除非另有说明,否则将 null 参数传递给此类中的构造方法或方法的行为都会导致抛出 NullPointerException。

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

构造方法摘要
LdapName(List<Rdn> rdns)
          在给定已解析 RDN 组件的情况下构造 LDAP 名称。
LdapName(String name)
          根据给定标识名构造 LDAP 名称。
 
方法摘要
 Name add(int posn, Rdn comp)
          将单个 RDN 添加到此 LDAP 名称中的指定位置。
 Name add(int posn, String comp)
          将单个组件添加到此 LDAP 名称中的指定位置。
 Name add(Rdn comp)
          将单个 RDN 添加到此 LDAP 名称的末尾。
 Name add(String comp)
          将单个组件添加到此 LDAP 名称的末尾。
 Name addAll(int posn, List<Rdn> suffixRdns)
          按顺序将名称的 RDN 添加到此名称中的指定位置。
 Name addAll(int posn, Name suffix)
          按顺序将名称的组件添加到此名称中的指定位置。
 Name addAll(List<Rdn> suffixRdns)
          按顺序将名称的 RDN 添加到此名称的末尾。
 Name addAll(Name suffix)
          按顺序将名称的组件添加到此名称的末尾。
 Object clone()
          生成此名称的新副本。
 int compareTo(Object obj)
          比较此 LdapName 与指定 Object 的顺序。
 boolean endsWith(List<Rdn> rdns)
          确定指定的 RDN 序列是否形成此 LDAP 名称的后缀。
 boolean endsWith(Name n)
          确定此 LDAP 名称是否以某一指定 LDAP 名称后缀结尾。
 boolean equals(Object obj)
          确定两个 LDAP 名称是否相等。
 String get(int posn)
          以字符串形式检索此 LDAP 名称的组件。
 Enumeration<String> getAll()
          以字符串枚举的形式检索此名称的组件。
 Name getPrefix(int posn)
          创建一个名称,其组件由此 LDAP 名称中组件的前缀组成。
 Rdn getRdn(int posn)
          以 Rdn 形式检索此 LDAP 名称的 RDN。
 List<Rdn> getRdns()
          检索相对标识名列表。
 Name getSuffix(int posn)
          创建一个名称,其组件由此 LDAP 名称中组件的后缀组成。
 int hashCode()
          计算此 LDAP 名称的哈希码。
 boolean isEmpty()
          确定此 LDAP 名称是否为空。
 Object remove(int posn)
          从此 LDAP 名称中移除一个组件。
 int size()
          检索此 LDAP 名称中的组件数。
 boolean startsWith(List<Rdn> rdns)
          确定指定的 RDN 序列是否形成此 LDAP 名称的前缀。
 boolean startsWith(Name n)
          确定此 LDAP 名称是否从某一指定 LDAP 名称前缀开始。
 String toString()
          返回一个此 LDAP 名称的字符串表示形式,该表示形式使用 RFC 2253 定义并在类描述中描述的格式。
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

LdapName

public LdapName(String name)
         throws InvalidNameException
根据给定标识名构造 LDAP 名称。

参数:
name - 此为根据在 RFC 2253 中定义的规则格式化的非 null 标识名。
抛出:
InvalidNameException - 如果检测到违反语法的情况。
另请参见:
Rdn.escapeValue(Object value)

LdapName

public LdapName(List<Rdn> rdns)
在给定已解析 RDN 组件的情况下构造 LDAP 名称。

列表中 RDN 的索引遵从类描述中描述的 RDN 编号方式。

参数:
rdns - 形成此 LDAP 名称的非 null Rdn 列表。
方法详细信息

size

public int size()
检索此 LDAP 名称中的组件数。

指定者:
接口 Name 中的 size
返回:
此 LDAP 名称中的非负组件数。

isEmpty

public boolean isEmpty()
确定此 LDAP 名称是否为空。空名称是没有任何组件的名称。

指定者:
接口 Name 中的 isEmpty
返回:
如果此 LDAP 名称为空,则返回 true,否则返回 false。

getAll

public Enumeration<String> getAll()
以字符串枚举的形式检索此名称的组件。在此枚举上更新此名称的结果是不确定的。如果该名称没有组件,则返回空(非 null)枚举。枚举返回组件的顺序与根据类描述中的描述对组件进行编号的顺序相同。

指定者:
接口 Name 中的 getAll
返回:
此 LDAP 名称组件所组成的非 null 枚举。每个枚举元素都属于 String 类。

get

public String get(int posn)
以字符串形式检索此 LDAP 名称的组件。

指定者:
接口 Name 中的 get
参数:
posn - 要检索的从 0 开始的组件索引。该索引必须在范围 [0,size()) 内。
返回:
位于索引 posn 处的非 null 组件。
抛出:
IndexOutOfBoundsException - 如果 posn 超出指定范围。

getRdn

public Rdn getRdn(int posn)
以 Rdn 形式检索此 LDAP 名称的 RDN。

参数:
posn - 要检索的从 0 开始的 RDN 索引。该索引必须在范围 [0,size()) 内。
返回:
位于索引 posn 处的非 null RDN。
抛出:
IndexOutOfBoundsException - 如果 posn 超出指定范围。

getPrefix

public Name getPrefix(int posn)
创建一个名称,其组件由此 LDAP 名称中组件的前缀组成。对此名称进行的后续更改不会影响返回的名称,反之亦然。

指定者:
接口 Name 中的 getPrefix
参数:
posn - 从 0 开始的组件索引,在该索引处停止。该索引必须在范围 [0,size()] 内。
返回:
由索引范围在 [0,posn) 之间的组件组成的 LdapName 实例。如果 posn 为零,则返回空 LDAP 名称。
抛出:
IndexOutOfBoundsException - 如果 posn 超出指定范围。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部