java.lang.Object javax.naming.ldap.LdapName
此类表示 RFC 2253 指定的标识名。标识名(即 DN)由名为相对标识名(即 RDN)的一列有序组件组成。RFC 2253 中描述了 DN 的语法细节。
此类对 RFC 2253 中存在的一些歧义解释如下:
传递给 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。
构造方法摘要 | |
---|---|
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 |
构造方法详细信息 |
---|
public LdapName(String name) throws InvalidNameException
name
- 此为根据在
RFC 2253 中定义的规则格式化的非 null 标识名。
InvalidNameException
- 如果检测到违反语法的情况。
Rdn.escapeValue(Object value)
public LdapName(List<Rdn> rdns)
列表中 RDN 的索引遵从类描述中描述的 RDN 编号方式。
rdns
- 形成此 LDAP 名称的非 null
Rdn 列表。
方法详细信息 |
---|
public int size()
public boolean isEmpty()
public Enumeration<String> getAll()
public String get(int posn)
posn
- 要检索的从 0 开始的组件索引。该索引必须在范围 [0,size()) 内。
IndexOutOfBoundsException
- 如果 posn 超出指定范围。
public Rdn getRdn(int posn)
posn
- 要检索的从 0 开始的 RDN 索引。该索引必须在范围 [0,size()) 内。
IndexOutOfBoundsException
- 如果 posn 超出指定范围。
public Name getPrefix(int posn)
posn
- 从 0 开始的组件索引,在该索引处停止。该索引必须在范围 [0,size()] 内。
IndexOutOfBoundsException
- 如果 posn 超出指定范围。
public Name getSuffix(int posn)
posn
- 从 0 开始的组件索引,在该索引处开始。该索引必须在范围 [0,size()] 内。
IndexOutOfBoundsException
- 如果 posn 超出指定范围。
public boolean startsWith(Name n)
Name
中的
startsWith
n
- 要检查的 LDAP 名称。
getPrefix(int posn)
public boolean startsWith(List<Rdn> rdns)
rdns
- 要检查的
Rdn 的序列。
public boolean endsWith(Name n)
n
- 要检查的 LDAP 名称。
getSuffix(int posn)
public boolean endsWith(List<Rdn> rdns)
rdns
- 要检查的
Rdn 的序列。
public Name addAll(Name suffix) throws InvalidNameException
suffix
- 要添加的非 null 组件。
InvalidNameException
- 如果
suffix 不是一个有效的 LDAP 名称,或者添加组件将违反此 LDAP 名称的语法规则。
public Name addAll(List<Rdn> suffixRdns)
suffixRdns
- 要添加的非 null 后缀
Rdn。
public Name addAll(int posn, Name suffix) throws InvalidNameException
suffix
- 要添加的非 null 组件。
posn
- 在其所在位置处添加新组件的索引。该索引必须在范围 [0,size()] 内。
InvalidNameException
- 如果
suffix 不是一个有效的 LDAP 名称,或者添加组件将违反此 LDAP 名称的语法规则。
IndexOutOfBoundsException
- 如果 posn 超出指定范围。
public Name addAll(int posn, List<Rdn> suffixRdns)
suffixRdns
- 要添加的非 null 后缀
Rdn。
posn
- 在其所在位置处添加后缀 RDN 的索引。该索引必须在范围 [0,size()] 内。
IndexOutOfBoundsException.如果
- posn 超出指定范围。
public Name add(String comp) throws InvalidNameException
comp
- 要添加的非 null 组件。
InvalidNameException
- 如果在该名称末尾添加 comp 违反该名称的语法。
public Name add(Rdn comp)
comp
- 要添加的非 null RDN。
public Name add(int posn, String comp) throws InvalidNameException
comp
- 要添加的非 null 组件。
posn
- 在其所在位置处添加新组件的索引。该索引必须在范围 [0,size()] 内。
IndexOutOfBoundsException
- 如果 posn 超出指定范围。
InvalidNameException
- 如果在指定位置添加 comp 违反该名称的语法。
public Name add(int posn, Rdn comp)
comp
- 要添加的非 null RDN。
posn
- 在其所在位置处添加新 RDN 的索引。该索引必须在范围 [0,size()] 内。
IndexOutOfBoundsException
- 如果 posn 超出指定范围。
public Object remove(int posn) throws InvalidNameException
posn
- 要移除的组件的索引。该索引必须在范围 [0,size()) 内。
IndexOutOfBoundsException
- 如果 posn 超出指定范围。
InvalidNameException
- 如果删除组件将违反该名称的语法规则。
public List<Rdn> getRdns()
Rdn
类的实例。
public Object clone()
Cloneable
public String toString()
public boolean equals(Object obj)
如果一个 LDAP 名称中的每个 RDN 都等于另一个 LDAP 名称中的相应 RDN,则两个 LDAP 名称相等。这意味着两个 LDAP 名称有相同数量的 RDN,并且每个 RDN 与另一个名称中相应 RDN 的 equals() 测试都返回 true。有关 RDN 相等性的定义,请参阅 Rdn.equals(Object obj)
。
obj
- 要与之比较的对象(可能为 null)。
hashCode()
public int compareTo(Object obj)
如果 obj 为 null 或者不是一个 LdapName 实例,则抛出 ClassCastException。
LDAP 名称的排序遵从字符串比较的字典规则,并将此扩展到应用于 LDAP 名称中的所有 RDN。按照 RDN 的指定顺序将它们排列起来,并按字典顺序进行比较。有关 RDN 比较规则,请参见 Rdn.compareTo(Object obj)
。
如果此 LDAP 名称按字典顺序小于 obj,则返回一个负数。如果此 LDAP 名称按字典顺序大于 obj,则返回一个正数。
Comparable<Object>
中的
compareTo
Name
中的
compareTo
obj
- 要与之比较的非 null LdapName 实例。
ClassCastException
- 如果 obj 为 null 或者不是一个 LdapName。
Comparable.compareTo(Object)
public int hashCode()
equals(java.lang.Object)