public class Rdn extends Object implements Serializable, Comparable<Object>
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 が出力されます。エスケープされたコンマのエスケープを解除して、元の値「Juicy, Fruit」を出力させるには、
unescapeValue()
メソッドを使用します。コンマの前にエスケープを戻すには、escapeValue()
メソッドを使用します。
このクラスは、RFC 2253 に定義されている RDN の文字列表現により、インスタンス化されます。次のコード例を参照してください。
Rdn rdn = new Rdn("cn=Juicy\\, Fruit"); System.out.println(rdn.toString());最終行により、cn=Juicy\, Fruit が出力されます。
Rdn のインスタンスに対する読み取り専用の並行マルチスレッドアクセスは、必ずしも同期させなくてもかまいません。
ほかで指定がない場合、null 引数をコンストラクタ、またはこのクラスのメソッドへ渡すと、NullPointerException がスローされます。
コンストラクタと説明 |
---|
Rdn(Attributes attrSet)
指定の属性セットから Rdn を作成します。
|
Rdn(Rdn rdn)
特定の rdn から Rdn を構築します。
|
Rdn(String rdnString)
指定の文字列から Rdn を作成します。
|
Rdn(String type, Object value)
指定の属性の型および値から Rdn を作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
int |
compareTo(Object obj)
Rdn と、指定された Object の順序を比較します。
|
boolean |
equals(Object obj)
指定の Object とこの Rdn の同等性を比較します。
|
static String |
escapeValue(Object val)
属性の値を指定し、RFC 2253 に指定されている規則に従ってエスケープされた文字列を返します。
|
String |
getType()
この Rdn の型の 1 つを取得します。
|
Object |
getValue()
この Rdn の値の 1 つを取得します。
|
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
Attributes
を参照してください。
文字列の属性値は、RFC 2253 指定の書式の RDN 文字列とは解釈されません。つまり、これらの値は文字どおり解釈され (解析の対象にならない)、エスケープは解除されているものと見なされます。
attrSet
- 型/値のマッピングを含む null 以外の空でない属性。InvalidNameException
- attrSet の内容を使って有効な RDN を作成できない場合。public Rdn(String rdnString) throws InvalidNameException
LdapName
のクラスの説明を参照してください。rdnString
- RFC 2253 に定義されている書式を持つ、null 以外の空でない文字列。InvalidNameException
- rdnString の構文解析時に構文エラーが発生した場合。public Rdn(Rdn rdn)
rdn
- コピーする null 以外の Rdn。public Rdn(String type, Object value) throws InvalidNameException
type
- null 以外の空でない文字列の属性の型。value
- null 以外の空でない文字列の属性の値。InvalidNameException
- 型/値のペアを使って有効な RDN を作成できない場合。toString()
public Object getValue()
RDN の値が複数存在する場合、このメソッドは、getType()
メソッドによって返される型に対応する値を返します。
public String getType()
RDN の値が複数存在する場合、型/値ペアの順序は特に定義されていません。この場合、このメソッドは、型/値ペアのいずれか 1 つの型を返します。getValue()
メソッドは、このメソッドによって返される型に対応する値を返します。
public int compareTo(Object obj)
obj が null、または Rdn のインスタンスではない場合は、ClassCastException がスローされます。
RDN の属性の型と値のペアが、それぞれ辞書的に比較されます。複数の値を持つ Rdn (「ou=Sales+cn=Bob」など) 内のコンポーネントの順序は重要ではありません。
compareTo
、インタフェース: Comparable<Object>
obj
- 比較対象となる null 以外のオブジェクト。ClassCastException
- obj が null であるか、Rdn ではない場合。
public boolean equals(Object obj)
型の値の同等性のマッチングは次のように行われます。
obj が null である場合、または 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」になります。
文字列値は、String と、バイト配列で表されるバイナリ値として表現されます。
val
- エスケープする null 以外のオブジェクト。ClassCastException
- val が String でもバイト配列でもない場合。public static Object unescapeValue(String val)
正当な値と不当な値は、RFC 2253 に定義されています。このメソッドは、値を受け付けることに対して寛大で、不当な値をすべて検出しません。このため、不当な値を渡しても、必ずしも IllegalArgumentException はトリガーされません。
val
- エスケープ解除する null 以外の文字列。IllegalArgumentException
- 不当な値が渡された場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.