- java.lang.Object
-
- javax.naming.ldap.LdapName
-
- 实现的所有接口
-
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
或LdapName
返回的字符串名称使用完整的Unicode字符集。 它们还可能包含编码为UTF-8的字符,每个八位字节由三个字符的子字符串表示,例如“\\ B4”。 但是,它们可能不包含编码为UTF-8的字符,每个八位字节由字符串中的单个字符表示:含义不明确。LdapName
将正确解析所有有效名称,但在解析无效名称时不会尝试检测所有可能的违规。 接受无效名称是“慷慨的”。 名称的“有效性”最终在提供给LDAP服务器时确定,该服务器可以基于诸如其架构信息和互操作性考虑因素之类的因素接受或拒绝该名称。测试名称是否相等时,属性类型(二进制和字符串值)不区分大小写。 具有不同但等效的引用,转义或UTF8-hex编码用法的字符串值被认为是相等的。 多值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
- 另请参见:
- Serialized Form
-
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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与指定的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()
以 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()
以字符串枚举的形式检索此名称的组件。 此枚举更新此名称的效果未定义。 如果名称的组件为零,则返回空(非null)枚举。 枚举返回的组件的顺序与组描述中描述的组件的编号顺序相同。
-
get
public String get(int posn)
以字符串形式检索此LDAP名称的组件。- Specified by:
-
get
在界面Name
- 参数
-
posn
- 要检索的组件的从0开始的索引。 必须在[0,size())范围内。 - 结果
- 索引posn处的非null组件。
- 异常
-
IndexOutOfBoundsException
- 如果posn超出指定范围。
-
getRdn
public Rdn getRdn(int posn)
以Rdn的形式检索此LDAP名称的RDN。- 参数
-
posn
- 要检索的RDN的从0开始的索引。 必须在[0,size())范围内。 - 结果
- 索引posn处的非null RDN。
- 异常
-
IndexOutOfBoundsException
- 如果posn超出指定范围。
-
getPrefix
public Name getPrefix(int posn)
创建一个名称,其组件由此LDAP名称的组件的前缀组成。 对此名称的后续更改不会影响返回的名称,反之亦然。- Specified by:
-
getPrefix
,界面Name
- 参数
-
posn
- 要停止的组件的从0开始的索引。 必须在[0,size()]范围内。 - 结果
-
LdapName
的实例,由[0,posn]范围内的索引处的组件组成。 如果posn为零,则返回空LDAP名称。 - 异常
-
IndexOutOfBoundsException
- 如果posn超出指定范围。
-
getSuffix
public Name getSuffix(int posn)
创建一个名称,其组件由此LDAP名称中组件的后缀组成。 对此名称的后续更改不会影响返回的名称,反之亦然。- Specified by:
-
getSuffix
在界面Name
- 参数
-
posn
- 要启动的组件的从0开始的索引。 必须在[0,size()]范围内。 - 结果
-
LdapName
的实例,由[posn,size())范围内的索引处的组件组成。 如果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
- 要添加的非null组件。 - 结果
- 更新的名称(不是新实例)。
- 异常
-
InvalidNameException
- 如果suffix
不是有效的LDAP名称,或者组件的添加将违反此LDAP名称的语法规则。
-
addAll
public Name addAll(List<Rdn> suffixRdns)
将名称的RDN按顺序添加到此名称的末尾。- 参数
-
suffixRdns
- 要添加的非null后缀Rdn
。 - 结果
- 更新的名称(不是新实例)。
-
addAll
public Name addAll(int posn, Name suffix) throws InvalidNameException
在名称中的指定位置添加名称的组件 - 按顺序。 在第一个新组件的索引(如果有)或之后的此LDAP名称的组件向上移动(远离索引0)以容纳新组件。- Specified by:
-
addAll
在界面Name
- 参数
-
suffix
- 要添加的非null组件。 -
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
- 要添加的非null后缀Rdn
。 -
posn
- 添加后缀RDN的索引。 必须在[0,size()]范围内。 - 结果
- 更新的名称(不是新实例)。
- 异常
-
IndexOutOfBoundsException
- 如果posn超出指定范围。
-
add
public Name add(String comp) throws InvalidNameException
将单个组件添加到此LDAP名称的末尾。- Specified by:
-
add
在界面Name
- 参数
-
comp
- 要添加的非null组件。 - 结果
- 更新的LdapName,而不是新实例。 不能为空。
- 异常
-
InvalidNameException
- 如果在名称末尾添加comp将违反名称的语法。
-
add
public Name add(Rdn comp)
将单个RDN添加到此LDAP名称的末尾。- 参数
-
comp
- 要添加的非null RDN。 - 结果
- 更新的LdapName,而不是新实例。 不能为空。
-
add
public Name add(int posn, String comp) throws InvalidNameException
在此LDAP名称中的指定位置添加单个组件。 在新组件的索引(如果有)或之后,此LDAP名称的组件向上移动一个(远离索引0)以容纳新组件。- Specified by:
-
add
在界面Name
- 参数
-
comp
- 要添加的非null组件。 -
posn
- 要添加新组件的索引。 必须在[0,size()]范围内。 - 结果
- 更新的LdapName,而不是新实例。 不能为空。
- 异常
-
IndexOutOfBoundsException
- 如果posn超出指定范围。 -
InvalidNameException
- 如果在指定位置添加comp会违反名称的语法。
-
add
public Name add(int posn, Rdn comp)
在此LDAP名称中的指定位置添加单个RDN。 在新RDN的索引(如果有)或之后,此LDAP名称的RDN向上移动一个(远离索引0)以容纳新的RDN。- 参数
-
comp
- 要添加的非null RDN。 -
posn
- 添加新RDN的索引。 必须在[0,size()]范围内。 - 结果
- 更新的LdapName,而不是新实例。 不能为空。
- 异常
-
IndexOutOfBoundsException
- 如果posn超出指定范围。
-
remove
public Object remove(int posn) throws InvalidNameException
从此LDAP名称中删除组件。 将删除指定位置的此名称的组件。 索引大于此位置的组件(如果有)向下移动(朝向索引0)一。- Specified by:
-
remove
接口Name
- 参数
-
posn
- 要删除的组件的索引。 必须在[0,size())范围内。 - 结果
- 删除了组件(String)。
- 异常
-
IndexOutOfBoundsException
- 如果posn超出指定范围。 -
InvalidNameException
- 如果删除组件将违反名称的语法规则。
-
getRdns
public List<Rdn> getRdns()
检索相对可分辨名称的列表。 列表的内容是不可修改的。 返回列表中RDN的索引遵循类描述中描述的RDN编号。 如果名称包含零,则返回空列表。- 结果
-
作为类
Rdn
的实例的RDN列表的名称。
-
clone
public Object clone()
生成此名称的新副本。 对此名称的组件的后续更改不会影响新副本,反之亦然。
-
equals
public boolean equals(Object obj)
确定两个LDAP名称是否相等。 如果obj为null或不是LDAP名称,则返回false。如果一个中的每个RDN等于另一个中的相应RDN,则两个LDAP名称相等。 这意味着它们具有相同数量的RDN,并且每个RDN对另一个名称中相应RDN的equals()测试返回true。 有关RDN相等性的定义,请参见
Rdn.equals(Object obj)
。- 重写:
-
equals
类Object
- 参数
-
obj
- 要比较的可能为null的对象。 - 结果
- 如果obj等于此LDAP名称,则返回true,否则返回false。
- 另请参见:
-
hashCode()
-
compareTo
public int compareTo(Object obj)
将此LdapName与指定的Object进行比较以获取订单。 返回负整数,零或正整数,因为此Name小于,等于或大于给定的Object。如果obj为null或不是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
- 要比较的非null LdapName实例。 - 结果
- 一个负整数,零或正整数,因为此Name小于,等于或大于给定的obj。
- 异常
-
ClassCastException
- 如果obj为null或不是LdapName。 - 另请参见:
-
Comparable.compareTo(Object)
-
hashCode
public int hashCode()
计算此LDAP名称的哈希码。 哈希码是该名称的各个RDN的哈希码的总和。- 重写:
-
hashCode
类Object
- 结果
- 表示此名称的哈希码的int。
- 另请参见:
-
equals(java.lang.Object)
-
-