Issue 178: @RequiredTxをつけると起動時にNullPointerExceptionが発生する
Status:  Fixed
Owner: ----
Closed:  Jan 2009
Reported by tana...@gmail.com, Jan 19, 2009
lucy-extを使いトランザクションをかけようとして、
メソッドに@RequiredTxをつけると起動時にNullPointerExceptionが発生します。

エラー内容およびlucy-config.xml,web.xmlは以下のURLに記載しています。

http://d.hatena.ne.jp/tan_go238/20090119


宜しくお願いします。

Jan 19, 2009
Project Member #1 shinpei.ohtani@gmail.com
(No comment was entered for this change.)
Status: Accepted
Jan 19, 2009
Project Member #2 shinpei.ohtani@gmail.com
Annotationのコンポジションをする場合に、配列が戻り値のメソッドがあると
上手くいってないので、この点を修正します.
Status: Started
Jan 19, 2009
Project Member #3 shinpei.ohtani@gmail.com
Lucyの問題でしたので、Lucyを修正しました。
r2922で対処しました。

言い忘れていますが、この機能は現状javassistを使っていないと
利用することが出来ません。ご了承ください。
Status: Fixed
Jan 20, 2009
#4 tana...@gmail.com
http://d.hatena.ne.jp/shot6/20090120 から早速ダウンロードして
試してみたのですが、前回と同様のNullPointerExceptionが発生しました。

調べたところ、ConfigBinderFactory#createBehavior()で、最後に
return ConstructorUtil.newInstance(c, args);
でインスタンスを生成して返すところで変数c が null のため発生したようです。


原因はConstructorDescImpl#getSuitableConstructor()の
ClassUtil.isAssignableFromのIF文で、型が一致しないため、
nullを返しているようです。

比較している型を調べたところ、
argsClassはimpl.MethodDescImpl、paramTypeはClassDescで、
@RequiredTxをメソッドにつけているのが原因だと予想して、
@RequiredTxをクラスにつけたところ、正常に動作しました。


私の環境では、

・@RequiredTxをクラスにつけると正常に動作する。
・@RequiredTxをメソッドにつけるとNullPointerExceptionが発生する。


設定などもれている箇所がありましたらお教え頂けませんでしょうか?
javassistはjavassist-3.4.ga.jarを使用しています。
宜しくお願いします。

Jan 20, 2009
#5 tana...@gmail.com
@RequiredTxはクラスに対してつけるのですね。
使い方を間違っていましたのでFixにさせてください。

宜しくお願いします。
Jan 21, 2009
Project Member #6 shinpei.ohtani@gmail.com
了解しました。
コメントありがとうございました。