Pitaliumの設定周りの実装
概要
Pitaliumの設定を扱うクラスはEnvironmentConfigやTestAppConfig、PersisterConfigがあります。そしてこれらの設定データクラスに対応するJSONファイルを記述することでPitaliumの動作を実行時に変更することができます。
Pitaliumは設定クラスの判別やデータの反映に専用のアノテーションを使用しています。本記事では設定関連のアノテーションの種類と役割、利用方法について解説します。
アノテーション
@PtlConfiguration
@PtlConfigurationは設定データクラスとして使用するクラスに付加するアノテーションです。このアノテーションが付加されているクラスをPtlTestConfigから呼び出すことができます。@PtlConfigurationのプロパティを設定すると設定データとなるJSONファイルの名前をJVMの起動引数で変更する場合の引数名や、JSONファイルのデフォルトのファイル名が変更できます。なお、@PtlConfigurationを付加するクラスはデフォルトコンストラクタが必須、という制限があります。
プロパティ名 | 説明 | デフォルト値 | |
---|---|---|---|
argumentName | JVM起動引数でJSONファイルを変更する場合の引数名。 使用する場合プレフィックスに com.htmlhifive.pitalium. が必要。 | クラス名のlowerCamelCase | |
defaultFileName | JSONファイルのデフォルトのファイル名。 | クラス名のlowerCamelCase + ".json" |
public class SampleConfig {
private String property0;
}
// 使用する場合
SampleConfig config = PtlTestConfig.getInstance().getConfig(SampleConfig.class);
@PtlConfigurationProperty
@PtlConfigurationPropertyは設定データクラスのフィールドに付加するアノテーションです。このアノテーションが付加されたフィールドはJVM起動引数でJSONファイルから読み込んだデータを上書きます。String、int、double、Enum のフィールドにのみ使用できます。上書きが必要ない場合このアノテーションは不要です。
Pitaliumではこのアノテーションは EnvironmentConfig#execMode にのみ付加しています。
プロパティ名 | 説明 | |
---|---|---|
value | JVM起動引数でJSONファイルを変更する場合の引数名。 使用する場合プレフィックスに com.htmlhifive.pitalium. が必要。 |
public class SampleConfig {
// JVM起動引数で上書きが可能なプロパティ
@PtlConfigurationProperty("sampleProp0")
private String property0;
// JVM起動引数から上書きできないプロパティ
private String property1;
}
PtlTestConfig
PtlTestConfigは設定データクラスを管理するシングルトンクラスです。設定データクラスのJSONファイルからの読み込みやJVM起動引数からの上書き、読み込んだデータのキャッシュを担当します。
メソッド
getConfig(Class, String)
getConfigはPtlTestConfigで設定データクラスを呼び出す、またはキャッシュされている設定データクラスを取得するメソッドです。第一引数は取得するデータクラスのクラス型を、第二引数は設定データクラスをキャッシュするためのキーを指定します。
loadConfig(Class, String, String)
loadConfigは設定データクラスをJSONファイルから読み込むメソッドです。第一引数は取得するデータクラスのクラス型を、第二引数は読み込むJSONファイルのファイル名を、第三引数はデフォルトのJSONファイル名を指定します。
fillConfigProperties(Object, Map<String, String>)
fillConfigPropertiesはloadConfigで読み込んだ設定データクラスに対して、@PtlConfigurationPropertyが設定されているフィールドの値をJVM起動引数から上書きするメソッドです。第一引数は読み込んだデータクラスオブジェクトを、第二引数はJVM起動引数の一覧を設定します。
convertFromString(Class, String)
convertFromStringはfillConfigPropertiesでJVM起動引数からフィールド値を上書きする際に呼び出されるメソッドです。StringをString、int、double、Enumに変換します。