データ型変換機能で利用するコンバータ設定は、conversion要素で定義します。
データ型変換機能についての詳細は、「3.6 データ型変換機能」を参照してください。
記述形式
<acfConfig> ... <conversion> <!-- コンバータの定義 (複数回参照のための) --> <defConverter> <converterId>コンバータ・インスタンスの参照名</converterId> <[converter]>コンバータのインスタンス</[converter]> </defConverter> <defConverter>...</defConverter> <!-- コンバータ選択ルール --> <conversionRule> <type>データBeanの型名</type> <converterId>コンバータ・インスタンスの参照名</converterId> </conversionRule> <conversionRule>...</conversionRule> </conversion> ... </acfConfig>
要素の内容
要素名 | 説明 | 子要素(注) |
---|---|---|
conversion | トップレベルの要素 | (defConverter)* |
defConverter | コンバータのインスタンスに名前を付けます。 | converterId |
conversionRule | コンバータ選択のルールを1つ追加します。 | type |
type | Javaの型名(データBeanまたはJavaBeansの型名)を表します。 | Java型名を表す文字列 |
[converter] (各コンバータ名の先頭を小文字にしたもの) | コンバータの定義を表します。 | (concreteType)? |
converterId | コンバータの参照を表します。 | コンバータのインスタンスの名前を表す文字列 |
concreteType | コンバータが生成する具象型名を表します。 | Java型名を表す文字列 |
child | propertyに対応する子オブジェクト用の情報を指定します。 | property |
property | プロパティ名を表します。 | プロパティ名を表す文字列 |
注) 子要素の表記について、以下に説明します。
・A B: AのあとにBを記述します。
・(A|B): AまたはBのどちらかを記述します。
・(A)*: Aを1回以上繰り返して記述するか、全く記述しません。
・(A)?: Aを1回記述するか、全く記述しません。
コンバータ固有の設定項目
コンバータ固有の設定項目には、concreteTypeとchildの2種類があります。
以下の表に、各コンバータに子要素として設定可能な項目を示します。
コンバータ名 | concreteType | child | ||
---|---|---|---|---|
設定 | 省略値 | 設定 | 省略値 | |
BooleanConverter | △ | boolean, Boolean | × | - |
ByteConverter | △ | byte, Byte | × | - |
ShortConverter | △ | short, Short | × | - |
IntegerConverter | △ | int, Integer | × | - |
LongConverter | △ | long, Long | × | - |
FloatConverter | △ | float, Float | × | - |
DoubleConverter | △ | double, Double | × | - |
CharacterConverter | △ | char, Character | × | - |
StringConverter | △ | String | × | - |
DateConverter | △ | java.util.Date | × | - |
BigIntegerConverter | △ | java.math.BigInteger | × | - |
BigDecimalConverter | △ | java.math.Decimal | × | - |
ArrayConverter | ○ | ユーザー指定の配列型 | ○ | property要素とtype要素の設定が必須。 |
CollectionConverter | △ | java.util.ArrayList | ○ | property要素とtype要素の設定が必須。 |
MapConverter | △ | java.util.HashMap | ○ | property要素とtype要素の設定が必須。 |
BeanConverter | ○ | ユーザー指定のJavaBeanクラス | △ | 各プロパティの型と対応するコンバータ |
○: 必須、△: 任意、×: 不可
注) 要素名は、コンバータ名の先頭を小文字にしたものです。
以下の表に、child要素を必要とするコンバータのchild要素の数、およびchild要素のpropertyに指定する値を示します。
コンバータ名 | childの数 | childのpropertyの値 |
---|---|---|
ArrayConverter | 1 | "component" |
CollectionConverter | 1 | "element" |
MapConverter | 1 | "value" |
BeanConverter | 0~n(注) | JavaBeanに定義されているプロパティ名 |
注) nは、JavaBeanに定義されているプロパティの数です。
以下に、配列の要素がint型の、ArrayConverterの記述例を示します。
<conversionRule> <type>int[]</type> <arrayConverter> <concreteType>int[]</concreteType> <child> <property>component</property> <type>int</type> </child> </arrayConverter> </conversionRule>
記述例
Java型情報の例
以下の例では、publicなどの修飾詞やsetter/getterを省略しています。
また、Java 5のgenericの記法を利用していますが、Java 1.4でも、設定の記述方法やコンバータの動作は変わりません。
package user.package; // RPC 公開サービス class ProjectBuilder { // 設定が不要な例 int getNumberOfProjects(); // 引数にコレクションが現れる例 Project build(Person leader, Collection<Person> persons); // 戻り値にコレクションが現れる例 Collection<Project> getProjects(); } // 単純な JavaBean class Person { String name; Date birthday; } // 複雑な JavaBean class Project { String name; Person leader; List<Person> persons; Map<String, Integer> nameToId; Map<String, Collection<Person>> nameToRelatedPersons; }
コンバータ設定の例
上記の例のようなJavaクラスをデータ型変換機能で変換するには、環境定義ファイルに以下のように記述します。