-Javassist
ページモデルオブジェクトがJavaインターフェイスの場合のエンハンス機能は、はじめコードジェネレーションでやろうと思っていたのですが、当面のしのぎにJavassistで実装しました。Antをベースにコードジェネレーションするのもベースのコードは書いてましたが中止しました。ぼちぼち計画中のAptライクなコンパイルフェーズの仕組みで行きたいと思うためです。
public interface IndexPage extends PageModel { @Property String getUserName(); @Property void setErrorMessage(String message); }
今回は上記のようなものをJavassistにて、フィールド・Setter・Getterのフルセットを補完します。もうちょいアーキテクチャを練れれば、マーカーインターフェイスも無しで、型付けの厳しいものができるかも。。。
@PageModel public interface IndexPage { @Property String getUserName(); @Property void setErrorMessage(String message); }
こうなると、最近の定義ではPOJIベースと言っていいみたいなんで、流行的にもOKかな。これは、もうしばらく実現に時間がかかりそうです。一方で、以下は考えませんでした。
public class IndexModel implements PageModel { @Property public String userName; @Property public String errorMessage; }
インターフェイスではフィールドが書けなかった、というだけなんですけどね。