- PR -

Digesterによる設定ファイルの読み込みについて

1
投稿者投稿内容
きよ
常連さん
会議室デビュー日: 2002/03/27
投稿数: 21
投稿日時: 2003-09-05 13:56
こんにちは。

今、下記のような設定ファイルをCommonsコンポーネントのDigesterを利用して、
読み込みたいと思っています。
<data-source>要素に対応するクラスとしてDataSourceConfigクラスを、
<smtp>要素に対応するクラスとしてSmtpConfigクラスを作成しました。
これらのクラスのインスタンスへの参照を
設定ファイルを読み込む(下記のプログラムのload()メソッドを含む)Configクラスで
保持しています。
疑問に思っていることは、プログラム中の(*1)と(*2)の行で、
ConfigオブジェクトのsetDataSourceConfigメソッド、setSmtpConfigメソッドが
呼ばれるようにルールを設定するにはどうしたら良いかということです。
このままで問題ないのでしょうか。
オブジェクトスタックについての理解に自信がありません。
よろしくお願いします。

------------------------------------------------------------------
「設定情報ファイル(途中略)」
<?xml version="1.0" ?>
<config>
<data-source>
・・・ここでデータベース接続に必要な情報を設定・・・
</data-source>
<smtp>
・・・ここでメール送信のために必要な情報を設定・・・
</smtp>
</config>
------------------------------------------------------------------

「設定情報ファイルを読むためのメソッドを含むクラス」
public class Config {

private DataSourceConfig dataSourceConfig;
private SmtpConfig smtpConfig;

public void setDataSourceConfig(DataSourceConfig dataSourceConfig) {
this.dataSourceConfig = dataSourceConfig;
}

public void setSmtpConfig(SmtpConfig smtpConfig) {
this.smtpConfig = smtpConfig;
}
・・・・・・
public void load(File configFile) throws Exception {

Digester digester = new Digester();
digester.push(this);

// data-source要素に対してのプロセッシングルールの定義。
// DataSourceConfigクラスはdata-source要素に対応する。
digester.addObjectCreate("config/data-source", "DataSourceConfig");
(*1)digester.addSetNext("config/data-source", "setDataSourceConfig", "DataSourceConfig");
・・・・・・
Digester#addCallMethod, Digester#addCallParamメソッドなどを
利用して、DataSourceConfigオブジェクトの属性値を設定するルールを定義する。
・・・・・・

// ここでは、smtp要素に対してのプロセッシングルールを定義する。
// SmtpConfigクラスはsmtp要素に対応する。
digester.addObjectCreate("config/smtp", "SmtpConfig");
(*2)digester.addSetNext("config/smtp", "setSmtpConfig", "SmtpConfig");
・・・・・・
Digester#addCallMethod, Digester#addCallParamメソッドなどを
利用して、DataSourceConfigオブジェクトの属性値を設定するルールを定義する。
・・・・・・

digester.parse(configFile);
}
・・・・・・
1

スキルアップ/キャリアアップ(JOB@IT)