- 所有已实现的接口:
-
Serializable
,Comparable<Object>
LdapName
类描述的类描述中所述。
Rdn类表示属性类型/值映射的RDN,可以使用Attributes
查看。此外,它包含方便的方法,允许在Rdn包含单个属性类型/值对时轻松检索类型和值,这是典型用法中的情况。它还包含帮助方法,允许对未格式化的属性值进行转义和根据RFC2253中定义的转义语法格式化的值进行取消转义。对于以对象形式接受或返回属性值的方法,该值可以是字符串(未转义形式)或字节数组。
Rdn
将正确解析所有有效的RDN,但在解析无效的RDN时不会尝试检测所有可能的违规行为。它在接受无效的RDN时是“宽容的”。名称的“有效性”最终在将其提供给LDAP服务器时确定,LDAP服务器可能根据其模式信息和互操作性考虑因素接受或拒绝名称。
以下代码示例显示如何使用以类型和值作为参数的构造函数构造Rdn:
Rdn rdn = new Rdn("cn", "Juicy, Fruit"); System.out.println(rdn.toString());最后一行将打印
cn=Juicy\, Fruit
。可以使用unescapeValue()
方法取消转义逗号,从而得到原始值"Juicy, Fruit"
。使用escapeValue()
方法在逗号前添加转义。
可以通过RFC 2253中定义的RDN字符串的字符串表示形式实例化此类,如以下代码示例所示:
Rdn rdn = new Rdn("cn=Juicy\\, Fruit"); System.out.println(rdn.toString());最后一行将打印
cn=Juicy\, Fruit
。
对于Rdn
的实例的并发多线程只读访问无需同步。
除非另有说明,在此类中将空参数传递给构造函数或方法的行为将导致抛出NullPointerException。
- 自从:
- 1.5
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
将此Rdn与指定的对象进行比较以确定顺序。boolean
将指定的对象与此Rdn进行比较以确定相等性。static String
escapeValue
(Object val) 给定属性值,根据RFC 2253中指定的规则返回一个转义的字符串。getType()
检索此Rdn的一个类型。getValue()
检索此Rdn的一个值。int
hashCode()
返回此RDN的哈希码。int
size()
检索此Rdn中属性类型/值对的数量。检索包含此Rdn中类型/值映射的Attributes
视图。toString()
static Object
unescapeValue
(String val) 给定根据RFC 2253中指定的规则格式化的属性值字符串,返回未格式化的值。
-
Constructor Details
-
Rdn
从给定属性集构造一个Rdn。参见Attributes
。字符串属性值不被解释为RFC 2253格式化的RDN字符串。也就是说,这些值被直接使用(未解析)并假定为未转义。
- 参数:
-
attrSet
- 包含非空属性的非空属性,其中包含类型/值映射。 - 抛出:
-
InvalidNameException
- 如果attrSet
的内容无法用于构造有效的RDN。
-
Rdn
- 参数:
-
rdnString
- 非空且非空的RFC2253格式化字符串。 - 抛出:
-
InvalidNameException
- 如果在解析rdnString时发生语法错误。
-
Rdn
从给定的rdn
构造一个Rdn。将rdn
的内容简单复制到新创建的Rdn中。- 参数:
-
rdn
- 要复制的非空Rdn。
-
Rdn
从给定属性类型和值构造一个Rdn。字符串属性值不被解释为RFC 2253格式化的RDN字符串。也就是说,这些值被直接使用(未解析)并假定为未转义。- 参数:
-
type
- 非空且非空的字符串属性类型。 -
value
- 非空且非空的属性值。 - 抛出:
-
InvalidNameException
- 如果类型/值无法用于构造有效的RDN。 - 参见:
-
-
Method Details
-
getValue
检索此Rdn的一个值。这是一个方便的方法,用于在RDN包含单个类型和值映射时获取值,这是常见的RDN用法。对于多值RDN,此方法返回与
getType()
方法返回的类型对应的值。- 返回:
- 非空属性值。
-
getType
检索此Rdn的一个类型。这是一个方便的方法,用于在RDN包含单个类型和值映射时获取类型,这是常见的RDN用法。对于多值RDN,未对类型/值对进行特定顺序定义。在这种情况下,此方法返回一个类型/值对的类型。
getValue()
方法返回与此方法返回的类型对应的值。- 返回:
- 非空属性类型。
-
toString
-
compareTo
将此Rdn与指定的对象进行比较以确定顺序。如果此Rdn小于、等于或大于给定的对象,则返回负整数、零或正整数。如果obj为null或不是Rdn的实例,则抛出ClassCastException。
RDN的属性类型和值对将相互对齐并按字典顺序进行比较。多值RDN中组件的顺序(例如"ou=Sales+cn=Bob")不重要。
- 指定者:
-
compareTo
在接口Comparable<Object>
中 - 参数:
-
obj
- 要与之比较的非空对象。 - 返回:
- 如果此Rdn小于、等于或大于给定的对象,则返回负整数、零或正整数。
- 抛出:
-
ClassCastException
- 如果obj为null或不是Rdn。
-
equals
将指定的对象与此Rdn进行比较以确定相等性。如果给定对象也是Rdn,并且两个Rdn表示相同的属性类型和值映射,则返回true。多值RDN中组件的顺序(例如"ou=Sales+cn=Bob")不重要。类型和值的相等匹配如下进行:
- 类型将忽略大小写进行比较。
- 具有不同但等效的引号、转义或UTF8-hex编码用法的字符串值被视为相等。在比较过程中忽略值的大小写。
如果obj为null或不是Rdn的实例,则返回false。
-
hashCode
public int hashCode()返回此RDN的哈希码。根据equals方法相等的两个RDN将具有相同的哈希码。 -
toAttributes
检索包含在此Rdn中的类型/值映射的Attributes
视图。- 返回:
- 包含此Rdn的类型/值映射的非空属性。
-
size
public int size()检索此Rdn中属性类型/值对的数量。- 返回:
- 此Rdn中类型/值对的非负数。
-
escapeValue
给定属性的值,根据RFC 2253中指定的规则返回一个转义字符串。例如,如果val为"Sue, Grabbit and Runn",则此方法返回的转义值为"Sue\, Grabbit and Runn"。
字符串值表示为String,二进制值表示为字节数组。
- 参数:
-
val
- 要转义的非空对象。 - 返回:
- 转义的字符串值。
- 抛出:
-
ClassCastException
- 如果val不是String或字节数组。
-
unescapeValue
给定根据RFC 2253中指定的规则格式化的属性值字符串,返回未格式化的值。转义符和引号被剥离,十六进制编码的UTF-8被转换为等效的UTF-16字符。将字符串值作为String返回,将二进制值作为字节数组返回。RFC 2253中定义了合法和非法值。此方法在接受值方面很宽松,并不捕获所有非法值。因此,传入非法值可能不一定会触发
IllegalArgumentException
。- 参数:
-
val
- 要取消转义的非空字符串。 - 返回:
- 未转义的值。
- 抛出:
-
IllegalArgumentException
- 当提供非法值时。
-