/**
* 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;
* 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);
}