[Seasar-user:550] Re: インターフェイスコンポーネント生成例外
B isid.co.jp Yasuo Higa
higa
2004年 3月 30日 (火) 18:35:42 JST
<[E-MAIL ADDRESS DELETED]> の、
"[Seasar-user:549] インターフェイスコンポーネント生成例外" において、
"Masataka Kurihara <[E-MAIL ADDRESS DELETED]>"さんは書きました:
ひがです。
> 栗原です。
>
> インターフェイスコンポーネント生成で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 <[E-MAIL ADDRESS DELETED]>
INFORMATION SERVICES INTERNATIONAL-DENTSU,LTD.
Seasar-user メーリングリストの案内