Domaのjarファイルのバージョンが実行時と注釈処理時で同じであることをチェックするようにします

これは次のバージョン(1.2.1を予定)で入れます。本当は1.2.0に盛り込めればよかったんですが、このアイデアを思いついたのがリリースした後でした。

どういったものかというと、注釈処理(apt)で生成したクラスのstatic初期化子でバージョンチェックを行います。、

    static {
        org.seasar.doma.internal.Artifact.validateVersion("1.2.1-SNAPSHOT");
    }

static初期化子に埋め込まれているのは、注釈処理時のバージョン。これをArtifactというクラスで管理しているバージョンと突き合わせて異なっていれば次のようなメッセージをもった例外をスローします。

Caused by: org.seasar.doma.internal.VersionConflictException: [DOMA0003] Domaのjarファイルのバージョンが実行時と注釈処理時で異なっています(実行時=1.2.2-SNAPSHOT, 注釈処理時=1.2.1-SNAPSHOT)。Eclipseを使用している場合、ビルドパス(Build Path)とファクトリパス(Factory Path)を確認し、プロジェクトのクリーンを実行してください。javacを利用している場合、classpathとprocessorpathのオプションを確認してください。

DomaのjarをバージョンアップするときにEclipseのファクトリパスを修正し忘れても、このチェックがあれば修正し忘れに早く気づけるようになります。