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
All Methods Instance Methods Concrete Methods Deprecated Methods 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.
-
-
-
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 benull
.- 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 benull
.- 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 interfaceRequestHandler
- 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 interfaceNotificationHandler
- 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 JSONRPC2Response dispatch(JSONRPC2Request request, MessageContext requestCtx)
Deprecated.
-
process
public JSONRPC2Response process(JSONRPC2Request request, MessageContext requestCtx)
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
public void dispatch(JSONRPC2Notification notification, MessageContext notificationCtx)
Deprecated.
-
process
public void process(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 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
.
-
-