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

クラスLdapName

java.lang.Object
javax.naming.ldap.LdapName
すべての実装されたインタフェース:
Serializable, Cloneable, Comparable<Object>, Name

public class LdapName extends Object implements Name
このクラスは、RFC 2253に指定されている識別名を表します。 識別名(DN)は、相対識別名(RDN)と呼ばれるコンポーネント群の順序付きリストです。 DNの詳細は、RFC 2253に記載されています。

このクラスは、RFC 2253に見られるいくつかのあいまいな点を明らかにします。

  • RFC 2253では、「空白」という語の意味が未定義になっています。 代わりにASCII空白文字0x20 (" ")が使用されています。
  • 空白は、カンマ(,)、セミコロン(;)、等号(=)、プラス記号(+)の左右どちら側にも入力できます。 こうした空白は、このコード内で使用可能ですが、このコードによって生成されることはなく、名前の比較時には無視されます。
  • 等号(=)を含むAttributeValue文字列や、行の先頭以外の位置にあるエスケープされないハッシュ記号(#)も使用可能です。

LdapNameに渡される文字列名やLdapNameから返される文字列名は、完全なUnicode文字セットを使用します。 これらの文字列名には、「\\B4」のような各オクテットが3文字のサブ文字列で表される、UTF-8にエンコードされる文字を含めることができます。 一方、文字列内で各オクテットが単一の文字で表される、UTF-8にエンコードされる文字を含めることはできません。この記述は、意味がややあいまいです。

LdapNameは、有効な名前をすべて適切に解析する一方で、無効な名前の解析時には、違反の可能性を完全には検出しません。 つまり、無効な名前に対して「寛大」です。 名前の有効性は、最終的にLDAPサーバーに渡された時点で判定されます。LDAPサーバーは、スキーマ情報や相互運用の要件などの各種要因に基づいて、渡された名前を受け付けるか拒否します。

同等性、属性の型、バイナリ値および文字列値のテスト時に、名前を構成するアルファベットの大文字と小文字は区別されません。 引用、エスケープ、UTF-8の16進エンコーディングが同じであれば、文字列値そのものが異なっていても、同一の文字列と見なされます。 複数の値を持つRDN (「ou=Sales+cn=Bob」など)内のコンポーネントの順序は重要ではありません。

LDAP名のコンポーネント(RDN)には番号が付けられています。 n個のRDNからなるLDAP名のインデックスの範囲は0からn-1です。 この範囲は、[0,n]と表されます。 一番右のRDNはインデックス0、一番左のRDNはインデックスn-1です。 たとえば、「CN=Steve Kille, O=Isode Limited, C=GB」という識別名には、{C=GB, O=Isode Limited, CN=Steve Kille}の順に、0、1、2という番号が付けられます。 空のLDAP名は、空のRDNリストで表されます。

LdapNameのインスタンスに対する読取り専用の同時マルチスレッド・アクセスは、必ずしも同期させなくてもかまいません。

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

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

    コンストラクタ
    コンストラクタ
    説明
    LdapName​(String name)
    識別名を指定してLDAP名を作成します。
    LdapName​(List<Rdn> rdns)
    解析済みRDNコンポーネントを指定してLDAP名を作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    add​(int posn, String comp)
    単一のコンポーネントを、このLDAP名の指定の位置に追加します。
    add​(int posn, Rdn comp)
    単一のRDNを、このLDAP名の指定の位置に追加します。
    add​(String comp)
    単一のコンポーネントをこのLDAP名の最後に追加します。
    add​(Rdn comp)
    単一のRDNをこのLDAP名の最後に追加します。
    addAll​(int posn, List<Rdn> suffixRdns)
    名前のRDNを、この名前の指定の位置に順に追加します。
    addAll​(int posn, Name suffix)
    名前のコンポーネントを、この名前の指定した位置に順に追加します。
    addAll​(List<Rdn> suffixRdns)
    名前のRDNを、この名前の末尾に順に追加します。
    addAll​(Name suffix)
    名前のコンポーネントを、この名前の末尾に順に追加します。
    この名前のコピーを生成します。
    int
    compareTo​(Object obj)
    LdapNameと、指定されたObjectの順序を比較します。
    boolean
    endsWith​(List<Rdn> rdns)
    指定のRDNシーケンスがこのLDAP名の接尾辞になるかどうかを判定します。
    boolean
    endsWith​(Name n)
    このLDAP名が指定のLDAP名の接尾辞で終わるかどうかが判定されます。
    boolean
    equals​(Object obj)
    2つのLDAP名が等しいかどうかを判定します。
    get​(int posn)
    このLDAP名のコンポーネントを文字列として取得します。
    この名前のコンポーネントを、文字列の列挙として取得します。
    getPrefix​(int posn)
    コンポーネントがこのLDAP名のコンポーネントの接頭辞で構成される名前を作成します。
    getRdn​(int posn)
    このLDAP名のRDNをRdnとして取得します。
    相対識別名のリストを取得します。
    getSuffix​(int posn)
    コンポーネントがこのLDAP名のコンポーネントの接尾辞を構成する名前を作成します。
    int
    このLDAP名のハッシュ・コードを計算します。
    boolean
    このLDAP名が空かどうかを判定します。
    remove​(int posn)
    このLDAP名からコンポーネントを削除します。
    int
    このLDAP名のコンポーネント数を取得します。
    boolean
    startsWith​(List<Rdn> rdns)
    指定のRDNシーケンスがこのLDAP名の接頭辞になるかどうかを判定します。
    boolean
    このLDAP名が指定のLDAP名の接頭辞で始まるかどうかが判定されます。
    このLDAP名の文字列表現を、RFC 2253で定義され、クラスの説明に記載されている形式で返します。

    クラス java.lang.Objectで宣言されたメソッド

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • LdapName

      public LdapName(String name) throws InvalidNameException
      識別名を指定してLDAP名を作成します。
      パラメータ:
      name - RFC 2253で定義された規則に従った書式のnull以外の識別名。
      例外:
      InvalidNameException - 構文違反が検出された場合。
      関連項目:
      Rdn.escapeValue(Object value)
    • LdapName

      public LdapName(List<Rdn> rdns)
      解析済みRDNコンポーネントを指定してLDAP名を作成します。

      リスト内のRDNのインデックスは、クラスの説明に記述されたRDNの番号付けに従って付けられます。

      パラメータ:
      rdns - このLDAP名を構成するRdnのnull以外のリスト。
  • メソッドの詳細

    • size

      public int size()
      このLDAP名のコンポーネント数を取得します。
      定義:
      size、インタフェース: Name
      戻り値:
      このLDAP名のコンポーネント数。0以上。
    • isEmpty

      public boolean isEmpty()
      このLDAP名が空かどうかを判定します。 空の名前は、コンポーネントがゼロの名前です。
      定義:
      isEmpty、インタフェース: Name
      戻り値:
      このLDAP名が空の場合はtrue、そうでない場合はfalse。
    • getAll

      public Enumeration<String> getAll()
      この名前のコンポーネントを、文字列の列挙として取得します。 この名前に更新することによる列挙への影響については、定義されていません。 名前のコンポーネントがゼロの場合は、空の(null以外の)列挙が返されます。 この列挙に含まれるコンポーネントは、クラスの説明に記述されているとおり、それぞれに付けられた番号順になっています。
      定義:
      getAll、インタフェース: Name
      戻り値:
      このLDAP名のコンポーネントのnull以外の列挙。 列挙された各要素のクラスはString。
    • get

      public String get(int posn)
      このLDAP名のコンポーネントを文字列として取得します。
      定義:
      get、インタフェース: Name
      パラメータ:
      posn - 取得するコンポーネントの0から始まるインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      インデックス位置のnull以外のコンポーネント。
      例外:
      IndexOutOfBoundsException - posnが指定された範囲にない場合。
    • getRdn

      public Rdn getRdn(int posn)
      このLDAP名のRDNをRdnとして取得します。
      パラメータ:
      posn - 取得するRDNの0から始まるインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      インデックス位置のnull以外のRDN。
      例外:
      IndexOutOfBoundsException - posnが指定された範囲にない場合。
    • getPrefix

      public Name getPrefix(int posn)
      コンポーネントがこのLDAP名のコンポーネントの接頭辞で構成される名前を作成します。 その後この名前を変更しても、返される名前には影響しません。また逆の場合も同じです。
      定義:
      getPrefix、インタフェース: Name
      パラメータ:
      posn - 停止する位置を示す、コンポーネントの0から始まるインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      範囲[0、posn]のインデックスのコンポーネントからなるLdapNameのインスタンス。 位置がゼロの場合は、空のLDAP名が返される。
      例外:
      IndexOutOfBoundsException - posnが指定された範囲にない場合。
    • getSuffix

      public Name getSuffix(int posn)
      コンポーネントがこのLDAP名のコンポーネントの接尾辞を構成する名前を作成します。 その後この名前を変更しても、返される名前には影響しません。また逆の場合も同じです。
      定義:
      getSuffix、インタフェース: Name
      パラメータ:
      posn - 開始する位置を示す、コンポーネントの0から始まるインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      範囲が[posn,size()]のインデックスのコンポーネントで構成されるLdapNameのインスタンス。 位置がsize()に等しい場合は、空のLDAP名が返される。
      例外:
      IndexOutOfBoundsException - posnが指定された範囲にない場合。
    • startsWith

      public boolean startsWith(Name n)
      このLDAP名が指定のLDAP名の接頭辞で始まるかどうかが判定されます。 nという名前は、getPrefix(n.size())と等しい場合に接頭辞になります。つまり、このLDAP名は「n」で開始されます。 nがnullである場合や、クラスの説明にあるように、RFC 2253に指定された書式でない場合は、falseが返されます。
      定義:
      startsWith、インタフェース: Name
      パラメータ:
      n - チェックするLDAP名。
      戻り値:
      nがこのLDAP名の接頭辞である場合はtrue、そうでない場合はfalse。
      関連項目:
      getPrefix(int posn)
    • startsWith

      public boolean startsWith(List<Rdn> rdns)
      指定のRDNシーケンスがこのLDAP名の接頭辞になるかどうかを判定します。 このLdapNameがrdnsと同じ長さであり、範囲[0, rdns.size()]内の位置pでコンポーネントgetRdn(p)がrdns.get(p)に一致する場合、trueが返されます。 それ以外の場合はfalseを返します。 また、rdnsがnullの場合、falseが返されます。
      パラメータ:
      rdns - チェックするRdnのシーケンス。
      戻り値:
      rdnsがこのLDAP名の接頭辞を形成する場合はtrue、そうでない場合はfalse。
    • endsWith

      public boolean endsWith(Name n)
      このLDAP名が指定のLDAP名の接尾辞で終わるかどうかが判定されます。 nという名前は、getSuffix(size()-n.size())と等しい場合に接尾辞になります。つまり、このLDAP名は'n' で終わります。 nがnullである場合や、クラスの説明にあるように、RFC 2253に指定された書式でない場合は、falseが返されます。
      定義:
      endsWith、インタフェース: Name
      パラメータ:
      n - チェックするLDAP名。
      戻り値:
      nがこの名前の接尾辞である場合はtrue、そうでない場合はfalse
      関連項目:
      getSuffix(int posn)
    • endsWith

      public boolean endsWith(List<Rdn> rdns)
      指定のRDNシーケンスがこのLDAP名の接尾辞になるかどうかを判定します。 このLdapNameがrdnsと同じ長さであり、範囲[size() - rdns.size(), size()]内の位置pでコンポーネントgetRdn(p)がrdns.get(p)に一致する場合、trueが返されます。 それ以外の場合はfalseを返します。 また、rdnsがnullの場合、falseが返されます。
      パラメータ:
      rdns - チェックするRdnのシーケンス。
      戻り値:
      rdnsがこのLDAP名の接尾辞である場合はtrue、そうでない場合はfalse。
    • addAll

      public Name addAll(Name suffix) throws InvalidNameException
      名前のコンポーネントを、この名前の末尾に順に追加します。
      定義:
      addAll、インタフェース: Name
      パラメータ:
      suffix - 追加するnull以外のコンポーネント。
      戻り値:
      更新された名前(新しいインスタンスではない)。
      例外:
      InvalidNameException - suffixが有効なLDAP名でない場合、またはコンポーネントの追加がこのLDAP名の構文規則に違反する場合。
    • addAll

      public Name addAll(List<Rdn> suffixRdns)
      名前のRDNを、この名前の末尾に順に追加します。
      パラメータ:
      suffixRdns - 追加するnull以外の接尾辞Rdn
      戻り値:
      更新された名前(新しいインスタンスではない)。
    • addAll

      public Name addAll(int posn, Name suffix) throws InvalidNameException
      名前のコンポーネントを、この名前の指定した位置に順に追加します。 最初の新しいコンポーネントのインデックス位置、またはそれより後ろにLDAP名のコンポーネントがある場合、このコンポーネントは、新しいコンポーネントに対応できるように上に移動します(0から離れる)。
      定義:
      addAll、インタフェース: Name
      パラメータ:
      suffix - 追加するnull以外のコンポーネント。
      posn - 新しいコンポーネントを追加するインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      更新された名前(新しいインスタンスではない)。
      例外:
      InvalidNameException - suffixが有効なLDAP名でない場合、またはコンポーネントの追加がこのLDAP名の構文規則に違反する場合。
      IndexOutOfBoundsException - posnが指定された範囲にない場合。
    • addAll

      public Name addAll(int posn, List<Rdn> suffixRdns)
      名前のRDNを、この名前の指定の位置に順に追加します。 最初の新しいRDNのインデックス位置、またはそれより後ろにLDAP名のRDNがある場合、このRDNは、新しいRDNを取り込めるように上に移動します(インデックス0から離れる)。
      パラメータ:
      suffixRdns - 追加するnull以外の接尾辞Rdn
      posn - 接尾辞RDNが追加されるインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      更新された名前(新しいインスタンスではない)。
      例外:
      IndexOutOfBoundsException - posnが指定された範囲にない場合。
    • add

      public Name add(String comp) throws InvalidNameException
      単一のコンポーネントをこのLDAP名の最後に追加します。
      定義:
      add、インタフェース: Name
      パラメータ:
      comp - 追加するnull以外のコンポーネント。
      戻り値:
      新しいLdapNameではなく、更新されたLdapName。 nullは不可。
      例外:
      InvalidNameException - 名前の最後へのcompの追加が名前の構文に違反する場合。
    • add

      public Name add(Rdn comp)
      単一のRDNをこのLDAP名の最後に追加します。
      パラメータ:
      comp - 追加するnull以外のRDN。
      戻り値:
      新しいLdapNameではなく、更新されたLdapName。 nullは不可。
    • add

      public Name add(int posn, String comp) throws InvalidNameException
      単一のコンポーネントを、このLDAP名の指定の位置に追加します。 新しいコンポーネントのインデックス位置、またはそれより後ろにあるこのLDAP名のコンポーネントは、新しいコンポーネントを取り込むために1つ上に移動(インデックス0から離れる)します。
      定義:
      add、インタフェース: Name
      パラメータ:
      comp - 追加するnull以外のコンポーネント。
      posn - 新しいコンポーネントを追加するインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      新しいLdapNameではなく、更新されたLdapName。 nullは不可。
      例外:
      IndexOutOfBoundsException - posnが指定された範囲にない場合。
      InvalidNameException - 指定された位置へのcompの追加が名前の構文に違反する場合。
    • add

      public Name add(int posn, Rdn comp)
      単一のRDNを、このLDAP名の指定の位置に追加します。 新しいRDNのインデックス位置、またはそれより後ろにあるこのLDAP名のRDNは、新しいRDNを取り込むために1つ上に移動(インデックス0から離れる)します。
      パラメータ:
      comp - 追加するnull以外のRDN。
      posn - 新しいRDNが追加されるインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      新しいLdapNameではなく、更新されたLdapName。 nullは不可。
      例外:
      IndexOutOfBoundsException - posnが指定された範囲にない場合。
    • remove

      public Object remove(int posn) throws InvalidNameException
      このLDAP名からコンポーネントを削除します。 指定した位置にあるこの名前のコンポーネントが削除されます。 この位置より大きいインデックスのコンポーネントは、1つ下(インデックス0の方に)に移動されます。
      定義:
      remove、インタフェース: Name
      パラメータ:
      posn - 削除するコンポーネントのインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      削除されたコンポーネント(String)。
      例外:
      IndexOutOfBoundsException - posnが指定された範囲にない場合。
      InvalidNameException - コンポーネントの削除がこの名前の構文規則に違反する場合。
    • getRdns

      public List<Rdn> getRdns()
      相対識別名のリストを取得します。 リストの内容は変更できません。 返されるリストに含まれるRDNのインデックスは、クラスの説明にあるように、RDNの番号付けに従っています。 名前に含まれるコンポーネント数がゼロの場合、空のリストが返されます。
      戻り値:
      RdnクラスのインスタンスであるRDNのリストで表される名前。
    • clone

      public Object clone()
      この名前のコピーを生成します。 この名前のコンポーネントを後で変更しても、新しいコピーには影響しません。また逆の場合も同じです。
      定義:
      clone、インタフェース: Name
      オーバーライド:
      clone、クラス: Object
      戻り値:
      このLDAP名のコピー。
      関連項目:
      Cloneable
    • toString

      public String toString()
      このLDAP名の文字列表現を、RFC 2253で定義され、クラスの説明に記載されている形式で返します。 名前に含まれるコンポーネント数がゼロの場合、空の文字列が返されます。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      LdapNameの文字列表現。
    • equals

      public boolean equals(Object obj)
      2つのLDAP名が等しいかどうかを判定します。 objがnullであるか、LDAP名でない場合は、falseが返されます。

      一方のLDAP名のRDNがもう一方のLDAP名の対応するRDNと等しければ、2つのLDAP名は等しいことになります。 これは、両方が同じ数のRDNから構成され、対応するそれぞれのRDNのequals()テストがtrueを返すことを意味します。 RDNの同等性の定義については、Rdn.equals(Object obj)を参照してください。

      オーバーライド:
      equals 、クラス:  Object
      パラメータ:
      obj - 比較対象となるnullの可能性があるオブジェクト。
      戻り値:
      objがこのLDAP名と等しい場合はtrue、そうでない場合はfalse。
      関連項目:
      hashCode()
    • compareTo

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

      objがnullであるか、LdapNameのインスタンスでない場合は、ClassCastExceptionがスローされます。

      LDAP名の順序付けは、文字を比較するときの辞書的な規則に従います。LDAP名に含まれるすべてのRDNに適用される拡張機能もあります。 すべてのRDNは指定順に並べられ、辞書的に比較されます。 RDNの比較規則については、Rdn.compareTo(Object obj)を参照してください。

      このLDAP名が辞書的にobjよりも短い場合、負の数が返されます。 このLDAP名が辞書的にobjよりも長い場合、正の数が返されます。

      定義:
      compareTo、インタフェース: Comparable<Object>
      定義:
      compareTo、インタフェース: Name
      パラメータ:
      obj - 比較されるnull以外のLdapNameインスタンス。
      戻り値:
      このNameの値が指定されたobjよりも小さい場合は負の整数、等しい場合は0、大きい場合は正の整数。
      例外:
      ClassCastException - objがLdapNameではない場合。
      関連項目:
      Comparable.compareTo(Object)
    • hashCode

      public int hashCode()
      このLDAP名のハッシュ・コードを計算します。 ハッシュ・コードとは、この名前の個々のRDNのハッシュ・コードの集合です。
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      この名前のハッシュ・コードを表すint。
      関連項目:
      equals(java.lang.Object)