- 所有已实现的接口:
-
Serializable
,Cloneable
,Comparable<Object>
,Name
此类解决了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
实例的并发多线程只读访问无需同步。
除非另有说明,在此类的构造函数或方法中将空参数传递会导致抛出NullPointerException。
- 自:
- 1.5
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription在此LDAP名称中的指定位置添加单个组件。在此LDAP名称中的指定位置添加单个RDN。在此LDAP名称的末尾添加单个组件。在此LDAP名称的末尾添加单个RDN。按顺序在此名称的指定位置添加名称的RDN。按顺序在此名称的指定位置添加名称的组件。按顺序在此名称的末尾添加名称的RDN。按顺序在此名称的末尾添加名称的组件。clone()
生成此名称的新副本。int
将此LdapName与指定的对象进行比较以确定顺序。boolean
确定指定的RDN序列是否形成此LDAP名称的后缀。boolean
确定此LDAP名称是否以指定的LDAP名称后缀结束。boolean
确定两个LDAP名称是否相等。get
(int posn) 将此LDAP名称的组件作为字符串检索。getAll()
将此名称的组件作为字符串枚举检索。getPrefix
(int posn) 创建一个名称,其组件由此LDAP名称的组件的前缀组成。getRdn
(int posn) 将此LDAP名称的RDN作为Rdn检索。getRdns()
检索相对显式名称的列表。getSuffix
(int posn) 创建一个名称,其组件由此LDAP名称中的组件的后缀组成。int
hashCode()
计算此LDAP名称的哈希码。boolean
isEmpty()
确定此LDAP名称是否为空。remove
(int posn) 从此LDAP名称中删除一个组件。int
size()
检索此LDAP名称中的组件数。boolean
startsWith
(List<Rdn> rdns) 确定指定的RDN序列是否形成此LDAP名称的前缀。boolean
startsWith
(Name n) 确定此LDAP名称是否以指定的LDAP名称前缀开头。toString()
返回此LDAP名称的字符串表示形式,格式由RFC 2253定义,并在类描述中描述。
-
Constructor Details
-
LdapName
从给定的显式名称构造LDAP名称。- 参数:
-
name
- 这是根据RFC 2253定义的非空显式名称。 - 抛出:
-
InvalidNameException
- 如果检测到语法违规。 - 参见:
-
LdapName
给定其解析的RDN组件,构造LDAP名称。列表中RDN的索引遵循类描述中描述的RDN编号。
- 参数:
-
rdns
- 形成此LDAP名称的非空Rdn
列表。
-
-
Method Details
-
size
public int size()检索此LDAP名称中的组件数。 -
isEmpty
public boolean isEmpty()确定此LDAP名称是否为空。空名称是具有零个组件的名称。 -
getAll
将此名称的组件作为字符串枚举检索。对此名称的更新对此枚举的影响是未定义的。如果名称具有零个组件,则返回一个空(非空)枚举。枚举返回的组件的顺序与类描述中描述的组件编号顺序相同。 -
get
将此LDAP名称的组件作为字符串检索。- 指定者:
-
get
在接口Name
中 - 参数:
-
posn
- 要检索的组件的基于0的索引。必须在范围[0,size())内。 - 返回:
- 索引为posn的非空组件。
- 抛出:
-
IndexOutOfBoundsException
- 如果posn超出指定范围。
-
getRdn
将此LDAP名称的RDN作为Rdn检索。- 参数:
-
posn
- 要检索的RDN的基于0的索引。必须在范围[0,size())内。 - 返回:
- 索引为posn的非空RDN。
- 抛出:
-
IndexOutOfBoundsException
- 如果posn超出指定范围。
-
getPrefix
创建一个名称,其组件由此LDAP名称的组件的前缀组成。对此名称的后续更改不会影响返回的名称,反之亦然。- 指定者:
-
getPrefix
在接口Name
中 - 参数:
-
posn
- 要停止的组件的基于0的索引。必须在范围[0,size()]内。 - 返回:
-
由索引范围[0,posn)中的组件组成的
LdapName
实例。如果posn为零,则返回一个空的LDAP名称。 - 抛出:
-
IndexOutOfBoundsException
- 如果posn超出指定范围。
-
getSuffix
创建一个名称,其组件由此LDAP名称中的组件的后缀组成。对此名称的后续更改不会影响返回的名称,反之亦然。- 指定者:
-
getSuffix
在接口Name
中 - 参数:
-
posn
- 要开始的组件的基于0的索引。必须在范围[0,size()]内。 - 返回值:
-
由范围[posn,size())中索引处的组件组成的
LdapName
实例。如果posn等于size(),则返回一个空的LDAP名称。 - 抛出:
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
startsWith
确定此LDAP名称是否以指定的LDAP名称前缀开头。如果名称n
等于getPrefix(n.size())
,则名称n
是前缀--换句话说,此LDAP名称以'n'开头。如果n为null或不是类描述中描述的RFC2253格式的名称,则返回false。- 指定者:
-
startsWith
在接口Name
中 - 参数:
-
n
- 要检查的LDAP名称。 - 返回值:
-
如果
n
是此LDAP名称的前缀,则返回true,否则返回false。 - 参见:
-
startsWith
确定指定的RDN序列是否形成此LDAP名称的前缀。如果此LdapName至少与rdns一样长,并且在范围[0, rdns.size())中的每个位置p上,组件getRdn(p)与rdns.get(p)匹配,则返回true。否则返回false。如果rdns为null,则返回false。- 参数:
-
rdns
- 要检查的Rdn
序列。 - 返回值:
-
如果
rdns
形成此LDAP名称的前缀,则返回true,否则返回false。
-
endsWith
确定此LDAP名称是否以指定的LDAP名称后缀结尾。如果名称n
等于getSuffix(size()-n.size())
,则名称n
是后缀--换句话说,此LDAP名称以'n'结尾。如果n为null或不是类描述中描述的RFC2253格式的名称,则返回false。 -
endsWith
确定指定的RDN序列是否形成此LDAP名称的后缀。如果此LdapName至少与rdns一样长,并且在范围[size() - rdns.size(), size())中的每个位置p上,组件getRdn(p)与rdns.get(p)匹配,则返回true。否则返回false。如果rdns为null,则返回false。- 参数:
-
rdns
- 要检查的Rdn
序列。 - 返回值:
-
如果
rdns
形成此LDAP名称的后缀,则返回true,否则返回false。
-
addAll
将名称的组件按顺序添加到此名称的末尾。- 指定者:
-
addAll
在接口Name
中 - 参数:
-
suffix
- 要添加的非空组件。 - 返回值:
- 更新后的名称(不是新实例)。
- 抛出:
-
InvalidNameException
- 如果suffix
不是有效的LDAP名称,或者添加组件会违反此LDAP名称的语法规则。
-
addAll
将名称的RDN按顺序添加到此名称的末尾。- 参数:
-
suffixRdns
- 要添加的非空后缀Rdn
s。 - 返回值:
- 更新后的名称(不是新实例)。
-
addAll
将名称的组件按顺序添加到此名称中的指定位置。在第一个新组件的索引之后的位置处,此LDAP名称的组件(如果有)将向上移动(远离索引0)以容纳新组件。- 指定者:
-
addAll
在接口Name
中 - 参数:
-
posn
- 要添加新组件的索引。必须在范围[0,size()]内。 -
suffix
- 要添加的非空组件。 - 返回值:
- 更新后的名称(不是新实例)。
- 抛出:
-
InvalidNameException
- 如果suffix
不是有效的LDAP名称,或者添加组件会违反此LDAP名称的语法规则。 -
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
addAll
将名称的RDN按顺序添加到此名称中的指定位置。此LDAP名称中在第一个新RDN的索引之后的位置处的RDN将向上移动(远离索引0)以容纳新的RDN。- 参数:
-
posn
- 要添加后缀RDNs的索引。必须在范围[0,size()]内。 -
suffixRdns
- 要添加的非空后缀Rdn
s。 - 返回值:
- 更新后的名称(不是新实例)。
- 抛出:
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
add
将单个组件添加到此LDAP名称的末尾。- 指定者:
-
add
在接口Name
中 - 参数:
-
comp
- 要添加的非空组件。 - 返回值:
- 更新后的LdapName,而不是新实例。不能为null。
- 抛出:
-
InvalidNameException
- 如果在名称末尾添加comp会违反名称的语法。
-
add
将单个RDN添加到此LDAP名称的末尾。- 参数:
-
comp
- 要添加的非空RDN。 - 返回值:
- 更新后的LdapName,而不是新实例。不能为null。
-
add
在此LDAP名称中的指定位置添加单个组件。在新组件的索引之后的位置处,此LDAP名称中的组件将向上移动一个位置(远离索引0)以容纳新组件。- 指定者:
-
add
在接口Name
中 - 参数:
-
posn
- 要添加新组件的索引。必须在范围[0,size()]内。 -
comp
- 要添加的非空组件。 - 返回值:
- 更新后的LdapName,而不是新实例。不能为null。
- 抛出:
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。 -
InvalidNameException
- 如果在指定位置添加comp会违反名称的语法。
-
add
在此LDAP名称中的指定位置添加单个RDN。在新RDN的索引之后的位置处,此LDAP名称中的RDN将向上移动一个位置(远离索引0)以容纳新的RDN。- 参数:
-
posn
- 要添加新RDN的索引。必须在范围[0,size()]内。 -
comp
- 要添加的非空RDN。 - 返回值:
- 更新后的LdapName,而不是新实例。不能为null。
- 抛出:
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
remove
从此LDAP名称中删除一个组件。将删除指定位置处的此名称的组件。大于此位置的索引的组件(如果有)将向下移动一个位置(朝向索引0)。- 指定者:
-
remove
在接口Name
中 - 参数:
-
posn
- 要删除的组件的索引。必须在范围[0,size())内。 - 返回值:
- 被删除的组件(一个字符串)。
- 抛出:
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。 -
InvalidNameException
- 如果删除组件会违反名称的语法规则。
-
getRdns
检索相对区分名称的列表。返回的列表的内容不可修改。返回的列表中的RDN的索引遵循类描述中描述的RDN的编号。如果名称没有任何组件,则返回一个空列表。- 返回值:
-
作为RDN列表的名称,这些RDN是
Rdn
的实例。
-
clone
生成此名称的新副本。对此名称的组件的后续更改不会影响新副本,反之亦然。 -
toString
返回此LDAP名称的字符串表示形式,格式由RFC 2253定义,并在类描述中描述。如果名称没有任何组件,则返回空字符串。 -
equals
确定两个LDAP名称是否相等。如果obj为null或不是LDAP名称,则返回false。如果一个LDAP名称中的每个RDN等于另一个LDAP名称中对应的RDN,则两个LDAP名称相等。这意味着两个名称具有相同数量的RDN,并且每个RDN与另一个名称中的对应RDN的equals()测试返回true。有关RDN相等性的定义,请参见
Rdn.equals(Object obj)
。 -
compareTo
将此LdapName与指定的对象进行比较以确定顺序。根据此名称小于、等于或大于给定对象的情况返回负整数、零或正整数。如果obj为null或不是LdapName的实例,则抛出ClassCastException。
LDAP名称的排序遵循字符串比较的词典规则,其中所有RDN都按照指定的顺序排列并进行词典排序比较。有关RDN比较规则,请参见
Rdn.compareTo(Object obj)
。如果此LDAP名称在字典顺序上小于obj,则返回负数。如果此LDAP名称在字典顺序上大于obj,则返回正数。
- 指定者:
-
compareTo
在接口Comparable<Object>
中 - 指定者:
-
compareTo
在接口Name
中 - 参数:
-
obj
- 要与之比较的非null LdapName实例。 - 返回:
- 负整数、零或正整数,表示此名称小于、等于或大于给定的obj。
- 抛出:
-
ClassCastException
- 如果obj为null或不是LdapName。 - 参见:
-
hashCode
public int hashCode()计算此LDAP名称的哈希码。哈希码是此名称的各个RDN的哈希码之和。
-