Class Dispatcher
java.lang.Object
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
Constructors Constructor Description Dispatcher()
Creates a new dispatcher with no registered handlers. -
Method Summary
Modifier and Type Method Description void
dispatch(JSONRPC2Notification notification, MessageContext notificationCtx)
Deprecated.JSONRPC2Response
dispatch(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(JSONRPC2Notification notification, MessageContext notificationCtx)
Processes a JSON-RPC 2.0 notification.JSONRPC2Response
process(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()
Returnstrue
if reporting of request processing time is enabled.
-
Constructor Details
-
Dispatcher
public Dispatcher()Creates a new dispatcher with no registered handlers.
-
-
Method Details
-
register
Registers a new JSON-RPC 2.0 request handler.- Parameters:
handler
- The request handler to register. Must not benull
.- Throws:
IllegalArgumentException
- On attempting to register a handler that duplicates an existing request name.
-
register
Registers a new JSON-RPC 2.0 notification handler.- Parameters:
handler
- The notification handler to register. Must not benull
.- Throws:
IllegalArgumentException
- On attempting to register a handler that duplicates an existing notification name.
-
handledRequests
Description copied from interface:RequestHandler
Gets the names of the handled JSON-RPC 2.0 request methods.- Specified by:
handledRequests
in interfaceRequestHandler
- Returns:
- The names of the handled JSON-RPC 2.0 request methods.
-
handledNotifications
Description copied from interface:NotificationHandler
Gets the names of the handled JSON-RPC 2.0 notification methods.- Specified by:
handledNotifications
in interfaceNotificationHandler
- Returns:
- The names of the handled JSON-RPC 2.0 notification methods.
-
getRequestHandler
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
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
Deprecated. -
process
Description copied from interface:RequestHandler
Processes a JSON-RPC 2.0 request.- Specified by:
process
in interfaceRequestHandler
- Parameters:
request
- A valid JSON-RPC 2.0 request instance. Must not benull
.requestCtx
- Context information about the request message, may benull
if undefined.- Returns:
- The resulting JSON-RPC 2.0 response. It indicates success or an error, such as METHOD_NOT_FOUND.
-
dispatch
Deprecated. -
process
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 interfaceNotificationHandler
- Parameters:
notification
- A valid JSON-RPC 2.0 notification instance. Must not benull
.notificationCtx
- Context information about the notification message, may benull
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()Returnstrue
if reporting of request processing time is enabled. See thereportProcTime
description for more information.- Returns:
true
if reporting of request processing time is enabled, elsefalse
.
-