Class JsonRpcServer

    • Field Detail

      • LOGGER

        private static final org.slf4j.Logger LOGGER
      • serviceDescription

        private ServiceDescription serviceDescription
        Holds the JSON-RPC service description for this client.
      • interfaceInstance

        private java.lang.Object interfaceInstance
        The instance backing this server.
    • Constructor Detail

      • JsonRpcServer

        public JsonRpcServer​(Channel channel,
                             java.lang.Class<?> interfaceClass,
                             java.lang.Object interfaceInstance,
                             JsonRpcMapper mapper)
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • JsonRpcServer

        public JsonRpcServer​(Channel channel,
                             java.lang.Class<?> interfaceClass,
                             java.lang.Object interfaceInstance)
                      throws java.io.IOException
        Construct a server that talks to the outside world using the given channel, and constructs a fresh temporary queue. Use getQueueName() to discover the created queue name.
        Parameters:
        channel - AMQP channel to use
        interfaceClass - Java interface that this server is exposing to the world
        interfaceInstance - Java instance (of interfaceClass) that is being exposed
        Throws:
        java.io.IOException - if something goes wrong during an AMQP operation
      • JsonRpcServer

        public JsonRpcServer​(Channel channel,
                             java.lang.String queueName,
                             java.lang.Class<?> interfaceClass,
                             java.lang.Object interfaceInstance,
                             JsonRpcMapper mapper)
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • JsonRpcServer

        public JsonRpcServer​(Channel channel,
                             java.lang.String queueName,
                             java.lang.Class<?> interfaceClass,
                             java.lang.Object interfaceInstance)
                      throws java.io.IOException
        Construct a server that talks to the outside world using the given channel and queue name. Our superclass, RpcServer, expects the queue to exist at the time of construction.
        Parameters:
        channel - AMQP channel to use
        queueName - AMQP queue name to listen for requests on
        interfaceClass - Java interface that this server is exposing to the world
        interfaceInstance - Java instance (of interfaceClass) that is being exposed
        Throws:
        java.io.IOException - if something goes wrong during an AMQP operation
    • Method Detail

      • init

        private void init​(java.lang.Class<?> interfaceClass,
                          java.lang.Object interfaceInstance)
      • doCall

        public java.lang.String doCall​(java.lang.String requestBody)
        Runs a single JSON-RPC request.
        Parameters:
        requestBody - the JSON-RPC request string (a JSON encoded value)
        Returns:
        a JSON-RPC response string (a JSON encoded value)
      • matchingMethod

        public java.lang.reflect.Method matchingMethod​(java.lang.String methodName,
                                                       java.lang.Object[] params)
        Retrieves the best matching method for the given method name and parameters.

        Subclasses may override this if they have specialised dispatching requirements, so long as they continue to honour their ServiceDescription.

      • errorResponse

        private java.lang.String errorResponse​(java.lang.Object id,
                                               int code,
                                               java.lang.String message,
                                               java.lang.Object errorArg)
        Construct and encode a JSON-RPC error response for the request ID given, using the code, message, and possible (JSON-encodable) argument passed in.
      • resultResponse

        private java.lang.String resultResponse​(java.lang.Object id,
                                                java.lang.Object result)
        Construct and encode a JSON-RPC success response for the request ID given, using the result value passed in.
      • response

        private java.lang.String response​(java.lang.Object id,
                                          java.lang.String label,
                                          java.lang.Object value)
        Private API - used by errorResponse and resultResponse.
      • getServiceDescription

        public ServiceDescription getServiceDescription()
        Public API - gets the service description record that this service built from interfaceClass at construction time.