[Seasar-user:20767] Re: [Doma-Gen]useDelegateについて

fujita [E-MAIL ADDRESS DELETED]
2011年 5月 20日 (金) 11:13:32 JST


中村(taedium)さん

藤田です。
お世話になっております。

ありがとうございました。
いろいろやってみようと思います。

Domaはなんだか楽しいですね。


よろしくお願いします。

2011年5月19日22:29 Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>:
> 中村(taedium)です。
>
>> 固定で埋め込んで問題ないのですが、条件分岐をテンプレートにいれて
>> 作る・作らないの判定を入れることができればと思ったしだいです。
>
> Doma-Genが提供するAntタスクのGenクラスを
> 継承して新しいタスクを作成すれば、
> 比較的簡単にテンプレートから任意のデータにアクセスできます。
>
> たとえば、今回の例に合わせると、次のようなコードを作成する
> ことになります。
>
> public class MyGen extends Gen {
>    @Override
>    protected void generateDao(DaoDesc daoDesc) {
>        // オリジナルを自前のオブジェクトでラップ
>        super.generateDao(new MyDaoDesc(daoDesc));
>    }
>
>    public class MyDaoDesc extends DaoDesc {
>        private DaoDesc daoDesc;
>        public MyDaoDesc(DaoDesc daoDesc) {
>            this.daoDesc = daoDesc;
>        }
>        // テンプレートからアクセスしたいデータをアクセサで公開
>        public boolean isUseDelegate() {
>            return daoConfig.isUseDelegate();
>        }
>        // 親のDaoDescのメソッドはすべてオーバーライドして
>        // daoDescインスタンスフィールドに委譲する
>        ...
>    }
> }
>
> そして、build.xml の taskdef 要素ではGenクラスの代わりに独自に作成した
> MyGenクラスを登録するようにします。
>
>  <taskdef name="gen"
>   classname="example.MyGen"
>   classpathref="classpath"
>   loaderref="genLoaderref" />
>
> これでDaoのテンプレートから次の記述が有効になります。
>
>  <#if useDelegate></#if>
>
> Genクラスはいろんなところがオーバーライドできるようになっているので
> 好きにカスタマイズできます。お試しください。
>
> --
> Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



-- 
--
fujita<[E-MAIL ADDRESS DELETED]>


Seasar-user メーリングリストの案内