String tracClassName = Utils.findTracClassName(aClass);
if(tracClassName == null){
throw new TracException(MessageUtils.registerErrorLog(log, "core.no.trac.classname.found", aClass.getName()));
}
TracClassMethod tracClassMethodMetadata = Utils.getTracClassMethodAnnotation(pMethod);
String methodName = Utils.buildTracMethodNameInvocation(tracClassName, tracClassMethodMetadata);
Object result = null;
try {
result = getClient().execute(methodName, pArgs);
} catch (XmlRpcInvocationException e) {
throw new TracException(MessageUtils.registerErrorLog(log, "core.invocation.factory.invocation.exception", e.getMessage()), e);
} catch(XmlRpcException e){
throw new TracException(MessageUtils.registerErrorLog(log, "core.invocation.factory.xmlrpc.exception", e.getMessage()), e);
}
catch (Throwable e){
throw new TracException(MessageUtils.registerErrorLog(log, "core.invocation.factory.unknown.exception", e.getMessage()), e);
}
Class returnType = tracClassMethodMetadata.tracReturnType();
if(returnType == Object.class){
returnType = pMethod.getReturnType();
}
TypeConverter typeConverter = typeConverterFactory.getTypeConverter(returnType);