package ddth.dasp.framework.bo;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* Delegate-enabled Business Object manager.
*
* @author NBThanh <btnguyen2k@gmail.com>
* @version 0.1.0
*/
public abstract class DelegateBoManager<T> extends CacheBoManager {
private T delegatedBoManager;
protected T getDelegatedBoManager() {
return delegatedBoManager;
}
public void setDelegatedBoManager(T delegatedBoManager) {
this.delegatedBoManager = delegatedBoManager;
}
/**
* Delegates a call to the delegated object.
*
* @param methodName
* @param params
* @param paramTypes
* @return
* @throws SecurityException
* @throws NoSuchMethodException
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws InvocationTargetException
*/
protected Object delegate(String methodName, Object[] params, Class<?>[] paramTypes)
throws SecurityException, NoSuchMethodException, IllegalArgumentException,
IllegalAccessException, InvocationTargetException {
if (delegatedBoManager == null) {
return null;
}
Method m = delegatedBoManager.getClass().getMethod(methodName, paramTypes);
Object result = m.invoke(delegatedBoManager, params);
return result;
}
}