Hi Dirk,
Well, I've now spent quite a lot of time trying to get this to work, to no
avail.
I've tried this within a plugin, then when I was unable to get that to work
I went
ahead and spot-modified a JSP to include a direct AJAX call. I was
successful
in emulating the existing search.findPages call, but when I transferred
that same
method signature to my own code (i.e., in my own package) it failed, with
the
same JSON error message I have always seen. I'm registering my own global
class (which implements RPCCallable in the same way as SearchManager)
but it just doesn't seem to be able to locate the globally-registered
object. My
package is part of the jars available to JSPWiki, as demonstrably other
plugins
from that jar work fine. I've even created a new class within the JSPWiki
package
hierarchy and tried that from within my JSP/AJAX test bed but still no
luck.
So I'm at a loss.
To recap what I'm doing (unsuccessfully), I've created a JSONRPCTarget
class (either within my own or JSPWiki's package hierarchy), which I then
register via:
JSONRPCTarget target = new JSONRPCTarget();
JSONRPCManager.registerGlobalObject("blah",target);
It contains a method similar to SearchManager#findPages() called respond()
which returns a List, that I call via
var qv = 'foo';
Wiki.jsonrpc( 'blah.respond', [qv,5], function(result,exception) {
if ( !result.list ) {
return;
}
...
}
And it so far always hits that return statement, with the same error
message:
{"id":10000,"error":{"code":591,"msg":"method not found (session may have
timed out)"}}
I thought for awhile that I might be a victim of the intermixing of
Mootools and
jQuery, but I've given up trying to use any jQuery within the JSPWiki
environment
(which is a problem for our plans for the next few months but that's a
different
issue), so this is either some problem with how the registry works or my
ignorance
in how this is supposed to work. Given I've tried so many different
alternatives
I'm at this point giving up, frustrated. Why this doesn't work remains a
complete
mystery to me. I'm obviously missing *something* fundamental here, but I've
discussed this with a couple of people and none of us understands why this
isn't
working.
What I'm wondering is if I could trouble you to look at the RPCSamplePlugin
and
see if you could get it to work. In theory it's supposed to be very simple.
It currently
uses the registerJSONObject() method in the JSONRPCManager, which is known
to be broken (as it references the previously discussed, unavailable
JSONRpcClient).
If it were possible to get the RPCSamplePlugin to work using the global
registry
then it could be a functioning sample, something it currently isn't. And I
could then
use that as a model for what I'm doing.
Thanks,
Ichiro