[Seasar-user:550] Re: インターフェイスコンポーネント生成例外
Yasuo Higa
higa
2005年 4月 6日 (水) 01:08:08 JST
<20040330175521.F5B8.KURIHARA @ gluegent.com> の、
"[Seasar-user:549] インターフェイスコンポーネント生成例外" において、
"Masataka Kurihara <kurihara @ gluegent.com>"さんは書きました:
ひがです。
> 栗原です。
>
> インターフェイスコンポーネント生成でNoSuchConstructorException
> が出るように何時からか、なっちゃいました。
>
> public interface ScriptUser {
> public String eval(String name);
> }
>
> <component class="ScriptUser">
> <aspect>
> <component class="ShellAdvice">
> <property name="fileName">'script.xml'<property>
> </component>
> </aspect>
> </component>
>
> みたいなので、evelをスクリプトで乗っ取る、前にS2Daoのところで
> ひがさんに教えてもらったような方法でスクリプトホストのAdvice
> つくろっかなと思ってたところ、入り口で、
>
> org.seasar.framework.exception.NoSuchConstructorRuntimeException:
> [ESSR0064]クラス(sample.org.seasar.ScriptUser)のコンストラクタ(ScriptUserr())が
> 見つかりません
> at org.seasar.framework.util.ClassUtil.getConstructor(ClassUtil.java:96)
>
> となります。インターフェイスをAdviceで実装できるのはステキだと
> 思うので復活のほう要望します。
>
ほんとだ。すみません。m(_ _)m
AbstractConstructorAssemblerを
protected Object assembleDefault() {
if (getComponentDef().getAspectDefSize() > 0) {
AopProxy aopProxy = createAopProxy();
return aopProxy.create();
} else {
Class clazz = getComponentDef().getComponentClass();
Constructor constructor = ClassUtil.getConstructor(clazz, null);
return ConstructorUtil.newInstance(constructor, null);
}
}
のように書き換えれば直ります。
---
Yasuo Higa <higa @ isid.co.jp>
INFORMATION SERVICES INTERNATIONAL-DENTSU,LTD.
Seasar-user メーリングリストの案内