ユーザ定義のデータ型クラスとは,任意のデータ型を持つデータ型です。DIIでユーザ定義のデータ型クラスを使用する場合,データ数やデータの型は,WSDLの複合型として自由に定義できます。
ここでは,DIIでユーザ定義のデータ型クラスを使用する方法について説明します。
ユーザ定義のデータ型クラスを使用する場合,必要な情報をWSDLの複合型として定義することで,対応するJavaクラスを生成できます。
ユーザ定義のデータ型クラスは,次の図に示す流れで使用します。
図3-33 ユーザ定義のデータ型クラスの使用の流れ(DII)
WSDLとユーザ定義のデータ型クラスのマッピング規則,およびgetter/setterのマッピング規則を示します。
表3-28 WSDLとユーザ定義のデータ型クラスのマッピング規則(DII)
要素 | 属性 | ユーザ定義のデータ型クラス | 備考 | |||
---|---|---|---|---|---|---|
xsd:schema | targetNamespace | パッケージ名 | - | |||
┗ | xsd:complexType | name | クラス名 | - | ||
コンストラクタ | publicである引数なしコンストラクタが定義されます。 | |||||
┣ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ | xsd:element | name | フィールド(プロパティ)名 | - | ||
メソッド(アクセサ)のパラメタ名 | - | |||||
type | フィールド(プロパティ)の型 | 対応する型については,「12.2.6 DII使用時のサポート範囲」を参照してください。 | ||||
メソッド(アクセサ)のパラメタと戻り値の型 | ||||||
┗ | xsd:complexContent | - | 継承 | java.lang.Objectクラス,またはほかのユーザ定義のデータ型クラスを継承して定義されます。 | ||
┗ | xsd:extension | base |
表3-29 getterのマッピング規則(DII)
要素 | 属性 | ユーザ定義のデータ型クラス | 備考 |
---|---|---|---|
xsd:element | neme | メソッド(アクセサ)名 | "get"+先頭を大文字にした名称で出力されます。戻り値がbooleanの場合は,"is"+先頭を大文字にした名称で出力されます。 |
type | 戻り値 | プロパティの値が返されます。 |
表3-30 setterのマッピング規則(DII)
要素 | 属性 | ユーザ定義のデータ型クラス | 備考 |
---|---|---|---|
xsd:element | neme | メソッド(アクセサ)名 | "set"+先頭を大文字にしたプロパティ名で出力されます。 |
type | パラメタ | プロパティと同じ型のパラメタが一つだけ出力されます。 |
WSDLとユーザ定義のデータ型クラスのマッピング例を次に示します。
図3-34 WSDLとユーザ定義のデータ型クラスのマッピング例(DII)
Javaソースファイルおよびクラスファイルの出力先ディレクトリを次に示します。
Javaソースファイルおよびクラスファイルの出力先ディレクトリは,サーバ定義ファイルまたはクライアント定義ファイルの次のプロパティで変更できます。
サーバ定義ファイルについては,「10.2 サーバ定義ファイルの設定」を参照してください。クライアント定義ファイルについては,「10.3 クライアント定義ファイルの設定」を参照してください。
ユーザ定義のデータ型クラスを使用する場合,リフレクションを使用してプロパティの値を取得したり設定したりします。リフレクションで必要なユーザ定義のデータ型クラスのClassオブジェクトは,次の方法で取得します。
表3-31 ユーザ定義のデータ型クラスのClassオブジェクトを取得する方法
項番 | ユーザ定義のデータ型クラスの使用個所 | Classオブジェクトの取得方法 |
---|---|---|
1 | パラメタ | com.cosminexus.cws.xml.rpc.CallインタフェースのgetParameterClassByNameメソッドの引数に,パラメタのローカル名を指定して取得します。 |
2 | 戻り値 | java.lang.ObjectクラスのgetClassメソッドを使用して,戻り値のオブジェクトから取得します。 |
3 | ユーザ定義のデータ型クラスのプロパティ | java.lang.ClassクラスのgetMethodsメソッドを使用して,アクセサのjava.lang.reflect.Methodオブジェクトを取得します。アクセサによって,取得方法が次のように異なります。
|
4 | 配列の要素型 | java.lang.ClassクラスのgetComponentTypeメソッドを使用して,配列クラスから取得します。 |