Class InternalServer

java.lang.Object
org.astrogrid.samp.xmlrpc.internal.InternalServer
All Implemented Interfaces:
SampXmlRpcServer
Direct Known Subclasses:
RpcLoggingInternalServer, XmlLoggingInternalServer

public class InternalServer extends Object implements SampXmlRpcServer
SampXmlRpcServer implementation without external dependencies. The reqInfo argument passed to the handleCall method of registered SampXmlRpcHandlers is the associated HttpServer.Request.
Since:
27 Aug 2008
Author:
Mark Taylor
  • Constructor Details

    • InternalServer

      public InternalServer(HttpServer httpServer, String path) throws IOException
      Constructor based on a given HTTP server. It is the caller's responsibility to configure and start the HttpServer.
      Parameters:
      httpServer - server for processing HTTP requests
      path - path part of server endpoint (starts with "/");
      Throws:
      IOException
    • InternalServer

      public InternalServer() throws IOException
      Constructs a server running with default characteristics. Currently, the default server UtilServer.getInstance() is used.
      Throws:
      IOException
  • Method Details

    • getEndpoint

      public URL getEndpoint()
      Description copied from interface: SampXmlRpcServer
      Returns the server's endpoint.
      Specified by:
      getEndpoint in interface SampXmlRpcServer
      Returns:
      URL to which XML-RPC requests are POSTed
    • getHttpServer

      public HttpServer getHttpServer()
      Returns the HTTP server hosting this XML-RPC server.
      Returns:
      http server
    • addHandler

      public void addHandler(SampXmlRpcHandler handler)
      Description copied from interface: SampXmlRpcServer
      Adds a handler which can service certain XML-RPC methods.
      Specified by:
      addHandler in interface SampXmlRpcServer
      Parameters:
      handler - handler to add
    • removeHandler

      public void removeHandler(SampXmlRpcHandler handler)
      Description copied from interface: SampXmlRpcServer
      Removes a previously-added handler.
      Specified by:
      removeHandler in interface SampXmlRpcServer
      Parameters:
      handler - handler to remove
    • getXmlRpcResponse

      protected HttpServer.Response getXmlRpcResponse(HttpServer.Request request)
      Returns the HTTP response object given an incoming XML-RPC POST request. Any error should be handled by returning a fault-type methodResponse element rather than by throwing an exception.
      Parameters:
      request - POSTed HTTP request
      Returns:
      XML-RPC response (possibly fault)
    • handleCall

      protected Object handleCall(SampXmlRpcHandler handler, String methodName, List paramList, HttpServer.Request request) throws Exception
      Actually passes the XML-RPC method name and parameter list to one of the registered servers for processing.
      Parameters:
      handler - handler which has declared it can handle the named method
      methodName - XML-RPC method name
      paramList - list of parameters to XML-RPC call
      request - HTTP request from which this call originated
      Throws:
      Exception
    • getResultBytes

      public static byte[] getResultBytes(Object result) throws IOException
      Turns a SAMP-friendly (string, list, map only) object into an array of bytes giving an XML-RPC methodResponse document.
      Parameters:
      result - SAMP-friendly object
      Returns:
      XML methodResponse document as byte array
      Throws:
      IOException
    • getFaultBytes

      public static byte[] getFaultBytes(Throwable error) throws IOException
      Turns an exception into an array of bytes giving an XML-RPC methodResponse (fault) document.
      Parameters:
      error - throwable
      Returns:
      XML methodResponse document as byte array
      Throws:
      IOException