- java.lang.Object
-
- javax.naming.ldap.Rdn
-
- All Implemented Interfaces:
-
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服务器,LDAP服务器可以基于诸如其架构信息和互操作性考虑因素来接受或拒绝该名称。以下代码示例显示如何使用以type和value作为参数的构造函数构造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实例的并发多线程只读访问不需要同步。除非另有说明,否则将null参数传递给此类中的构造函数或方法将导致抛出NullPointerException。
- 从以下版本开始:
- 1.5
- 另请参见:
- Serialized Form
-
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 intcompareTo(Object obj)将此Rdn与指定的对象进行比较以进行订购。booleanequals(Object obj)将指定的对象与此Rdn进行比较以获得相等性。static StringescapeValue(Object val)给定属性的值,根据 RFC 2253中指定的规则返回一个转义的字符串。StringgetType()检索此Rdn类型之一。ObjectgetValue()检索此Rdn值之一。inthashCode()返回此RDN的哈希码。intsize()检索此Rdn中的属性类型/值对数。AttributestoAttributes()检索此Rdn中包含的类型/值映射的Attributes视图。StringtoString()static ObjectunescapeValue(String val)给定根据 RFC 2253中规定的规则格式化的属性值字符串,返回未格式化的值。
-
-
-
构造方法详细信息
-
Rdn
public Rdn(Attributes attrSet) throws InvalidNameException
- 参数
-
attrSet- 包含类型/值映射的非空和非空属性。 - 异常
-
InvalidNameException-如果内容attrSet不能用来构造有效的RDN。
-
Rdn
public Rdn(String rdnString) throws InvalidNameException
- 参数
-
rdnString- 非空和非空的RFC2253格式的字符串。 - 异常
-
InvalidNameException- 如果在解析rdnString期间发生语法错误。
-
Rdn
public Rdn(Rdn rdn)
从给定的rdn构造一个Rdn。rdn的内容简单地复制到新创建的Rdn中。- 参数
-
rdn- 要复制的非空Rdn。
-
Rdn
public Rdn(String type, Object value) throws InvalidNameException
- 参数
-
type- 非空和非空字符串属性类型。 -
value- 非空和非空属性值。 - 异常
-
InvalidNameException- 如果类型/值不能用于构建有效的RDN。 - 另请参见:
-
toString()
-
-
方法详细信息
-
getValue
public Object getValue()
- 结果
- 非空属性值。
-
getType
public String getType()
检索此Rdn类型之一。 当RDN包含单一类型和值映射(这是常见的RDN使用)时,这是获取类型的便利方法。对于多值RDN,类型/值对没有在其上定义特定的顺序。 在这种情况下,此方法返回类型/值对之一的类型。
getValue()方法返回与此方法返回的类型相对应的值。- 结果
- 非空属性类型。
-
compareTo
public int compareTo(Object obj)
将此Rdn与指定的对象进行比较以进行订购。 返回一个负整数,零或正整数,因为该Rdn小于,等于或大于给定的对象。如果obj为null或者不是实例的Rdn,则抛出ClassCastException。
RDN的属性类型和值对相互排列,并进行字典比对。 多值Rdns中的组件顺序(例如“ou = Sales + cn = Bob”)并不重要。
- Specified by:
-
compareTo在接口Comparable<Object> - 参数
-
obj- 要比较的非空对象。 - 结果
- 负整数,零或正整数,因为该Rdn小于,等于或大于给定的对象。
- 异常
-
ClassCastException- 如果obj为空或不是Rdn。
-
equals
public boolean equals(Object obj)
将指定的对象与此Rdn进行比较以获得相等性。 如果给定对象也是Rdn,则返回true,并且两个Rdns表示相同的属性类型和值映射。 多值Rdns中的组件顺序(例如“ou = Sales + cn = Bob”)并不重要。类型和值等价匹配完成如下:
- 将类型与其忽略的情况进行比较。
- 具有引用,转义或UTF8-hex编码的不同但等效使用的字符串值被认为是相等的。 在比较期间忽略值的情况。
如果obj为空,则不返回Rdn的实例,则返回false。
- 重写:
-
equals在Object - 参数
-
obj- 要与此Rdn相等的对象。 - 结果
- 如果指定的对象等于此Rdn,则为true。
- 另请参见:
-
hashCode()
-
hashCode
public int hashCode()
返回此RDN的哈希码。 相等的两个RDN(根据equals方法)将具有相同的哈希码。- 重写:
-
hashCodeObject - 结果
- 表示此Rdn的哈希码的int。
- 另请参见:
-
equals(java.lang.Object)
-
toAttributes
public Attributes toAttributes()
检索此Rdn中包含的类型/值映射的Attributes视图。- 结果
- 包含此Rdn类型/值映射的非空属性。
-
size
public int size()
检索此Rdn中的属性类型/值对数。- 结果
- 此Rdn中的非负数类型/值对。
-
escapeValue
public static String escapeValue(Object val)
给定属性的值,根据RFC 2253中指定的规则返回一个转义的字符串。例如,如果val是“Sue,Grabbit and Runn”,则此方法返回的转义值为“Sue \,Grabbit and Runn”。
字符串值表示为字符串和二进制值作为字节数组。
- 参数
-
val- 要转义的非空对象。 - 结果
- 转义字符串值。
- 异常
-
ClassCastException- 如果val不是字符串或字节数组。
-
unescapeValue
public static Object unescapeValue(String val)
给定根据RFC 2253中规定的规则格式化的属性值字符串,返回未格式化的值。 转义和引号被剥离,十六进制编码的UTF-8转换为等效的UTF-16字符。 返回字符串值作为字符串,二进制值作为字节数组。RFC 2253中定义了合法和非法的值。该方法大大接受了这些值,并没有捕获所有非法值。 因此,传递非法值可能不一定会触发
IllegalArgumentException。- 参数
-
val- 要非转义的非空字符串。 - 结果
- 未转义价值。
- 异常
-
IllegalArgumentException- 提供非法值时。
-
-