11.4.3 プロパティとフィーチャの設定
Clientオブジェクトにはプロパティとフィーチャを格納した変更可能なプロパティマップが含まれています。
これ以降,プロパティとフィーチャは区別しないで「プロパティ」と総称します。
- 〈この項の構成〉
(1) プロパティマップの初期化
変更可能なプロパティマップは,Clientオブジェクトの生成時に初期化されます。プロパティマップを初期化する方法について次に説明します。
- 方法1
-
DefaultClientConfigオブジェクトをパラメタに指定して,Clientクラスのcreate(ClientConfig cc)スタティックメソッドを呼び出し,Clientオブジェクトを生成します。この場合,Clientオブジェクトの変更可能なプロパティマップは,DefaultClientConfigオブジェクトが持つプロパティによって初期化※されます。
- 注※
-
DefaultClientConfigオブジェクトにプロパティが含まれれば,その値で初期化されます。DefaultClientConfigオブジェクトに含まれないプロパティは,動作定義ファイルの設定で初期化されます。
- 方法2
-
Clientクラスのcreate()スタティックメソッドでClientオブジェクトを生成します。この場合,Clientオブジェクトの変更可能なプロパティマップは,動作定義ファイルによって初期化されます。
動作定義ファイルの詳細については,「13.1 動作定義ファイル」を参照してください。
(2) 変更可能なプロパティマップの構造
HttpURLConnectionクラスに関連する四つのプロパティは,ClientクラスのgetProperties()メソッドで取得したプロパティマップを変更したり,プロパティそれぞれに対応するsetterメソッドを使用して設定したりできます。
なお,HttpURLConnectionに関連する四つのプロパティ以外は,対応するsetterメソッドがありません。プロパティを設定する場合はClientクラスのgetProperties()メソッドで取得したプロパティマップを変更してください。
変更可能なプロパティマップの構造について次の図に示します。
なお,サポートしているプロパティの一覧については「25.1.1 サポートするプロパティとフィーチャ」を参照してください。
HTTP通信に先立って,JAX-RSエンジンは図中のHttpURLConnectionクラスに関連する四つのプロパティの値をそのままHttpURLConnectioinにコピーします(値の検証はしません)。したがって,値が不正な場合,HTTP通信の実行前または実行中にHttpURLConnectionクラスが例外をスローすることがあります。なお,値がnullの場合はコピーされないで,無視されます。
ClientRequestクラスにも同じ形式の変更可能なプロパティマップがあります。したがって,Clientクラスのhandle()メソッドを使用してHTTP通信を行う場合,ユーザプログラムはClientRequestオブジェクトを介してプロパティを設定することもできます。仕組みを次の図で説明します。
JAX-RSエンジンは,同じプロパティがClientオブジェクトのプロパティマップに存在しない場合だけ,ClientRequestオブジェクトのプロパティマップに含まれるプロパティをClientオブジェクトのプロパティマップにコピーします。