1 package org.apache.turbine.services.jsonrpc;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.CharArrayWriter;
23
24 import javax.servlet.http.HttpServletRequest;
25
26 import org.apache.logging.log4j.LogManager;
27 import org.apache.logging.log4j.Logger;
28 import org.jabsorb.JSONRPCBridge;
29 import org.jabsorb.JSONRPCResult;
30 import org.json.JSONArray;
31 import org.json.JSONException;
32 import org.json.JSONObject;
33
34
35
36
37
38
39 public class JSONProcessor
40 {
41
42 private static Logger log = LogManager.getLogger(JSONProcessor.class);
43
44
45
46
47
48
49
50
51 public static Object processCall(CharArrayWriter cdata, JSONRPCBridge json_bridge, HttpServletRequest request)
52 {
53
54 JSONObject json_req = null;
55 Object json_res = null;
56 try
57 {
58 json_req = new JSONObject(cdata.toString());
59 if (log.isDebugEnabled())
60 {
61 String methodName = json_req.getString("method");
62 JSONArray arguments = json_req.getJSONArray("params");
63
64
65 int object_id = json_req.optInt("objectID");
66 StringBuilder sb = new StringBuilder(".doprocessCall(): call ");
67 if (object_id != 0)
68 {
69 sb.append("objectID=").append(object_id).append(" ");
70 }
71 sb.append(methodName).append("(").append(arguments).append(")");
72 log.debug(sb.toString());
73 }
74
75 json_res = json_bridge.call(new Object[] {request}, json_req);
76 }
77 catch (JSONException e)
78 {
79 log.error(".processCall(): can't parse call: {}", cdata, e);
80 json_res = JSONRPCResult.MSG_ERR_PARSE;
81 }
82
83 log.debug(".processCall(): returns ", json_res::toString);
84 return json_res;
85 }
86
87 }