- java.lang.Object
-
- javax.naming.ldap.LdapName
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
,Comparable<Object>
,Name
public class LdapName extends Object implements Name
此类表示由RFC 2253指定的专有名称。 专有名称或DN由组成的有序列表组成,称为相对可分辨名称 s或RDN。 RFC 2253中描述了DN语法的详细信息。该类解决了RFC 2253中发现的一些歧义,如下所示:
- RFC 2253的术语“空白”未定义。 ASCII空间字符0x20(“”)用于它的位置。
- ',',';','='和'+'两边的空格是允许的。 这样的空格被接受,但不是由这个代码生成的,并且在比较名称时被忽略。
- 包含'='或非前导'#'字符(未转义)的AttributeValue字符串被接受。
传递给
LdapName
或返回的字符串名称使用完整的Unicode字符集。 它们还可以包含编码为UTF-8的字符,每个八位字节由三个字符的子字符串(如“\\ B4”)表示。 然而,它们可能不包含编码为UTF-8的字符,每个八位字节由字符串中的单个字符表示:意思是不明确的。LdapName
将正确解析所有有效的名称,但不会在解析无效名称时尝试检测所有可能的违规行为。 接受无效名称是“大方”的。 最终确定名称的“有效性”何时被提供给LDAP服务器,LDAP服务器可以基于诸如其架构信息和互操作性考虑因素来接受或拒绝该名称。当名称被测试相等时,属性类型,二进制和字符串值都是不区分大小写的。 具有引用,转义或UTF8-hex编码的不同但等效使用的字符串值被认为是相等的。 多值RDN中的组件顺序(例如“ou = Sales + cn = Bob”)并不重要。
LDAP名称的组件,即RDNs的编号。 具有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
- 另请参见:
- Serialized Form
-
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 Name
add(int posn, String comp)
在此LDAP名称中的指定位置添加单个组件。Name
add(int posn, Rdn comp)
在此LDAP名称中的指定位置添加单个RDN。Name
add(String comp)
将单个组件添加到此LDAP名称的末尾。Name
add(Rdn comp)
将单个RDN添加到此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与指定的对象进行比较。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)
检索此LDAP名称的RDN作为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()
以 RFC 2253定义的格式返回此LDAP名称的字符串表示形式,并在类描述中描述。
-
-
-
构造方法详细信息
-
LdapName
public LdapName(String name) throws InvalidNameException
从给定的可分辨名称构造一个LDAP名称。- 参数
-
name
- 这是根据 RFC 2253中定义的规则格式化的非空可分辨名称。 - 异常
-
InvalidNameException
- 如果检测到语法违规。 - 另请参见:
-
Rdn.escapeValue(Object value)
-
-
方法详细信息
-
isEmpty
public boolean isEmpty()
确定此LDAP名称是否为空。 一个空的名字是零个零件。
-
getAll
public Enumeration<String> getAll()
检索此名称的组件作为字符串的枚举。 在此枚举上更新此名称的效果未定义。 如果名称具有零个组件,则返回一个空(非空)枚举。 枚举返回的组件的顺序与组件按照类描述中所描述的顺序相同。
-
get
public String get(int posn)
以此字符串形式检索此LDAP名称的组件。- Specified by:
-
get
在接口Name
- 参数
-
posn
- 要检索的组件的基于0的索引。 必须在[0,size())范围内。 - 结果
- 索引posn处的非空组件。
- 异常
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
getRdn
public Rdn getRdn(int posn)
检索此LDAP名称的RDN作为Rdn。- 参数
-
posn
- 要检索的RDN的基于0的索引。 必须在[0,size())范围内。 - 结果
- 索引posn处的非空RDN。
- 异常
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
getPrefix
public Name getPrefix(int posn)
创建一个名称,其组件由此LDAP名称的组件的前缀组成。 此名称的后续更改不会影响返回的名称,反之亦然。- Specified by:
-
getPrefix
在接口Name
- 参数
-
posn
- 要停止的组件的基于0的索引。 必须在[0,size()]范围内。 - 结果
-
由范围[0,posn]中的索引组成的
LdapName
的实例。 如果posn为0,则返回空的LDAP名称。 - 异常
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
getSuffix
public Name getSuffix(int posn)
创建一个名称,其组件由此LDAP名称中的组件的后缀组成。 此名称的后续更改不会影响返回的名称,反之亦然。- Specified by:
-
getSuffix
在接口Name
- 参数
-
posn
- 要开始的组件的基于0的索引。 必须在[0,size()]范围内。 - 结果
-
由范围[posn,size())中的索引组成的
LdapName
的实例。 如果posn等于size(),则返回空的LDAP名称。 - 异常
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
startsWith
public boolean startsWith(Name n)
确定此LDAP名称是否以指定的LDAP名称前缀开头。 名称n
是一个前缀,如果它等于getPrefix(n.size())
- 换句话说,这个LDAP名称以'n'开头。 如果n为null或不是类描述中描述的RFC2253格式化名称,则返回false。- Specified by:
-
startsWith
在接口Name
- 参数
-
n
- 要检查的LDAP名称。 - 结果
-
如果
n
是此LDAP名称的前缀,n
true,否则为false。 - 另请参见:
-
getPrefix(int posn)
-
startsWith
public boolean startsWith(List<Rdn> rdns)
确定指定的RDN序列是否形成此LDAP名称的前缀。 如果此LdapName至少与rdns一样长,则返回true,对于范围[0,rdns.size())中的每个位置p,组件getRdn(p)与rdns.get(p)匹配。 否则返回false。 如果rdns为null,则返回false。- 参数
-
rdns
- 要检查的序列Rdn
。 - 结果
-
如果
rdns
形成此LDAP名称的前缀,rdns
true,否则为false。
-
endsWith
public boolean endsWith(Name n)
确定此LDAP名称是否以指定的LDAP名称后缀结尾。 名称n
是一个后缀,如果它等于getSuffix(size()-n.size())
- 换句话说,这个LDAP名称以'n'结尾。 如果n为null或不是类描述中描述的RFC2253格式化名称,则返回false。- Specified by:
-
endsWith
在接口Name
- 参数
-
n
- 要检查的LDAP名称。 - 结果
-
如果
n
是此名称的后缀,n
true,否则为false。 - 另请参见:
-
getSuffix(int posn)
-
endsWith
public boolean endsWith(List<Rdn> rdns)
确定指定的RDN序列是否形成此LDAP名称的后缀。 如果此LdapName至少与rdns一样长,则返回true,对于[size() - rdns.size(),size())中的每个位置p,组件getRdn(p)与rdns.get(p)匹配。 否则返回false。 如果rdns为null,则返回false。- 参数
-
rdns
- 要检查的序列Rdn
。 - 结果
-
如果
rdns
形成此LDAP名称的后缀,rdns
true,否则为false。
-
addAll
public Name addAll(Name suffix) throws InvalidNameException
将名称的组件按顺序添加到该名称的末尾。- Specified by:
-
addAll
在接口Name
- 参数
-
suffix
- 要添加的非零组件。 - 结果
- 更新的名称(不是新的实例)。
- 异常
-
InvalidNameException
- 如果suffix
不是有效的LDAP名称,或者添加组件将违反此LDAP名称的语法规则。
-
addAll
public Name addAll(List<Rdn> suffixRdns)
将名称的RDN添加到该名称的末尾。- 参数
-
suffixRdns
- 要添加的非空后缀Rdn
。 - 结果
- 更新的名称(不是新的实例)。
-
addAll
public Name addAll(int posn, Name suffix) throws InvalidNameException
在名称中的指定位置添加名称的组件。 第一个新组件的索引(如果有的话)或之后的此LDAP名称的组件向上移动(远离索引0)以适应新的组件。- Specified by:
-
addAll
在接口Name
- 参数
-
suffix
- 要添加的非零组件。 -
posn
- 添加新组件的索引。 必须在[0,size()]范围内。 - 结果
- 更新的名称(不是新的实例)。
- 异常
-
InvalidNameException
- 如果suffix
不是有效的LDAP名称,或者添加组件将违反此LDAP名称的语法规则。 -
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
addAll
public Name addAll(int posn, List<Rdn> suffixRdns)
在名称中的指定位置添加名称的RDN。 第一个新RDN的索引(如果有的话)或之后,该LDAP名称的RDN向上移动(远离索引0)以适应新的RDN。- 参数
-
suffixRdns
- 要添加的非空后缀Rdn
。 -
posn
- 添加后缀RDN的索引。 必须在[0,size()]范围内。 - 结果
- 更新的名称(不是新的实例)。
- 异常
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
add
public Name add(String comp) throws InvalidNameException
将单个组件添加到此LDAP名称的末尾。- Specified by:
-
add
在接口Name
- 参数
-
comp
- 要添加的非零组件。 - 结果
- 更新的LdapName,而不是一个新的实例。 不能为空。
- 异常
-
InvalidNameException
- 如果在名称末尾添加comp将违反名称的语法。
-
add
public Name add(Rdn comp)
将单个RDN添加到此LDAP名称的末尾。- 参数
-
comp
- 要添加的非空RDN。 - 结果
- 更新的LdapName,而不是一个新的实例。 不能为空。
-
add
public Name add(int posn, String comp) throws InvalidNameException
在此LDAP名称中的指定位置添加单个组件。 新组件的索引(如果有的话)或之后的此LDAP名称的组件向上移动一(远离索引0)以容纳新组件。- Specified by:
-
add
在接口Name
- 参数
-
comp
- 要添加的非零组件。 -
posn
- 添加新组件的索引。 必须在[0,size()]范围内。 - 结果
- 更新的LdapName,而不是一个新的实例。 不能为空。
- 异常
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。 -
InvalidNameException
- 如果在指定位置添加comp将违反名称的语法。
-
add
public Name add(int posn, Rdn comp)
在此LDAP名称中的指定位置添加单个RDN。 在新RDN的索引(如果有的话)或之后,该LDAP名称的RDN向上移动1(远离索引0)以容纳新的RDN。- 参数
-
comp
- 要添加的非空RDN。 -
posn
- 添加新RDN的索引。 必须在[0,size()]范围内。 - 结果
- 更新的LdapName,而不是一个新的实例。 不能为空。
- 异常
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。
-
remove
public Object remove(int posn) throws InvalidNameException
从此LDAP名称中删除组件。 该名称在指定位置的组件将被删除。 索引大于此位置(如果有)的组件向下移动(朝向索引0)1。- Specified by:
-
remove
在接口Name
- 参数
-
posn
- 要删除的组件的索引。 必须在[0,size())范围内。 - 结果
- 删除组件(一个String)。
- 异常
-
IndexOutOfBoundsException
- 如果posn在指定范围之外。 -
InvalidNameException
- 如果删除组件将违反名称的语法规则。
-
getRdns
public List<Rdn> getRdns()
检索相对可分辨名称的列表。 列表的内容是不可修改的。 返回列表中RDN的索引遵循类描述中描述的RDN的编号。 如果名称具有零个组件,则返回一个空列表。
-
clone
public Object clone()
生成一个这个名字的新副本。 对该名称的组件的后续更改不会影响新副本,反之亦然。
-
equals
public boolean equals(Object obj)
确定两个LDAP名称是否相等。 如果obj为空或不存在LDAP名称,则返回false。如果一个中的每个RDN等于另一个中的相应RDN,则两个LDAP名称相等。 这意味着两者都具有相同数量的RDN,并且每个RDN的equals()测试对其他名称中的相应RDN返回true。 有关RDN相等性的定义,请参阅
Rdn.equals(Object obj)
。- 重写:
-
equals
在Object
- 参数
-
obj
- 可能要比较的空对象。 - 结果
- 如果obj等于此LDAP名称,则为true,否则为false。
- 另请参见:
-
hashCode()
-
compareTo
public int compareTo(Object obj)
将此LdapName与指定的对象进行比较。 返回一个负整数,零或正整数,因为该名称小于,等于或大于给定的对象。如果obj为空或不是LdapName的实例,则抛出ClassCastException。
LDAP名称的排序遵循字符串比较的字典规则,其扩展名适用于LDAP名称中的所有RDN。 所有RDN按照指定的顺序排列,并按字典顺序进行比较。 有关RDN比较规则,请参阅
Rdn.compareTo(Object obj)
。如果此LDAP名称在词典上小于obj,则返回一个负数。 如果此LDAP名称在词典上大于obj,则返回正数。
- Specified by:
-
compareTo
在接口Comparable<Object>
- Specified by:
-
compareTo
在接口Name
- 参数
-
obj
- 与之比较的非空LdapName实例。 - 结果
- 负整数,零或正整数,因为此名称小于,等于或大于给定的obj。
- 异常
-
ClassCastException
- 如果obj为空或不是LdapName。 - 另请参见:
-
Comparable.compareTo(Object)
-
hashCode
public int hashCode()
计算此LDAP名称的哈希码。 哈希码是此名称的各个RDN的哈希码的总和。- 重写:
-
hashCode
在Object
- 结果
- 表示此名称的哈希码的int。
- 另请参见:
-
equals(java.lang.Object)
-
-