都元ダイスケ IT-PRESS このページをアンテナに追加 RSSフィード Twitter

最近は会社ブログしか書いてません。

2008-01-30

[]Dolteng大改造

以前も書いたのですが、Doltengのプロジェクト生成部分(org.seasar.dolteng.projects)のプロジェクトをブランチ切って、大改造を試みています。

従来は、SuperAgileやTeeda Onlyなど、特定のプロダクトを組み合わせたプロジェクトしか生成できませんでしたが、もう少し柔軟に色々なプロジェクトが生成できる様、レイヤ毎にサポートフレームワークを選択できるようにしてみました。

但し、ブランチでの大規模作業なので、まだ本流にマージされるかは定かではありません。こんなん、だめじゃー と一喝もらって終了の可能性もorz

まぁ一応、現在開発中のスクリーンショットはこちら。

f:id:daisuke-m:20080131022615g:image

で、そんな訳で、おおかたの作業は終わり、あとはチェックの段階になりました。

# というか、こればっかやってたのでブログに書くネタも無かったのですよ><

そこで、現行バージョンDolteng(v0.25.0)で生成したプロジェクトと、ブランチバージョンで生成したプロジェクトを比較し、違いを洗い出しました。

本来であれば、寸分違わず一致させれば良いのですが、新しいアーキテクチャではその「一致させる作業」が特例になってしまうのです。

  • プロジェクトタイプ「A Only」の時はa構成
  • プロジェクトタイプ「B Only」の時はb構成
  • プロジェクトタイプ「C Only」の時はc構成
  • プロジェクトタイプ「A+B」の時はa構成+b構成

分かりづらいですが、こんな考え方でプロジェクト生成をしています。そこで、従来と完全に一致させる為には、

  • プロジェクトタイプ「A+C」の時はa構成+c構成

という、プラスαの作業が必要になってしまう事があり、α部分を現在解決せずに放置してあります。


さて、そこで、このα部分をまとめてみました。(つまり、従来とどう違うプロジェクトが吐かれるのか。)

全般的に

customizer.diconのコメント(コメントアウト含む)が削除されている。

これは、何とかしたいな、と思っています。従来は既に組み上がったcustomizer.diconをコピーしていたので、コメントやら空行やら自由自在だったのですが、新アーキテクチャでは、設定に従ってDolteng内でcustomizer.diconを組み上げているので、こんな事に…。

各customizerコンポーネント毎に、プロジェクトタイプ間で共通のコメントがあれば、それを挿入するようにしたいのですが…。

不勉強で、説明文が書けません><

# あ、でも、この大改造が成功すれば、dicon内コメントのi18nは楽になりますねん。

Teeda Onlyプロジェクトを生成した時。

customizer.diconのactionCustomizerコンポーネントに、"j2ee.requiredTx"のAspectCustomizerが追加される。

これに関しては、id:taichitaichiさんから「もし、TeedaOnlyの時に、出現しないのであれば、それはヌケです。」という確認を頂いています。

S2JMS + Kuina-Daoプロジェクトを生成した時。

customizer.diconに、serviceCustomizer, logicCustomizer, helperCustomizer が追加される。それぞれ、traceCustomizerのみがaddCustomizerされている。

これら3つのコンポーネントは、Kuina-Dao Onlyの時には存在するものです。S2JMSと併用すると問題が出るとは考えにくかった為、そのままにしてあります。

S2Flex2 + S2Daoプロジェクトを生成した時。

app.diconで、daoとdxoのinclude順が逆(従来はdxo→daoの順、ブランチバージョンではdao→dxoの順)になっている。

他のapp.diconを見る限り、このプロジェクトタイプ以外は全てdao→dxoの順にincludeされている為、問題ないのではないか、と思っています。

remotingServiceCustomizerコンポーネント定義ののコメントアウトが外れている。

serviceCustomizerに対するserviceCustomizerのAcpectのコメントアウトが外れている。

前述の様に、customizer.dicon内のコメントは全て削除されてしまっているのですが、S2Flex2のプロジェクトに関しては、コメントアウトされた部分は「出力しない」よりも「コメントアウトなしで出力する」方が望ましいんじゃないかな、と考え、こういう結果になっています。

どうしてもコメントアウトされている状態でなければなりませんか…?

logicCustomizer, helperCustomizer が追加される。それぞれ、traceCustomizerのみがaddCustomizerされている。

先ほどと同様、従来無かったコンポーネント定義が追加されています。これらのコンポーネントは、S2Dao Onlyの時には存在するもので、S2Flex2と併用すると問題が出るとは考えにくかった為、そのままにしてあります。

S2Dao Onlyプロジェクトを生成した時。

pageCustomizerとactionCustomizerの両コンポーネントが削除される。

これらのコンポーネントは、Teedaに必要な物である為、S2Dao Onlyでは出力が要らないと考えています。

Easy Enterprise (Teeda + S2JMS)プロジェクトを生成した時。

daoCustomizer がのコメントアウトが外れている。その結果、traceCustomizerのみがaddCustomizerされている。

これは、Teeda Onlyの時には存在する為です。今思ったんですが、Teeda Onlyの時はdaoCustomizerって要らなかったりします?

Easy Enterprise (Teeda + kuina-Dao + S2JMS)プロジェクトを生成した時。

app.diconにjavaee5.diconが追加される。

これはMLで確認を取りましたので、大丈夫でしょう。→ [seasar-dev:754]

--------

以上、これらの様な違いが出てしまいましたが、問題のありそうな点はありますでしょうかー? S2の骨の髄まで詳しい方の太鼓判、もしくは「直せゴルァ」が欲しくて書いてみました。

よろしくお願いします。

koichikkoichik 2008/02/02 03:00 軽く動かしてみました.いいですねぇ.
以下,要望です.

1.S2JMS (Inbound) を使う場合は Presentation を選択できない方がいい.
っていうか,一番上位でアプリケーションのタイプとして (Web アプリ,JMS (Inbound) アプリ,将来は RMI (Server) アプリも) を選べるといいかも.んで,Web アプリ以外の場合は Presentation は選べない.そうすると,Communication は選択リストよりチェックボックスがいいかも (複数選択可能な選択リストでもいいけど).JMS (Outbound) と RMI (Client) を同時に指定するとかできてもいいので.

2.Kuina-Dao を Kuina-Dao (Hibernate) にして,Kuina-Dao (TopLink) を追加したい.将来的には Kuina-Dao (OpenJPA) とか Kuina-Dao (Cayenne) とか増殖するかも?(^^;

plugin.xml の修正はお手伝いするのでよろしくです♪

P.S.
転職おめでとうございます!!\(^o^)/

daisuke-mdaisuke-m 2008/02/03 21:53 コメントありがとうございまーす。
いいですねぇと言って頂けてよかったーー。勝手にゴリゴリやってたので冷や冷やです。
アプリケーションタイプの選択、やってみたいと思います。
あとはCommunicationの複数選択ですね。チェックボックスでも複数選択リストでも、なんとなくレイアウトに統一感が出しにくいなぁ、という事で、ドロップダウンリストにしてあるんですが、どうすればいいかなぁ、と思っています。

さらに、複数選択にする場合は、JMSに関してInboundとOutboundを分離してみようかとも思ったのですが、どれが共通で必要で、どれがIn用、どれがOut用という区別がつかなかったので、放置してみましたw

Kuina-Dao → Kuina-Dao (Hibernate) + Kuina-Dao(Toplink) 化については。
HibernateとToplinkの共通部分をKuina Baseとして切り出して、HibernateとToplinkが、それぞれKuina Baseを継承すれば大丈夫かな、と考えています。

plugin.xmlの仕様はちょっと変わってしまっていますが、もしよろしければブランチにもコミット入れてみちゃってください。

daisuke-mdaisuke-m 2008/02/03 21:54 あ、転職祝福も、ありがとうございまーす^^

koichikkoichik 2008/02/04 04:30 > アプリケーションタイプの選択、やってみたいと思います。

よろしくです〜.

> JMSに関してInboundとOutboundを分離

Inbound はアプリケーションタイプで選ぶだけで,Communication の方では選べなくていいです.Inbound って,Web アプリにはならないので.

> どれが共通で必要で、どれがIn用、どれがOut用という区別がつかなかった

-inbound.dicon が Inbound 用,-outbound.dicon が Outbound 用,残りは共用ですね.
現行の場合,S2JMS Only は Inbound+Outbound で,Inbound 専用はないんですよね.でも新しい UI だとそれも選べていいかも.

> ブランチにもコミット

了解です.

daisuke-mdaisuke-m 2008/02/04 18:44 さて、何となくやってみました。
現在のところ、アプリケーションタイプは「Web Application」と「Client Application」に分けてあります。plugin.xmlから拡張できるようになっています。後々、maven構成と通常構成の選択もここでやるようになるかな、なんて予感もしています。

今はまだ、Clientにした時はPresentationとServerManagementがdisableになるだけですが、後々、facet(以前までprojectTypeと呼んでいたもの)ごとに選択可否が設定できるようになるべきですね。S2JMSをInboundとOutboundに分けた時に、Web ApplicationではInboundを無効にする、とか。

In用リソース、Out用リソースの違いって、単純にinbound.dicon, outbound.diconだけでは無くないでしょうか。
つまり、「s2jmsIn」「s2jmsOut」が「s2jms base」を継承する、という形にして、baseに共通リソースを、in/outに独自リソースを設定しようとしています。が、in/outに設定しなければいけないものはdiconだけでは無い気がします。

もしかしたら、これらのdiconファイルも、DiconHandlerで組み上げないといけないかなー、なんて予感もしています。

また、見よう見まねで Kuina-Dao (TopLink) を作ってみましたが…。まだ不完全な予感…。チェックをお願いします m(_ _)m

ところで、ここで会議するのもアレかなぁ、なんて思い始めました。seasar-devあたりに引っ越しましょうか?

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。

トラックバック - http://d.hatena.ne.jp/daisuke-m/20080130/1201713373

Connection: close