Module  java.naming
软件包  javax.naming.ldap

Class Rdn

  • All Implemented Interfaces:
    SerializableComparable<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
    • 构造方法详细信息

      • Rdn

        public Rdn​(Attributes attrSet)
            throws InvalidNameException
        从给定的属性集构造一个Rdn。 Attributes

        字符串属性值不会被解释为RFC 2253格式的RDN字符串。 也就是说,值被字面上使用(未解析),并被假定为未转义。

        参数
        attrSet - 包含类型/值映射的非空和非空属性。
        异常
        InvalidNameException -如果内容 attrSet不能用来构造有效的RDN。
      • Rdn

        public Rdn​(String rdnString)
            throws InvalidNameException
        从给定的字符串构造一个Rdn。 这个构造函数根据在定义的规则格式化的字符串RFC 2253和在类描述用于描述LdapName
        参数
        rdnString - 非空和非空的RFC2253格式的字符串。
        异常
        InvalidNameException - 如果在解析rdnString期间发生语法错误。
      • Rdn

        public Rdn​(Rdn rdn)
        从给定的rdn构造一个Rdn。 rdn的内容简单地复制到新创建的Rdn中。
        参数
        rdn - 要复制的非空Rdn。
      • Rdn

        public Rdn​(String type,
                   Object value)
            throws InvalidNameException
        从给定的属性类型和值构造一个Rdn。 字符串属性值不会被解释为RFC 2253格式的RDN字符串。 也就是说,值被字面上使用(未解析),并被假定为未转义。
        参数
        type - 非空和非空字符串属性类型。
        value - 非空和非空属性值。
        异常
        InvalidNameException - 如果类型/值不能用于构建有效的RDN。
        另请参见:
        toString()
    • 方法详细信息

      • getValue

        public Object getValue​()
        检索此Rdn值之一。 当RDN包含单一类型和值映射(这是常见的RDN使用)时,这是获取该值的便利方法。

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

        结果
        非空属性值。
      • getType

        public String getType​()
        检索此Rdn类型之一。 当RDN包含单一类型和值映射(这是常见的RDN使用)时,这是获取类型的便利方法。

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

        结果
        非空属性类型。
      • toString

        public String toString​()
        返回此Rdn如在由定义的格式表示的字符串RFC 2253和在类描述用于描述LdapName
        重写:
        toStringObject
        结果
        Rdn的字符串表示形式。
      • 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。

        重写:
        equalsObject
        参数
        obj - 要与此Rdn相等的对象。
        结果
        如果指定的对象等于此Rdn,则为true。
        另请参见:
        hashCode()
      • hashCode

        public int hashCode​()
        返回此RDN的哈希码。 相等的两个RDN(根据equals方法)将具有相同的哈希码。
        重写:
        hashCode Object
        结果
        表示此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 - 提供非法值时。