001 package org.apache.turbine.services.jsonrpc; 002 003 /* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022 import java.io.CharArrayWriter; 023 024 import javax.servlet.http.HttpServletRequest; 025 import javax.servlet.http.HttpSession; 026 027 import org.apache.commons.logging.Log; 028 import org.apache.commons.logging.LogFactory; 029 import org.apache.turbine.services.TurbineBaseService; 030 031 import com.metaparadigm.jsonrpc.JSONRPCBridge; 032 033 /** 034 * This is a service that will respond to JSON-RPC calls. 035 * 036 * @author <a href="mailto:seade@backstagetech.com.au">Scott Eade</a> 037 * @version $Id: TurbineJsonRpcService.java 712125 2008-11-07 13:47:28Z seade $ 038 */ 039 public class TurbineJsonRpcService 040 extends TurbineBaseService 041 implements JsonRpcService 042 { 043 /** Log. */ 044 private static Log log = LogFactory.getLog(TurbineJsonRpcService.class); 045 046 /** The key used to store the bridge in the session. */ 047 public static final String JSON_BRIDGE_KEY = "JSONRPCBridge"; 048 /** 049 * The debug option for the bridge can be enabled by enabling debug level 050 * logging for this class. 051 */ 052 private static final boolean DEBUG = log.isDebugEnabled(); 053 054 public Object processCall(CharArrayWriter cdata, 055 JSONRPCBridge json_bridge, HttpServletRequest request) 056 { 057 return JSONProcessor.processCall(cdata, json_bridge, request); 058 } 059 060 public void registerObjectGlobal(String key, Object value) 061 { 062 JSONRPCBridge.getGlobalBridge().setDebug(DEBUG); 063 JSONRPCBridge.getGlobalBridge().registerObject(key, value); 064 } 065 066 public void registerObject(HttpSession session, String key, Object value) 067 { 068 JSONRPCBridge json_bridge = getBridge(session); 069 json_bridge.setDebug(DEBUG); 070 json_bridge.registerObject(key, value); 071 } 072 073 public JSONRPCBridge getBridge(HttpSession session) 074 { 075 JSONRPCBridge json_bridge = (JSONRPCBridge) session.getAttribute(JSON_BRIDGE_KEY); 076 if (json_bridge == null) 077 { 078 json_bridge = new JSONRPCBridge(); 079 session.setAttribute(JSON_BRIDGE_KEY, json_bridge); 080 } 081 return json_bridge; 082 } 083 084 public void clearBridge(HttpSession session) 085 { 086 session.removeAttribute(JSON_BRIDGE_KEY); 087 } 088 089 // The following is modeled on XmlRpcSercice. 090 // /** 091 // * Initialize the JsonRpcService. 092 // * 093 // * @throws InitializationException Something went wrong in the init stage. 094 // */ 095 // public void init() throws InitializationException 096 // { 097 // //Configuration conf = getConfiguration(); 098 // setInit(true); 099 // } 100 // 101 // /** 102 // * Shuts down this service, stopping running threads. 103 // */ 104 // public void shutdown() 105 // { 106 // setInit(false); 107 // } 108 109 }