モジュール java.naming
パッケージ javax.naming.ldap

クラスRdn

  • すべての実装されたインタフェース:
    Serializable, Comparable<Object>

    public class Rdn
    extends Object
    implements Serializable, Comparable<Object>
    このクラスは、相対識別名、または識別名のコンポーネントであるRDN (RFC 2253を参照)を表します。 一例として、OU=Sales+CN=J.SmithというRDNがあるとします。 この例では、RDNは複数の属性の型/値ペアで構成されています。 RDNは、LdapNameのクラス記述で説明されているように解析されます。

    Rdnクラスは、RDNを、Attributesを使って表示可能な属性の型と値のマッピングとして表現します。 Rdnクラスには、Rdnが単一の型/値ペア(通常この形式で使用)で構成されているとき、この型と値を簡単に取得できるようにする便利なメソッドが含まれています。 また、RFC 2253に定義されているエスケープ構文に従って、書式なし属性値のエスケープと書式化された値のエスケープ解除を行なうヘルパー・メソッドも含まれています。 属性値をObjectとして取得、または返すメソッドの場合、値はString (エスケープ解除された書式)またはバイト配列になります。

    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のインスタンスに対する読取り専用の並行マルチスレッド・アクセスは、必ずしも同期させなくてもかまいません。

    ほかで指定がない場合、null引数をコンストラクタ、またはこのクラスのメソッドへ渡すと、NullPointerExceptionがスローされます。

    導入されたバージョン:
    1.5
    関連項目:
    直列化された形式
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      Rdn​(String rdnString)
      指定の文字列からRdnを作成します。
      Rdn​(String type, Object value)
      指定の属性の型および値からRdnを作成します。
      Rdn​(Attributes attrSet)
      指定の属性セットからRdnを作成します。
      Rdn​(Rdn rdn)
      特定のrdnからRdnを構築します。
    • コンストラクタの詳細

      • 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 - RFC 2253に定義されている書式を持つ、null以外の空でない文字列。
        例外:
        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の値の1つを取得します。 これは、RDNに型と値のマッピングが1つだけ含まれるとき(一般的なRDNの使用例)、この値を取得するために使用する便利なメソッドです。

        RDNの値が複数存在する場合、このメソッドは、getType()メソッドによって返される型に対応する値を返します。

        戻り値:
        null以外の属性値。
      • getType

        public String getType()
        このRdnの型の1つを取得します。 これは、RDNに型と値のマッピングが1つだけ含まれるとき(一般的なRDNの使用例)、この型を取得するために使用する便利なメソッドです。

        RDNの値が複数存在する場合、型/値ペアの順序は特に定義されていません。 この場合、このメソッドは、型/値ペアのいずれか1つの型を返します。 getValue()メソッドは、このメソッドによって返される型に対応する値を返します。

        戻り値:
        null以外の属性型。
      • toString

        public String toString()
        このRdnを、RFC 2253で定義され、LdapNameのクラスの説明に記載されている形式で表された文字列として返します。
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        Rdnの文字列表現。
      • compareTo

        public int compareTo​(Object obj)
        Rdnと、指定されたObjectの順序を比較します。 Rdnが指定されたObjectより小さい場合は負の整数、等しい場合は0、大きい場合は正の整数をそれぞれ返します。

        objがnull、またはRdnのインスタンスではない場合は、ClassCastExceptionがスローされます。

        RDNの属性の型と値のペアが、それぞれ辞書的に比較されます。 複数の値を持つRdn (「ou=Sales+cn=Bob」など)内のコンポーネントの順序は重要ではありません。

        定義:
        compareTo、インタフェース: Comparable<Object>
        パラメータ:
        obj - 比較対象となるnull以外のオブジェクト。
        戻り値:
        与えられたオブジェクトよりこのRdnが小さい場合は負の整数、等しい場合は0、大きい場合は正の整数。
        例外:
        ClassCastException - objがnullであるか、Rdnではない場合。
      • equals

        public boolean equals​(Object obj)
        指定のObjectとこのRdnの同等性を比較します。 比較対象のオブジェクトもRdnであり、2つのRdnが同一の属性の型と値のマッピングを表している場合は、trueが返されます。 複数の値を持つRdn (「ou=Sales+cn=Bob」など)内のコンポーネントの順序は重要ではありません。

        型の値の同等性のマッチングは次のように行われます。

        • 型の同等性が比較されます(アルファベットの大文字と小文字は区別されない)。
        • 引用、エスケープ、UTF-8の16進エンコーディングが同じであれば、文字列値そのものが異なっていても、同一の文字列と見なされます。 値のアルファベットの大文字と小文字は区別されません。

        objがnullである場合、またはRdnのインスタンスではない場合は、falseが返されます。

        オーバーライド:
        equals 、クラス:  Object
        パラメータ:
        obj - このRdnと等しいかどうかを比較するオブジェクト。
        戻り値:
        指定されたオブジェクトがこのRdnと等しい場合はtrue。
        関連項目:
        hashCode()
      • hashCode

        public int hashCode()
        このRDNのハッシュ・コードを返します。 equalsメソッドにより同等であることがわかっている2つのRDNは、同じハッシュ・コードを持ちます。
        オーバーライド:
        hashCode 、クラス:  Object
        戻り値:
        このRdnのハッシュ・コードを表すint。
        関連項目:
        equals(java.lang.Object)
      • toAttributes

        public Attributes toAttributes()
        このRdnに含まれる型/値のマッピングのAttributesビューを取得します。
        戻り値:
        このRdnの型/値のマッピングを含む、null以外の属性。
      • size

        public int size()
        このRdnに含まれる属性の型/値ペアの数を取得します。
        戻り値:
        このRdnに含まれる型/値ペアの数(0以上)。
      • 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で指定された規則に従って書式設定された属性値文字列が与えられている場合は、書式なしの値を返します。 エスケープと引用符は除去され、16進エンコーディングされたUTF-8は同等のUTF-16文字に変換されます。 文字列値をString、バイナリ値をバイト配列として返します。

        正当な値と不当な値は、RFC 2253に定義されています。 このメソッドは、値を受け付けることに対して寛大で、不当な値をすべて検出しません。 このため、不当な値を渡しても、必ずしもIllegalArgumentExceptionはトリガーされません。

        パラメータ:
        val - エスケープ解除するnull以外の文字列。
        戻り値:
        エスケープ解除された値。
        例外:
        IllegalArgumentException - 不当な値が渡された場合。