public class Rdn extends Object implements Serializable, Comparable<Object>
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。
Constructor and Description |
---|
Rdn(Attributes attrSet)
从给定的属性集构造一个Rdn。
|
Rdn(Rdn rdn)
从给定的
rdn构造一个Rdn。
|
Rdn(String rdnString)
从给定的字符串构造一个Rdn。
|
Rdn(String type, Object value)
从给定的属性类型和值构造一个Rdn。
|
Modifier and Type | Method and Description |
---|---|
int |
compareTo(Object obj)
将此Rdn与指定的对象进行比较以进行订购。
|
boolean |
equals(Object obj)
将指定的对象与此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()
|
static Object |
unescapeValue(String val)
鉴于根据在指定的规则进行格式化的属性值串
RFC 2253 ,返回未格式化的值。
|
public Rdn(Attributes attrSet) throws InvalidNameException
attrSet
- 包含类型/值映射的非空和非空属性。
InvalidNameException
-如果
attrSet内容不能被用来构建一个有效的RDN。
public Rdn(String rdnString) throws InvalidNameException
rdnString
- 非空和非空的RFC2253格式的字符串。
InvalidNameException
- 如果在解析rdnString期间发生语法错误。
public Rdn(Rdn rdn)
rdn
- 要复制的非空Rdn。
public Rdn(String type, Object value) throws InvalidNameException
type
- 非空和非空字符串属性类型。
value
- 非空和非空属性值。
InvalidNameException
- 如果类型/值不能用于构建有效的RDN。
toString()
public Object getValue()
public String getType()
对于多值RDN,类型/值对没有在其上定义特定的顺序。 在这种情况下,此方法返回类型/值对之一的类型。 getValue()
方法返回与此方法返回的类型相对应的值。
public int compareTo(Object obj)
如果obj为null或者不是实例的Rdn,则抛出ClassCastException。
RDN的属性类型和值对相互排列,并进行字典比对。 多值Rdns中的组件顺序(例如“ou = Sales + cn = Bob”)并不重要。
compareTo
在界面
Comparable<Object>
obj
- 要比较的非空对象。
ClassCastException
- 如果obj为空或不是Rdn。
public boolean equals(Object obj)
类型和值等价匹配完成如下:
如果obj为空,则不返回Rdn的实例,则返回false。
equals
在
Object
obj
- 要与此Rdn相等的对象。
hashCode()
public int hashCode()
hashCode
在类别
Object
equals(java.lang.Object)
public Attributes toAttributes()
Attributes
视图。
public int size()
public static String escapeValue(Object val)
例如,如果val是“Sue,Grabbit and Runn”,则此方法返回的转义值为“Sue \,Grabbit and Runn”。
字符串值表示为字符串和二进制值作为字节数组。
val
- 要转义的非空对象。
ClassCastException
- 如果val不是字符串或字节数组。
public static Object unescapeValue(String val)
RFC 2253中定义了合法和非法的值。该方法大大接受了这些值,并没有捕获所有非法值。 因此,传递非法值可能不一定会触发IllegalArgumentException 。
val
- 要非
val
的非空字符串。
IllegalArgumentException
- 提供非法值时。