Class WebHubXmlRpcHandler

java.lang.Object
org.astrogrid.samp.xmlrpc.ActorHandler
org.astrogrid.samp.web.WebHubXmlRpcHandler
All Implemented Interfaces:
SampXmlRpcHandler

public class WebHubXmlRpcHandler extends ActorHandler
SampXmlRpcHandler implementation which passes Web Profile-type XML-RPC calls to a hub connection factory to provide a Web Profile hub server.
Since:
2 Feb 2011
Author:
Mark Taylor
  • Constructor Details

    • WebHubXmlRpcHandler

      public WebHubXmlRpcHandler(ClientProfile profile, ClientAuthorizer auth, KeyGenerator keyGen, URL baseUrl, UrlTracker urlTracker)
      Constructor.
      Parameters:
      profile - hub connection factory
      auth - client authorizer
      keyGen - key generator for private keys
      baseUrl - base URL of HTTP server, used for URL translation
      urlTracker - tracks URLs in messages to restrict use in URL translation service for security reasons; may be null for no restrictions
  • Method Details

    • handleCall

      public Object handleCall(String fqName, List params, Object reqObj) throws Exception
      Description copied from interface: SampXmlRpcHandler
      Processes an XML-RPC call. This method should only be called if canHandleCall(method) returns true. The params list and the return value must be SAMP-compatible, that is only Strings, Lists and String-keyed Maps are allowed in the data structures. The reqInfo parameter may be used to provide additional information about the XML-RPC request, for instance the originating host; this is implementation specific, and may be null.
      Specified by:
      handleCall in interface SampXmlRpcHandler
      Overrides:
      handleCall in class ActorHandler
      Parameters:
      fqName - XML-RPC method name
      params - XML-RPC parameter list (SAMP-compatible)
      reqObj - optional additional request information; may be null
      Returns:
      return value (SAMP-compatible)
      Throws:
      Exception
    • getUrlTranslationHandler

      public HttpServer.Handler getUrlTranslationHandler()
      Returns a handler suitable for performing URL translations on behalf of sandboxed clients as required by the Web Profile.
      Returns:
      url translation handler
    • invokeMethod

      protected Object invokeMethod(Method method, Object obj, Object[] args) throws IllegalAccessException, InvocationTargetException
      Description copied from class: ActorHandler
      Invokes a method reflectively on an object. This method should be implemented in the obvious way, that is return method.invoke(obj,params).

      If the implementation is effectively prescribed, why is this abstract method here? It's tricky. The reason is so that reflective method invocation from this class is done by code within the actor implementation class itself rather than by code in the superclass, ActorHandler. That in turn means that the actorType class specified in the constructor does not need to be visible from ActorHandler's package, only from the package where the implementation class lives.

      Specified by:
      invokeMethod in class ActorHandler
      Parameters:
      method - method to invoke
      obj - object to invoke the method on
      args - arguments for the method call
      Throws:
      IllegalAccessException
      InvocationTargetException
      See Also: