Domaの次バージョン1.24.0で予定している変更点

Play1.2.5とDomaの相性が悪いという話を見つけました。


Domaが生成するコードが持つメソッドとPlayが生成するメソッドがバッティングするとのことです。


Domaで対応することにしました。具体的には、Entityクラス毎にaptによって生成されるコードをほんの少し変えます。
かなり省略していますが、次のコードを見てください。

1.23.0以前
public final class _Emp extends AbstractEntityType<Emp> {
    public final BasicPropertyType<Object, Emp, String, Object> name = ...;
    ...
}
1.24.0以降(予定)
public final class _Emp extends AbstractEntityType<Emp> {
    public final BasicPropertyType<Object, Emp, String, Object> $name = ...;
    ...
}


変更点はpublic finalなフィールドの名前です。変更後はprefixとして$をつけています。


アプリから直接アクセスされることをほとんど意図していないフィールドなので影響を受けるアプリは少ないと思っていますが、念のためこれまでどおりのコードも生成可能にしておきます(オプションで選べるようにします)。
これまでどおりのコードを生成するオプションの設定方法ですが、プロジェクトのプロパティからAnnotation Processingのページを開いて、keyに「entity.field.prefix」、valueに「none」と指定します。画像つけておきます。


Domaを利用している方で、この変更が困るという方がいる場合は、その旨言ってもらえると助かります。興味がある方はSNAPSHOTで実際にお試しください。