1 package org.apache.turbine.services.jsonrpc;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 import java.io.CharArrayWriter;
23
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpSession;
26
27 import org.apache.turbine.services.TurbineServices;
28 import org.jabsorb.JSONRPCBridge;
29
30
31 /**
32 * This is a static accessor class for {@link JsonRpcService}.
33 *
34 * @author <a href="mailto:seade@backstagetech.com.au">Scott Eade</a>
35 * @version $Id: TurbineJsonRpc.java 1706239 2015-10-01 13:18:35Z tv $
36 */
37 public abstract class TurbineJsonRpc
38 {
39 /**
40 * Returns system's configured implementation of {@link JsonRpcService}.
41 *
42 * @return an implementation of <code>JsonRpcService</code>
43 */
44 public static JsonRpcService getService()
45 {
46 return (JsonRpcService) TurbineServices.getInstance()
47 .getService(JsonRpcService.SERVICE_NAME);
48 }
49
50 /**
51 * Process a JSON RPC call
52 * @param cdata the JSON data
53 * @param json_bridge the {@link JSONRPCBridge} object
54 * @param request the request
55 * @return the return object of the JSON RPC call
56 */
57 public static Object processCall(CharArrayWriter cdata,
58 JSONRPCBridge json_bridge, HttpServletRequest request)
59 {
60 return getService().processCall(cdata, json_bridge, request);
61 }
62
63 /**
64 * Register an object with the {@link JSONRPCBridge} in a given session
65 *
66 * @param session the session
67 * @param key the name of the object in the session
68 * @param value the object to register
69 */
70 public static void registerObject(HttpSession session, String key, Object value)
71 {
72 getService().registerObject(session, key, value);
73 }
74
75 /**
76 * Register an object with the {@link JSONRPCBridge} globally
77 *
78 * @param key the name of the object in the session
79 * @param value the object to register
80 */
81 public static void registerObjectGlobal(String key, Object value)
82 {
83 getService().registerObjectGlobal(key, value);
84 }
85
86 /**
87 * Get the {@link JSONRPCBridge} from the session
88 *
89 * @param session the session
90 * @return the {@link JSONRPCBridge} instance
91 */
92 public static JSONRPCBridge getBridge(HttpSession session)
93 {
94 return getService().getBridge(session);
95 }
96
97 /**
98 * Remove the {@link JSONRPCBridge} from the session
99 *
100 * @param session the session
101 */
102 public static void clearBridge(HttpSession session)
103 {
104 getService().clearBridge(session);
105 }
106 }