[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 メーリングリストの案内