class WebHubXmlRpcHandler extends ActorHandler
Modifier and Type | Class and Description |
---|---|
private static class |
WebHubXmlRpcHandler.Registration
Utility class to aggregate information about a registered client.
|
private static class |
WebHubXmlRpcHandler.URLTranslationHandler
HTTP handler which provides URL translation services for sandboxed
clients.
|
private static class |
WebHubXmlRpcHandler.WebHubActorImpl
WebHubActor implementation.
|
Modifier and Type | Field and Description |
---|---|
private WebHubXmlRpcHandler.WebHubActorImpl |
impl_ |
private static java.util.logging.Logger |
logger_ |
Constructor and Description |
---|
WebHubXmlRpcHandler(ClientProfile profile,
ClientAuthorizer auth,
KeyGenerator keyGen,
java.net.URL baseUrl,
UrlTracker urlTracker)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
HttpServer.Handler |
getUrlTranslationHandler()
Returns a handler suitable for performing URL translations on behalf
of sandboxed clients as required by the Web Profile.
|
java.lang.Object |
handleCall(java.lang.String fqName,
java.util.List params,
java.lang.Object reqObj)
Processes an XML-RPC call.
|
protected java.lang.Object |
invokeMethod(java.lang.reflect.Method method,
java.lang.Object obj,
java.lang.Object[] args)
Invokes a method reflectively on an object.
|
canHandleCall, getActor
private final WebHubXmlRpcHandler.WebHubActorImpl impl_
private static final java.util.logging.Logger logger_
public WebHubXmlRpcHandler(ClientProfile profile, ClientAuthorizer auth, KeyGenerator keyGen, java.net.URL baseUrl, UrlTracker urlTracker)
profile
- hub connection factoryauth
- client authorizerkeyGen
- key generator for private keysbaseUrl
- base URL of HTTP server, used for URL translationurlTracker
- tracks URLs in messages to restrict use in URL
translation service for security reasons; may be null for
no restrictionspublic java.lang.Object handleCall(java.lang.String fqName, java.util.List params, java.lang.Object reqObj) throws java.lang.Exception
SampXmlRpcHandler
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.handleCall
in interface SampXmlRpcHandler
handleCall
in class ActorHandler
fqName
- XML-RPC method nameparams
- XML-RPC parameter list (SAMP-compatible)reqObj
- optional additional request information; may be nulljava.lang.Exception
public HttpServer.Handler getUrlTranslationHandler()
protected java.lang.Object invokeMethod(java.lang.reflect.Method method, java.lang.Object obj, java.lang.Object[] args) throws java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException
ActorHandler
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.
invokeMethod
in class ActorHandler
method
- method to invokeobj
- object to invoke the method onargs
- arguments for the method calljava.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
Method.invoke(java.lang.Object, java.lang.Object...)