[Seasar-user:1005] S2DAOで、戻り値を配列ビーンで返すケースにも対応してほしい。
Taro Kato
kato
2004年 9月 14日 (火) 19:32:08 JST
比嘉さん、こんにちわ。グルージェント加藤です。
S2DAOで、Listだけでなく、BeanClass[] を返す selectメソッドの
対応を検討してほしいなぁと考えています。
AXISのサービスクラスにS2DAOインターフェースをダイレクトに
乗っけられないかを試行錯誤中なんですが、ビーン配列であれば、
WSDDにビーンクラス定義の1行を追加するだけで、Webサービスの
クライアントに構造体のように渡せるようになるからです。
Listだとシリアライズになり、Javaクライアントが必須となるので
うまくないんです。
AXISに対してどこでコンテナを引かせるかの修正箇所は、これからの
調査次第なんですが、S2DAOに対しては、以下の修正を加えるだけで
行けると思いますので、対応を考えていただけないでしょうか。
TYPOにも効果(キャストミスを防ぐ)があると思います。
よろしくお願いします。 m(_ _)m
----------------------------------------------------------------
org.seaser.dao.impl.DaoMetaDataImpl クラスの改造
createResultSetHandler メソッドに以下を追加。
} else if (method.getReturnType().isAssignableFrom(
Array.newInstance(beanClass_, 0).getClass())) {
return new BeanArrayMetaDataResultSetHandler(beanMetaData_);
}
org.seaser.dao.impl.BeanArrayMetaDataResultSetHandler クラスの作成
package org.seasar.dao.impl;
import java.sql.SQLException;
public class BeanArrayMetaDataResultSetHandler extends
BeanListMetaDataResultSetHandler {
public BeanArrayMetaDataResultSetHandler(BeanMetaData beanMetaData) {
super(beanMetaData);
}
public Object handle(ResultSet rs) throws SQLException {
List list = (List)super(rs);
return list.toArray((Object[])Array.newInstance(
getBeanMetaData().getBeanClass(), 0));
}
}
----------------------------------------------------------------
[[[[[[[[[[[[[[[[[[[[[[ G l u e g e n t , I n c .
[[[[[[[[[[ [[[[[[[
[[[[[[ [[[[[[[[[[
[[[[ [[[[[[[[[[[[ http://www.gluegent.com/
[[ [[[[[[ [[[[
[[[ [[[[ [[[ System Development Division
[[[[[[[[[[[[[[ [[[[[
[[[[[[[[[[[[ [[[[[[[ T a r o K a t o
[[[[[[[[[[ [[[[[[[[[[
Seasar-user メーリングリストの案内