[seasar-dotnet:1305] CONTAINERNET-122 ログ出力の名前空間による原因での例外

橋本 昇 [E-MAIL ADDRESS DELETED]
2009年 5月 16日 (土) 19:18:18 JST


ML購読者の皆様、コミッタの皆様、始めまして。
橋本と申します。

久保さんのブログで始まったQuillの不具合?と要望ですが、JIRAに登録していただいたので、MLの方で改めてお話をさせていただきます。

表面上、発生する現象としてはQuillのログが正しく出力されません。
メッセージリソースを読みにいく過程で例外が内部で発生しているようです。
但し、例外自体は内部でキャッチされているので、プログラムはそのまま実行されます。
メニューの[デバッグ-例外]で例外がスローされるときに中断するように指定していただければ、すぐに確認できると思います。

私が現象を確認している環境は下記の通りです。
バージョン:1.3.15
開発環境:VisualStudio2008 Express(C#)、VisualStudio2008 Professional

原因を調査してみました。

Seasar.Framework.Log.Loggerはネームスペースが指定されているリソースはサポートしていないことが原因です。
Seasar、Seasar.Daoなどはプロジェクトの規定の名前空間は無指定ですので問題ありません。
名前空間を無指定にするためには直接Seasar.Quill.csprojを編集しなければなりません。
<RootNamespace>の1行を削除するだけでOKです。
これでLoggerの問題は解決です。

しかし、次なる問題が発生します。
Seasar.Quill.Util.MessageUtilはリソースの名前空間として"Seasar.Quill"を期待しています。
※DataSourceSelectInterceptorの中などではこちらを利用しています。

結局、この問題を修正するにはプロジェクトの規定の名前空間を指定するのか?指定しないのか?という所に行きつきます。

私個人的には修正の際の影響度を考えて名前空間を無指定にするのが良いかと思います。

修正方法としては、幸いにしてMessageUtilの内容はMessageFormatterとほぼ同等なので、内部で委譲するようにリファクタリングすればよいかと思います。

または、そもそもMessageUtilを利用している箇所が少ない事を考えるとMessageUtilを破棄し、全てMessageFormatterを利用するように修正する方法もありかと思います。

上述以外のリソース関連としてはQuillアイコンがあると思います。
この辺りは詳しく調査していないので、対応よろしくお願いします。



seasar-dotnet メーリングリストの案内