ServiceCreator
Seasar 2.4リリース! 今更でも恥ずかしくない、始めてみようDIプログラミング SMART deploy 編のサンプルの場合の完成イメージ図。
SeasarからNamingConventionImpl,ServiceCreator,ComponentCreatorImplあたりを引っ張ってきて、
テキトーにコンパイルエラーになる部分のコードを消していったら、なんとなくできた。
問題はルートパッケージの扱い。
Kijimunaはdiconファイル1つに対してハンドラ(DocumentHandler)のインスタンスを1つ対応させて解析している模様。
現状のままだとcreator.diconの解析中にconvention.diconのルートパッケージはわからないので、
何が登録されているコンポーネントか判断できない(includeされているdiconファイルは別ハンドラで解析している)。
ComponentAutoRegisterだと1つのdiconファイルに全部情報があるからいいんだけど。
常にconvention.diconが最初に解析されるならDocumentHandlerのstaticフィールドにルートパッケージを持たせるとか
あるが、そうじゃないだろうしな。
うーむ、(変更があろうが無かろうが)常にconvention.diconを最初に解析するようにすればいいのかな。
ちょっと考えます。
追記:
っていうか、ServiceCreatorで登録されるコンポーネント(上記の例だとprintServiceとmessageService)って、
ルートコンテナ(app.dicon)に登録されるのか。じゃあcreator.diconじゃなくてapp.diconを表示したときの
アウトラインページにprintServiceとmessageServiceが無いとだめジャン。とほほ。