データ型変換機能で利用するコンバータ設定は、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クラスをデータ型変換機能で変換するには、環境定義ファイルに以下のように記述します。
