クラスControlFactory
-
コンストラクタの詳細
-
ControlFactory
protected ControlFactory()コントロール・ファクトリの新しいインスタンスを作成します。
-
-
メソッドの詳細
-
getControlInstance
public abstract Control getControlInstance(Control ctl) throws NamingException コントロール・ファクトリを使用するコントロールを作成します。このファクトリは、サービス・プロバイダが、LDAPプロトコルから読み取るコントロールを特殊なコントロール・クラスとして返すときに使用します。 このメカニズムを使用しなければ、プロバイダはBERエンコード形式のデータだけを含むコントロールを返します。
通常、
ctlは、BERエンコードされたデータを含む"基本"コントロールです。 ファクトリは、特殊なコントロールを実装するのに使用されますが、通常は、BERエンコード・データをデコードして、型保証された安全な方法で該当データにアクセスするメソッドを提供します。たとえば、ファクトリは基本的なコントロールのBERエンコード・データを使用してVirtualListReplyControlのインスタンスを返す場合があります。
このファクトリが指定引数を使ってコントロールを作成できない場合、nullを返します。 例外がスローされるのは、このコントロール・ファクトリだけが使用され、ほかのコントロール・ファクトリが使用されないときだけです。 これは、たとえば、コントロールのBERデータが、指定されたOIDを持つとみなされているコントロールと一致しない場合に、発生するかもしれません。 このメソッドは
NamingExceptionをスローするため、伝播する必要のある内部で生成された他の例外は、NamingException内でラップする必要があります。- パラメータ:
ctl- null以外のコントロール。- 戻り値:
- nullの可能性のあるコントロール。
- スロー:
NamingException-ctlに、コントロールの作成に使用できない無効なデータが含まれている場合。 OIDによって識別されるコントロールを生成できる場合、ファクトリは例外だけをスローするが、無効なBERデータなどがあればスローできない。
-
getControlInstance
public static Control getControlInstance(Control ctl, Context ctx, Hashtable<?, ?> env) throws NamingException既知のコントロール・ファクトリを使用してコントロールを作成します。コントロールを作成するには、次の規則が使用されます。
- 環境の
LdapContext.CONTROL_FACTORIESプロパティに指定されている制御ファクトリと、ctxに関連付けられたプロバイダ・リソース・ファイルの制御ファクトリをこの順序で使用します。 このプロパティの値は、コロンで区切られたファクトリ・クラス名のリストである。ファクトリ・クラスは、リストに指定された順番に使用される。コントロールの作成に最初に成功したファクトリが実際に使用される。 どのファクトリもロードできない場合は、ctlを返す。 コントロール作成中に、例外が発生したら、例外は呼出し側に引き渡される。
コントロール・ファクトリはpublicですが、また引数を取らないpublicコンストラクタを持つ必要があります。 ファクトリが名前付きモジュール内にある場合は、そのモジュールによって
java.namingモジュールにエクスポートされるパッケージ内に存在する必要があります。- パラメータ:
ctl- OIDおよびBERデータを含むnull以外のコントロール・オブジェクト。ctx- コントロールが作成されるnullの可能性があるコンテキスト。 nullの場合は、この情報は利用できない。env- nullの可能性のあるコンテキスト環境。 これは、LdapContext.CONTROL_FACTORIESプロパティの値を検索するために使用されます。- 戻り値:
ctlを使って生成されたコントロール・オブジェクト、または上記のアルゴリズムを使ってコントロール・オブジェクトを生成できない場合はctl。- スロー:
NamingException- ネーミング例外が、コントロール・オブジェクトを作成しようとするときに発生した場合。 アクセスされたファクトリの1つが例外をスローすると、その例外は呼出し側に送られる。 ファクトリおよびオブジェクト・クラスのロードおよびインスタンス化中にエラーが発生した場合、例外はNamingException内にラップされてから再スローされます。
- 環境の
-