} else if (methodName.equals("equals")) {
return (proxyObj == args[0] ? Boolean.TRUE : Boolean.FALSE);
} else if (methodName.equals("toString")) {
return proxyObj.getClass().getName() + '@' + Integer.toHexString(proxyObj.hashCode());
}
JSONObject message= new JSONObject();
String tag= proxyMap.get(proxyObj);
String methodTag= tag==null ? "" : tag + ".";
methodTag+=methodName;
message.put("method", methodTag);
JSONArray params= new JSONArray();
if (args!=null) {
for(Object arg: args) {
SerializerState state= new SerializerState();
params.put(message2Object.marshall(state, arg));
}
}
message.put("params", params);
message.put("id", 1);
JSONObject responseMessage= session.sendAndReceive(message);
if (!responseMessage.has("result"))
processException(responseMessage);
Object rawResult= responseMessage.get("result");
if (rawResult==null) {
processException(responseMessage);
}
Class<?> returnType= method.getReturnType();
if (returnType.equals(Void.TYPE))