[seasar-s2dao-dev:447] Re: DAO-110に対応しました

JUNDU [E-MAIL ADDRESS DELETED]
2007年 8月 20日 (月) 18:51:26 JST


JUNDUです。

Toshihiro Nakamura wrote:
> >  以下思いつきですが、例えばdao.diconにバージョン番号を定義して、クラス
> > ファイル内のバージョン番号と一致しないとエラーになるコンポーネントを追加
> > するとか。
> 
> バージョン番号のチェックはちょっと大変そうかも?
> ちゃんとイメージできていないのですけど。。。

 全然、大変そうじゃないのを考えてました。すっごくチープなやつです。前のメール
のdiconファイルに対して、以下のようなクラスです。

package org.seasar.dao.impl

public class VersionChecker {

    public static final String CURRENT_VERSION = "1.1";

    public void checkDicon(String version) {
        if (!CURRENT_VERSION.equals(version)) {
            log.warn("dao.diconファイルのバージョンが一致しません。dao.diconをカスタマイズしている場合、以前カスタマイズをしたときからdao.diconの記述方法が変わっている可能性があります。S2Daoの公式ドキュメントを参照してください。");
            throw new DaoDiconInvalidException();
        }
    }
}

 すっごくザックリ書くと、こういう恥ずかしいやつを想像してました(^^;; 目的は、
カスタマイズした後に配布したdao.diconに変更があったことを利用者の方に知らせる
ことです。

> Bindingアノテーションをうまく使って早めにエラーを検出できたら
> いいのかなぁと思います。(すでに利用されていますが)
> 
> で、dao.diconに限りコンポーネントの依存関係やBinding必須かどうか
> をドキュメントに明記するようにすれば、
> カスタマイズしている人に役立つのではないでしょうか。

 これはこれで、すごく大事ですね。動かしてる途中でNullPointerExceptionじゃ
原因が分からないでしょうし、カスタマイズするときに整合をとってカスタマイズ
できるためにはドキュメントは大事だと思います。


seasar-s2dao-dev メーリングリストの案内