- 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
- 関連項目:
- 直列化された形式
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 Name
add(int posn, String comp)
単一のコンポーネントを、このLDAP名の指定の位置に追加します。Name
add(int posn, Rdn comp)
単一のRDNを、このLDAP名の指定の位置に追加します。Name
add(String comp)
単一のコンポーネントをこのLDAP名の最後に追加します。Name
add(Rdn comp)
単一のRDNをこのLDAP名の最後に追加します。Name
addAll(int posn, List<Rdn> suffixRdns)
名前のRDNを、この名前の指定の位置に順に追加します。Name
addAll(int posn, Name suffix)
名前のコンポーネントを、この名前の指定した位置に順に追加します。Name
addAll(List<Rdn> suffixRdns)
名前のRDNを、この名前の末尾に順に追加します。Name
addAll(Name suffix)
名前のコンポーネントを、この名前の末尾に順に追加します。Object
clone()
この名前のコピーを生成します。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名が等しいかどうかを判定します。String
get(int posn)
このLDAP名のコンポーネントを文字列として取得します。Enumeration<String>
getAll()
この名前のコンポーネントを、文字列の列挙として取得します。Name
getPrefix(int posn)
コンポーネントがこのLDAP名のコンポーネントの接頭辞で構成される名前を作成します。Rdn
getRdn(int posn)
このLDAP名のRDNをRdnとして取得します。List<Rdn>
getRdns()
相対識別名のリストを取得します。Name
getSuffix(int posn)
コンポーネントがこのLDAP名のコンポーネントの接尾辞を構成する名前を作成します。int
hashCode()
このLDAP名のハッシュ・コードを計算します。boolean
isEmpty()
このLDAP名が空かどうかを判定します。Object
remove(int posn)
このLDAP名からコンポーネントを削除します。int
size()
このLDAP名のコンポーネント数を取得します。boolean
startsWith(List<Rdn> rdns)
指定のRDNシーケンスがこのLDAP名の接頭辞になるかどうかを判定します。boolean
startsWith(Name n)
このLDAP名が指定のLDAP名の接頭辞で始まるかどうかが判定されます。String
toString()
このLDAP名の文字列表現を、RFC 2253で定義され、クラスの説明に記載されている形式で返します。
-
-
-
コンストラクタの詳細
-
LdapName
public LdapName(String name) throws InvalidNameException
識別名を指定してLDAP名を作成します。- パラメータ:
name
- RFC 2253で定義された規則に従った書式のnull以外の識別名。- 例外:
InvalidNameException
- 構文違反が検出された場合。- 関連項目:
Rdn.escapeValue(Object value)
-
-
メソッドの詳細
-
isEmpty
public boolean isEmpty()
このLDAP名が空かどうかを判定します。 空の名前は、コンポーネントがゼロの名前です。
-
getAll
public Enumeration<String> getAll()
この名前のコンポーネントを、文字列の列挙として取得します。 この名前に更新することによる列挙への影響については、定義されていません。 名前のコンポーネントがゼロの場合は、空の(null以外の)列挙が返されます。 この列挙に含まれるコンポーネントは、クラスの説明に記述されているとおり、それぞれに付けられた番号順になっています。
-
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()
この名前のコピーを生成します。 この名前のコンポーネントを後で変更しても、新しいコピーには影響しません。また逆の場合も同じです。
-
toString
public String toString()
このLDAP名の文字列表現を、RFC 2253で定義され、クラスの説明に記載されている形式で返します。 名前に含まれるコンポーネント数がゼロの場合、空の文字列が返されます。
-
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)
-
-