Package com.metaparadigm.jsonrpc

Examples of com.metaparadigm.jsonrpc.JSONRPCBridge


    // Find the JSONRPCBridge for this session or create one
    // if it doesn't exist
    long startTime = System.currentTimeMillis();
    log.debug("Incoming JSON message");

    JSONRPCBridge jsonBridge = (JSONRPCBridge) getServletContext().getAttribute(JSON_RPC_BRIDGE_ATTRIBUTE);

    // updateUserContext(request);

    // Encode using UTF-8, although We are actually ASCII clean as
    // all unicode data is JSON escaped using backslash u. This is
    // less data efficient for foreign character sets but it is
    // needed to support naughty browsers such as Konqueror and Safari
    // which do not honour the charset set in the response
    response.setContentType("text/plain;charset=utf-8");

    JSONObject jsonReq = null;
    JSONRPCResult jsonRes = null;

    // Decode using the charset in the request if it exists otherwise
    // use UTF-8 as this is what all browser implementations use.
    // The JSON-RPC-Java JavaScript client is ASCII clean so it
    // although here we can correctly handle data from other clients
    // that do not escape non ASCII data
    String charset = request.getCharacterEncoding();
    if (charset == null) {
      charset = "UTF-8";
    }
    BufferedReader in = new BufferedReader(new InputStreamReader(request.getInputStream(), charset));

    // Read the request
    CharArrayWriter data = new CharArrayWriter();
    char[] buf = new char[BUFFER_SIZE];
    int ret;
    while ((ret = in.read(buf, 0, BUFFER_SIZE)) != -1) {
      data.write(buf, 0, ret);
    }
    writeReceive(data.toString());
    try {
      jsonReq = new JSONObject(data.toString());
      // Process the request
      jsonRes = jsonBridge.call(new Object[] { request }, jsonReq);
    } catch (ParseException e) {
      log.error("can't parse call: " + data, e);
      jsonRes = new JSONRPCResult(JSONRPCResult.CODE_ERR_PARSE, null, JSONRPCResult.MSG_ERR_PARSE);
    }
View Full Code Here


    log.error("JSON invocation error", error);
  }

  private void initBridge(ServletConfig config, ApplicationContext applicationContext) throws ServletException {
    // Create the JSON RPC Bridge (context-wide object)
    JSONRPCBridge jsonBridge = new JSONRPCBridge(false);
    try {
      // Order is important !!!!
      jsonBridge.registerSerializer(applicationContext.getBean("dojo.server.json.AnnotatedBeanSerializer",
          AnnotatedBeanSerializer.class));
      jsonBridge.registerSerializer(new GeometrySerializer());
      jsonBridge.registerSerializer(new DtoGeometrySerializer());
      jsonBridge.registerSerializer(new BigNumberSerializer());
      jsonBridge.registerSerializer(new ArraySerializer());
      jsonBridge.registerSerializer(new DictionarySerializer());
      jsonBridge.registerSerializer(new MapSerializer());
      jsonBridge.registerSerializer(new SetSerializer());
      jsonBridge.registerSerializer(new ListSerializer());
      jsonBridge.registerSerializer(new DateSerializer());
      jsonBridge.registerSerializer(new StringSerializer());
      jsonBridge.registerSerializer(new NumberSerializer());
      jsonBridge.registerSerializer(new BooleanSerializer());
      jsonBridge.registerSerializer(new PrimitiveSerializer());
      jsonBridge.registerSerializer(new RectangleSerializer());
      jsonBridge.registerSerializer(new ColorSerializer());
      jsonBridge.registerSerializer(new FontSerializer());
      jsonBridge.registerSerializer(new EnumSerializer());
    } catch (Exception e) {
      throw new ServletException("json : could not register all serializers", e);
    }

    // register the controller object
    CommandDispatcher commandDispatcher = applicationContext.getBean("command.CommandDispatcher",
        CommandDispatcher.class);
    if (null == commandDispatcher) {
      throw new ServletException(
          "Cannot find CommandDispatcher, the org.geomajas.internal.global.GeomajasContextListener "
              + "was probably not registered.");
    }
    jsonBridge.registerObject("CommandDispatcher", commandDispatcher);
    jsonBridge.registerCallback(this, HttpServletRequest.class);

    // put in application context
    config.getServletContext().setAttribute(JSON_RPC_BRIDGE_ATTRIBUTE, jsonBridge);
  }
View Full Code Here

         * Create a new bridge for every request to aviod all the problems with JSON-RPC-Java storing the bridge in the session
         */
        HttpSession session = request.getSession();
        try {

            JSONRPCBridge jsonrpcBridge = new JSONRPCBridge();
            for (EntryPointContext epc : entryPoints) {
                jsonrpcBridge.registerObject(epc.getName(), epc.getInstance(null));
            }
            session.setAttribute("JSONRPCBridge", jsonrpcBridge);

            super.service(request, response);

View Full Code Here

         * Create a new bridge for every request to avoid all the problems with
         * JSON-RPC-Java storing the bridge in the session
         */
        HttpSession session = request.getSession();

        JSONRPCBridge jsonrpcBridge = new JSONRPCBridge();
        jsonrpcBridge.registerObject("Service", serviceInstance, serviceInterface);
        session.setAttribute("JSONRPCBridge", jsonrpcBridge);
       
        org.json.JSONObject jsonReq = null;
        com.metaparadigm.jsonrpc.JSONRPCResult jsonResp = null;
        try {
            jsonReq = new org.json.JSONObject(requestData);
        } catch (java.text.ParseException e) {
            throw new RuntimeException("Unable to parse request", e);
        }

        String method = jsonReq.getString("method");
        if ((method != null) && (method.indexOf('.') < 0)) {
            jsonReq.putOpt("method", "Service" + "." + method);
        }

        // invoke the request
        jsonResp = jsonrpcBridge.call(new Object[] {request}, jsonReq);

        return jsonResp.toString().getBytes("UTF-8");
    }
View Full Code Here

        JSONRPCBridge.getGlobalBridge().registerObject(key, value);
    }

    public void registerObject(HttpSession session, String key, Object value)
    {
        JSONRPCBridge json_bridge = getBridge(session);
        json_bridge.setDebug(DEBUG);
        json_bridge.registerObject(key, value);
    }
View Full Code Here

        json_bridge.registerObject(key, value);
    }

    public JSONRPCBridge getBridge(HttpSession session)
    {
        JSONRPCBridge json_bridge = (JSONRPCBridge) session.getAttribute(JSON_BRIDGE_KEY);
        if (json_bridge == null)
        {
            json_bridge = new JSONRPCBridge();
            session.setAttribute(JSON_BRIDGE_KEY, json_bridge);
        }
        return json_bridge;
    }
View Full Code Here

     @return A JSON RPC Bridge
     */
    // FIXME: Is returning the global bridge a potential security threat?
    private static JSONRPCBridge getBridge( WikiContext context )
    {
        JSONRPCBridge bridge = null;
        HttpServletRequest req = context.getHttpRequest();
       
        if( req != null )
        {
            HttpSession hs = req.getSession();
           
            if( hs != null )
            {
                bridge = (JSONRPCBridge)hs.getAttribute(JSONRPCBRIDGE);
               
                if( bridge == null )
                {
                    bridge = new JSONRPCBridge();
               
                    hs.setAttribute(JSONRPCBRIDGE, bridge);
                }
            }
        }
       
        if( bridge == null) bridge = JSONRPCBridge.getGlobalBridge();
        bridge.setDebug(false);
       
        return bridge;
    }
View Full Code Here

    
     *  @param session The HttpSession which was created.
     */
    public static void sessionCreated( HttpSession session )
    {
        JSONRPCBridge bridge = (JSONRPCBridge)session.getAttribute(JSONRPCBRIDGE);
       
        if( bridge == null )
        {
            bridge = new JSONRPCBridge();
       
            session.setAttribute( JSONRPCBRIDGE, bridge );
        }

        WikiJSONAccessor acc = new WikiJSONAccessor();
       
        bridge.registerCallback( acc, HttpServletRequest.class );
       
        for( Iterator i = c_globalObjects.values().iterator(); i.hasNext(); )
        {
            CallbackContainer cc = (CallbackContainer) i.next();
      
            bridge.registerObject( cc.m_id, cc.m_object );
        }

    }
View Full Code Here

         * Create a new bridge for every request to avoid all the problems with
         * JSON-RPC-Java storing the bridge in the session
         */
        HttpSession session = request.getSession();

        JSONRPCBridge jsonrpcBridge = new JSONRPCBridge();
        jsonrpcBridge.registerObject("Service", serviceInstance, serviceInterface);
        session.setAttribute("JSONRPCBridge", jsonrpcBridge);
       
        org.json.JSONObject jsonReq = null;
        com.metaparadigm.jsonrpc.JSONRPCResult jsonResp = null;
        try {
            jsonReq = new org.json.JSONObject(requestData);
        } catch (java.text.ParseException e) {
            throw new RuntimeException("Unable to parse request", e);
        }

        String method = jsonReq.getString("method");
        if ((method != null) && (method.indexOf('.') < 0)) {
            jsonReq.putOpt("method", "Service" + "." + method);
        }

        // invoke the request
        jsonResp = jsonrpcBridge.call(new Object[] {request}, jsonReq);

        return jsonResp.toString().getBytes("UTF-8");
    }
View Full Code Here

        return new TestSuite(JsonrpcServicelTest.class);
    }

    public void testBridgeAccess()
    {
        JSONRPCBridge bridge = new JSONRPCBridge();
        assertNotNull(bridge);
    }
View Full Code Here

TOP

Related Classes of com.metaparadigm.jsonrpc.JSONRPCBridge

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.