JavaTM Platform
Standard Ed. 6

javax.naming.ldap
类 Rdn

java.lang.Object
  继承者 javax.naming.ldap.Rdn
所有已实现的接口:
Serializable, Comparable<Object>

public class Rdn
extends Object
implements Serializable, Comparable<Object>

此类表示相对标识名,或 RDN,它是一个 RFC 2253 指定的标识名组件。RDN 的一个示例是 "OU=Sales+CN=J.Smith"。在此示例中,RDN 由多个属性类型/值对组成。RDN 根据 LdapName 类描述中的描述进行解析。

Rdn 类将 RDN 表示为属性类型/值映射关系,可以使用 Attributes 查看。此外,它还包含一些便捷方法,允许在 Rdn 由单个类型/值对组成(这是该类的典型使用方式)时对类型和值进行方便地检索。它还包含一些帮助器方法,允许根据 RFC2253 中定义的转义语法转义非格式化的属性值和取消格式化值的转义。对于采用或返回 Object 形式的属性值的方法,该值可能为 String(非转义形式的),也可能为字节数组。

Rdn 将恰当地解析所有有效 RDN,但是在解析无效 RDN 时不会尝试检测所有可能的错误情况。在接受无效 RDN 时,它显得很“大方”。名称的“有效性”在将名称提供给 LDAP 服务器时最终确定,服务器将基于名称的模式信息和互操作性考虑之类的因素来决定接受还是拒绝该名称。

以下示例代码展示了如何使用将类型和值用作参数的构造方法构造 Rdn:

        Rdn rdn = new Rdn("cn", "Juicy, Fruit");
        System.out.println(rdn.toString());
 
最后一行将打印 cn=Juicy\, FruitunescapeValue() 方法可用于取消在初始值 "Juicy, Fruit" 中所产生的转义逗号的转义。escapeValue() 方法在逗号之前添加转义。

可以通过 RFC 2253 中定义的 RDN 的字符串表示形式实例化此类,如以下示例代码所示:

        Rdn rdn = new Rdn("cn=Juicy\\, Fruit");
        System.out.println(rdn.toString());
 
最后一行将打印 cn=Juicy\, Fruit

Rdn 实例的并发多线程只读访问不必是同步的。

除非另有说明,否则将 null 参数传递给此类中的构造方法或方法的行为都会导致抛出 NullPointerException。

从以下版本开始:
1.5
另请参见:
序列化表格

构造方法摘要
Rdn(Attributes attrSet)
          根据给定属性集构造 Rdn。
Rdn(Rdn rdn)
          根据给定 rdn 构造 Rdn。
Rdn(String rdnString)
          根据给定字符串构造 Rdn。
Rdn(String type, Object value)
          根据给定属性类型和值构造 Rdn。
 
方法摘要
 int compareTo(Object obj)
          比较此 Rdn 与指定 Object 的顺序。
 boolean equals(Object obj)
          比较指定 Object 与此 Rdn 的相等性。
static String escapeValue(Object val)
          在给定属性值的情况下返回根据 RFC 2253 中指定的规则转义的字符串。
 String getType()
          检索一个此 Rdn 的类型。
 Object getValue()
          检索一个此 Rdn 的值。
 int hashCode()
          返回此 RDN 的哈希码。
 int size()
          检索此 Rdn 中的属性类型/值对的数目。
 Attributes toAttributes()
          检索此 Rdn 中包含的类型/值映射关系的 Attributes 视图。
 String toString()
          以字符串形式返回此 Rdn,该字符串使用由 RFC 2253 定义并在 LdapName 类描述中描述的格式表示。
static Object unescapeValue(String val)
          在给定根据 RFC 2253 中指定的规则进行格式化的属性值字符串的情况下,返回未格式化的值。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

Rdn

public Rdn(Attributes attrSet)
    throws InvalidNameException
根据给定属性集构造 Rdn。参见 Attributes

字符串属性值不会被解释为 RFC 2253 格式的 RDN 字符串。即这些值是按字面意义(不解析)使用的,假定被取消了转义。

参数:
attrSet - 包含类型/值映射关系的非 null 非空属性。
抛出:
InvalidNameException - 如果无法使用 attrSet 的内容构造有效的 RDN。

Rdn

public Rdn(String rdnString)
    throws InvalidNameException
根据给定字符串构造 Rdn。此构造方法采用根据 RFC 2253 中定义和在 LdapName 类描述中描述的规则格式化的字符串。

参数:
rdnString - 非 null 和非空 RFC2253 格式化字符串。
抛出:
InvalidNameException - 如果在解析 rdnString 期间发生语法错误。

Rdn

public Rdn(Rdn rdn)
根据给定 rdn 构造 Rdn。将 rdn 的内容简单地复制到新创建的 Rdn 中。

参数:
rdn - 要复制的非 null Rdn。

Rdn

public Rdn(String type,
           Object value)
    throws InvalidNameException
根据给定属性类型和值构造 Rdn。字符串属性值不会被解释为 RFC 2253 格式的 RDN 字符串。即这些值是按字面意义(不解析)使用的,假定被取消了转义。

参数:
type - 非 null 和非空字符串属性类型。
value - 非 null 和非空属性值。
抛出:
InvalidNameException - 如果无法使用类型/值构造有效的 RDN。
另请参见:
toString()
方法详细信息

getValue

public Object getValue()
检索一个此 Rdn 的值。当 RDN 包含单个类型和值的映射关系(常见的 RDN 用法)时,此为获取值的便捷方法。

对于多值 RDN,此方法返回与 getType() 方法返回的类型相对应的值。

返回:
非 null 属性值。

getType

public String getType()
检索一个此 Rdn 的类型。当 RDN 包含单个类型和值的映射关系(常见的 RDN 用法)时,此为获取类型的便捷方法。

对于多值 RDN,类型/值对不具有对其定义的任何特定顺序。在这种情况下,此方法返回一种类型/值对的类型。getValue() 方法返回与此方法返回的类型相对应的值。

返回:
非 null 属性类型。

toString

public String toString()
以字符串形式返回此 Rdn,该字符串使用由 RFC 2253 定义并在 LdapName 类描述中描述的格式表示。

覆盖:
Object 中的 toString
返回:
Rdn 的字符串表示形式。

compareTo

public int compareTo(Object obj)
比较此 Rdn 与指定 Object 的顺序。根据此 Rdn 小于、等于还是大于指定 Object 分别返回负整数、零或正整数。

如果 obj 为 null 或者不是一个 Rdn 实例,则抛出 ClassCastException。

将 RDN 的属性类型和值对并肩排列起来,并按字典顺序进行比较。多值 Rdn 中组件的顺序(如 "ou=Sales+cn=Bob")无关紧要。

指定者:
接口 Comparable<Object> 中的 compareTo
参数:
obj - 要与之比较的非 null 对象。
返回:
根据此 Rdn 小于、等于还是大于指定 Object 分别返回负整数、零或正整数。
抛出:
ClassCastException - 如果 obj 为 null 或者不是一个 Rdn。


equals

public boolean equals(Object obj)
比较指定 Object 与此 Rdn 的相等性。如果给定对象也是 Rdn 并且两个 Rdn 表示相同的属性类型和值的映射关系,则返回 true。多值 Rdn 中组件的顺序(如 "ou=Sales+cn=Bob")无关紧要。

按照以下方式进行类型和值的相等性匹配:

如果 obj 为 null 或者不是一个 Rdn 实例,则返回 false。

覆盖:
Object 中的 equals
参数:
obj - 要与此 Rdn 进行相等性比较的对象。
返回:
如果指定的对象与此 Rdn 相等,则返回 true。
另请参见:
hashCode()

hashCode

public int hashCode()
返回此 RDN 的哈希码。两个相等的(根据 equals 方法) RDN 将具有相同的哈希码。

覆盖:
Object 中的 hashCode
返回:
表示此 Rdn 哈希码的 int。
另请参见:
equals(java.lang.Object)

toAttributes

public Attributes toAttributes()
检索此 Rdn 中包含的类型/值映射关系的 Attributes 视图。

返回:
包含此 Rdn 的类型/值映射关系的非 null 属性。

size

public int size()
检索此 Rdn 中的属性类型/值对的数目。

返回:
此 Rdn 中非负的类型/值对的数目。

escapeValue

public static String escapeValue(Object val)
在给定属性值的情况下返回根据 RFC 2253 中指定的规则转义的字符串。

例如,如果 val 为 "Sue, Grabbit and Runn",则此方法返回的转义值为 "Sue\, Grabbit and Runn"。

将字符串值表示为 String,将二进制值表示为字节数组。

参数:
val - 要转义的非 null 对象。
返回:
转义的字符串值。
抛出:
ClassCastException - 如果 val 不是 String 或字节数组。

unescapeValue

public static Object unescapeValue(String val)
在给定根据 RFC 2253 中指定的规则进行格式化的属性值字符串的情况下,返回未格式化的值。移除转义和引用,并将十六进制编码的 UTF-8 转换为等效的 UTF-16 字符。以 String 形式返回字符串值,以字节数组形式返回二进制值。

合法值和非法值在 RFC 2253 中定义。此方法在接受值方面要求并不严格,它不会捕获所有的非法值。因此,传入非法值时,不一定触发 IllegalArgumentException

参数:
val - 要取消转义的非 null 字符串。
返回:
转义值。
抛出:
IllegalArgumentException - 当提供非法值时。

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策