public Object invoke(Object proxy, Method method, Object[] args) throws InvocationTargetException, IllegalAccessException, XmlRpcException { if (isObjectMethodLocal() && method.getDeclaringClass().equals(Object.class)) { return method.invoke(proxy, args); } String classname = clazz.getName().replaceFirst(clazz.getPackage().getName() + ".", "").toLowerCase(); classname = classname.replace("$", "."); // dirty hack TODO String methodName = classname + "." + method.getName(); Object result = client.execute(methodName, args); TypeConverter typeConverter = typeConverterFactory.getTypeConverter(method.getReturnType()); return typeConverter.convert(result); } });
boolean matching = true; for (int j = 0; j < args.length; j++) { if (!converters[j].isConvertable(args[j])) { matching = false; break; args[j] = converters[j].convert(args[j]);
return typeConverter.backConvert(result);
boolean matching = true; for (int j = 0; j < args.length; j++) { if (!converters[j].isConvertable(args[j])) { matching = false; break; args[j] = converters[j].convert(args[j]);
return typeConverter.backConvert(result);
for ( int j = 0; j < args.length; j++ ) if ( !converters[j].isConvertable( args[j] ) ) args[j] = converters[j].convert( args[j] );
public Object invoke(Object pProxy, Method pMethod, Object[] pArgs) throws Throwable { if (isObjectMethodLocal() && pMethod.getDeclaringClass().equals(Object.class)) { return pMethod.invoke(pProxy, pArgs); } String methodName = pClass.getName() + "." + pMethod.getName(); Object result = client.execute(methodName, pArgs); TypeConverter typeConverter = typeConverterFactory.getTypeConverter(pMethod.getReturnType()); return typeConverter.convert(result); } });
return typeConverter.backConvert(result);
for ( int j = 0; j < args.length; j++ ) if ( !converters[j].isConvertable( args[j] ) ) args[j] = converters[j].convert( args[j] );
return typeConverter.convert(result);
boolean matching = true; for (int j = 0; j < args.length; j++) { if (!converters[j].isConvertable(args[j])) { matching = false; break; args[j] = converters[j].convert(args[j]);
return typeConverter.convert(result);
return typeConverter.convert(result);
return typeConverter.convert(result);
public Object invoke(Object pProxy, Method pMethod, Object[] pArgs) throws Throwable { 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); return typeConverter.convert(result); } });