com.thetransactioncompany.jsonrpc2.server
Class Dispatcher

java.lang.Object
  extended by com.thetransactioncompany.jsonrpc2.server.Dispatcher
All Implemented Interfaces:
NotificationHandler, RequestHandler

public class Dispatcher
extends Object
implements RequestHandler, NotificationHandler

Dispatcher for JSON-RPC 2.0 requests and notifications. This class is tread-safe.

Use the register() methods to add a request or notification handler for an RPC method.

Use the process() methods to have an incoming request or notification processed by the matching handler.

The reportProcTime() method enables reporting of request processing time (in microseconds) by appending a non-standard "xProcTime" attribute to the resulting JSON-RPC 2.0 response message.

Example:

 { 
   "result"    : "xyz",
   "id"        : 1,
   "jsonrpc"   : "2.0",
   "xProcTime" : "189 us"
 }
 

Note: The dispatch(...) methods were deprecated in version 1.7. Use process(...) instead.

Author:
Vladimir Dzhuvinov

Constructor Summary
Dispatcher()
          Creates a new dispatcher with no registered handlers.
 
Method Summary
 void dispatch(com.thetransactioncompany.jsonrpc2.JSONRPC2Notification notification, MessageContext notificationCtx)
          Deprecated.  
 com.thetransactioncompany.jsonrpc2.JSONRPC2Response dispatch(com.thetransactioncompany.jsonrpc2.JSONRPC2Request request, MessageContext requestCtx)
          Deprecated.  
 NotificationHandler getNotificationHandler(String notificationName)
          Gets the handler for the specified JSON-RPC 2.0 notification name.
 RequestHandler getRequestHandler(String requestName)
          Gets the handler for the specified JSON-RPC 2.0 request name.
 String[] handledNotifications()
          Gets the names of the handled JSON-RPC 2.0 notification methods.
 String[] handledRequests()
          Gets the names of the handled JSON-RPC 2.0 request methods.
 void process(com.thetransactioncompany.jsonrpc2.JSONRPC2Notification notification, MessageContext notificationCtx)
          Processes a JSON-RPC 2.0 notification.
 com.thetransactioncompany.jsonrpc2.JSONRPC2Response process(com.thetransactioncompany.jsonrpc2.JSONRPC2Request request, MessageContext requestCtx)
          Processes a JSON-RPC 2.0 request.
 void register(NotificationHandler handler)
          Registers a new JSON-RPC 2.0 notification handler.
 void register(RequestHandler handler)
          Registers a new JSON-RPC 2.0 request handler.
 void reportProcTime(boolean enable)
          Controls reporting of request processing time by appending a non-standard "xProcTime" attribute to the JSON-RPC 2.0 response.
 boolean reportsProcTime()
          Returns true if reporting of request processing time is enabled.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Dispatcher

public Dispatcher()
Creates a new dispatcher with no registered handlers.

Method Detail

register

public void register(RequestHandler handler)
Registers a new JSON-RPC 2.0 request handler.

Parameters:
handler - The request handler to register. Must not be null.
Throws:
IllegalArgumentException - On attempting to register a handler that duplicates an existing request name.

register

public void register(NotificationHandler handler)
Registers a new JSON-RPC 2.0 notification handler.

Parameters:
handler - The notification handler to register. Must not be null.
Throws:
IllegalArgumentException - On attempting to register a handler that duplicates an existing notification name.

handledRequests

public String[] handledRequests()
Description copied from interface: RequestHandler
Gets the names of the handled JSON-RPC 2.0 request methods.

Specified by:
handledRequests in interface RequestHandler
Returns:
The names of the handled JSON-RPC 2.0 request methods.

handledNotifications

public String[] handledNotifications()
Description copied from interface: NotificationHandler
Gets the names of the handled JSON-RPC 2.0 notification methods.

Specified by:
handledNotifications in interface NotificationHandler
Returns:
The names of the handled JSON-RPC 2.0 notification methods.

getRequestHandler

public RequestHandler getRequestHandler(String requestName)
Gets the handler for the specified JSON-RPC 2.0 request name.

Parameters:
requestName - The request name to lookup.
Returns:
The corresponding request handler or null if none was found.

getNotificationHandler

public NotificationHandler getNotificationHandler(String notificationName)
Gets the handler for the specified JSON-RPC 2.0 notification name.

Parameters:
notificationName - The notification name to lookup.
Returns:
The corresponding notification handler or null if none was found.

dispatch

public com.thetransactioncompany.jsonrpc2.JSONRPC2Response dispatch(com.thetransactioncompany.jsonrpc2.JSONRPC2Request request,
                                                                    MessageContext requestCtx)
Deprecated. 


process

public com.thetransactioncompany.jsonrpc2.JSONRPC2Response process(com.thetransactioncompany.jsonrpc2.JSONRPC2Request request,
                                                                   MessageContext requestCtx)
Description copied from interface: RequestHandler
Processes a JSON-RPC 2.0 request.

Specified by:
process in interface RequestHandler
Parameters:
request - A valid JSON-RPC 2.0 request instance. Must not be null.
requestCtx - Context information about the request message, may be null if undefined.
Returns:
The resulting JSON-RPC 2.0 response. It indicates success or an error, such as METHOD_NOT_FOUND.

dispatch

public void dispatch(com.thetransactioncompany.jsonrpc2.JSONRPC2Notification notification,
                     MessageContext notificationCtx)
Deprecated. 


process

public void process(com.thetransactioncompany.jsonrpc2.JSONRPC2Notification notification,
                    MessageContext notificationCtx)
Description copied from interface: NotificationHandler
Processes a JSON-RPC 2.0 notification.

Note that JSON-RPC 2.0 notifications don't produce a response!

Specified by:
process in interface NotificationHandler
Parameters:
notification - A valid JSON-RPC 2.0 notification instance. Must not be null.
notificationCtx - Context information about the notification message, may be null if undefined.

reportProcTime

public void reportProcTime(boolean enable)
Controls reporting of request processing time by appending a non-standard "xProcTime" attribute to the JSON-RPC 2.0 response. Reporting is disabled by default.

Parameters:
enable - true to enable proccessing time reporting, false to disable it.

reportsProcTime

public boolean reportsProcTime()
Returns true if reporting of request processing time is enabled. See the reportProcTime description for more information.

Returns:
true if reporting of request processing time is enabled, else false.


Copyright © 2013 The Transaction Company. All Rights Reserved.