ひがやすを技術ブログ

電通国際情報サービスのプログラマ

ComponentInvoker

org.seasar.extension.componentにComponentInvokerを追加しました。

ComponentInvoker


package org.seasar.extension.component;

public interface ComponentInvoker {

public Object invoke(String componentName,
String methodName, Object[] args)
throws Throwable;
}

ComponentInvokerImpl


public class ComponentInvokerImpl implements ComponentInvoker {

private S2Container container;

public Object invoke(String componentName,
String methodName, Object[] args)
throws Throwable {

Object component = container.getComponent(componentName);
BeanDesc beanDesc = BeanDescFactory.getBeanDesc(
component.getClass());
try {
return beanDesc.invoke(component, methodName, args);
} catch (InvocationTargetRuntimeException e) {
throw e.getCause();
}
}

public void setContainer(S2Container container) {
this.container = container;
}
}

S2Container上に登録されているコンポーネントを名前、メソッド名、引数で呼び出したい場合にはこいつが使えます。
今後、汎用的なコンポーネントがあれば、このパッケージ(extension.component)を利用したいと思います。