[Seasar-user:9772] Re: [S2Dxo] 独自コンバータの登録に関して

o.h. [E-MAIL ADDRESS DELETED]
2007年 8月 8日 (水) 13:27:09 JST


長谷川です.

Nishioka Naoto wrote:
> 
> 試しに、converterパッケージの中にクラスをおいてみましたが、
> 登録は行われていないようです。
> 

既存の ConverterFactoryImpl ではどうもできないようです.
#私もできないなぁと思った口です.

ですので、私の場合は ConverterFactory を独自実装のものに入れ替えて
使っています.

修正ポイントは
#よくわかってないままの場当たりな修正ですので

container.findAllComponents(Converter.class)

となっているところを

container.getRoot().findAllComponents(Converter.class)

といった感じに修正することで SMART deploy 側のコンポーネントも
登録されるようになりました.
#重ねて申し上げますが、あくまで場当たりな修正です.

実際のコードは以下のようなもんです.
#コードまで書いているのは、やっちゃだめなことをしてないか
#識者の方々の意見をお聞きしたいってところもあります.(^^;

@Override
public void initialize() {
	super.initialize();
	Object[] userConverters = container.getRoot().findAllComponents(
			Converter.class);
	Converter[] newConverters = new Converter[userConverters.length
			+ converters.length];
	// converters には重複して登録されても大丈夫そうなので
	// そのまま追加してしまう
	System.arraycopy(converters,
			0,
			newConverters,
			0,
			converters.length);
	System.arraycopy(userConverters,
			0,
			newConverters,
			converters.length,
			userConverters.length);
	converters = newConverters;
}

org.seasar.extension.dxo.converter.impl.ConverterFactoryImpl を継承
して initialize を override してるだけですが、これを dxo.dicon に
入れてあげてます.

ご参考までに.
-- 
_/_/
_/_/ mailto: [E-MAIL ADDRESS DELETED]
_/_/ (deprecated: [E-MAIL ADDRESS DELETED])
_/_/




Seasar-user メーリングリストの案内