Dolteng大改造

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

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

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

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

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

# というか、こればっかやってたのでブログに書くネタも無かったのですよ><
そこで、現行バージョン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の骨の髄まで詳しい方の太鼓判、もしくは「直せゴルァ」が欲しくて書いてみました。

よろしくお願いします。