001package com.thetransactioncompany.jsonrpc2.examples;
002
003
004import java.util.*;
005
006import com.thetransactioncompany.jsonrpc2.*;
007
008
009/** 
010 * This example shows how to discern between received JSON-RPC 2.0 requests 
011 * and notifications on the server side.
012 *
013 * @author Vladimir Dzhuvinov
014 */
015public class Example2 {
016
017
018        /** 
019         * Parses a JSON-RPC 2.0 message and determines its type
020         *
021         * @param jsonString The JSON-RPC 2.0 message encoded as JSON string.
022         */
023        public static void parseMessage(String jsonString) {
024        
025                JSONRPC2Message msg;
026                
027                try {
028                        msg = JSONRPC2Message.parse(jsonString);
029                        
030                } catch (JSONRPC2ParseException e) {
031                        System.err.println(e);
032                        return;
033                }
034                
035                if (msg instanceof JSONRPC2Request) {
036                        System.out.println("The message is a Request");
037                }
038                else if (msg instanceof JSONRPC2Notification) {
039                        System.out.println("The message is a Notification");
040                }
041                else if (msg instanceof JSONRPC2Response) {
042                        System.out.println("The message is a Response");
043                }
044        }
045
046
047        public static void main(String[] args) {
048        
049                // Create request
050                String method = "getAccountBalance";
051                Map<String,Object> params = new HashMap<String,Object>();
052                params.put("accountHolder", "Penny Adams");
053                String id = "req-002";
054                JSONRPC2Request request = new JSONRPC2Request(method, params, id);
055                
056                // Create notification
057                method = "notifyRecipient";
058                params = new HashMap<String,Object>();
059                params.put("recipient", "John Shilling");
060                JSONRPC2Notification notification = new JSONRPC2Notification(method, params);
061                
062                // Create response
063                String result = "EUR 1500.35";
064                JSONRPC2Response response = new JSONRPC2Response(result, id);
065
066                parseMessage(request.toString());
067                parseMessage(notification.toString());
068                parseMessage(response.toString());
069        }
070}