java 类的放射-方法

来源:互联网 发布:sql 分组 求和 小计 编辑:程序博客网 时间:2024/05/16 03:08
/**
* Invoke Proxy method, dispatch request to specific operation 

* @param transactionAction  //类对象
* @param serviceRequest   //参数
* @return  ServiceResponse //返回参数
* @throws BusinessServiceException
*/
public static ServiceResponse executeOperation(Object transactionAction,
ServiceRequest serviceRequest) throws BusinessServiceException {
String operation = (String) serviceRequest.getParameter(CommonConstant.OPERA_TYPE_KEY);
if (StringUtils.isEmpty(operation)) {
throw new BusinessServiceException(
"No operation type set for transaction action");
}


if (transactionAction == null) {
throw new BusinessServiceException(
"Transaction Action object to execute is null");
}


try {
Method method = transactionAction.getClass().getMethod(operation, new Class[] { serviceRequest.getClass() });
Object result = method.invoke(transactionAction, new Object[] { serviceRequest });
if (result instanceof ServiceResponse) {
return (ServiceResponse) result;
}
} catch (InvocationTargetException e) {
Throwable target = e.getTargetException();
throw (target instanceof BusinessServiceException) ? (BusinessServiceException) target
: new BusinessServiceException(e.getMessage(), e);
} catch (Exception e) {
throw new BusinessServiceException(e.getMessage(), e);
}
return null;

}



-------------------调用----------------------

public ServiceResponse perform(ServiceRequest serviceRequest)
throws BusinessServiceException {
return ControllerServiceUtilities.executeOperation(this, serviceRequest);
}

0 0