summaryrefslogtreecommitdiffstats
path: root/Bugzilla/WebService/README
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2009-03-31 08:37:53 +0200
committermkanat%bugzilla.org <>2009-03-31 08:37:53 +0200
commita86ee3a1ca5213d5401c6425cfb0fcfc7bb15e78 (patch)
tree55ad97e67fa4322482f346289c113d211629338a /Bugzilla/WebService/README
parent470f355df99acba2855b97619897d650e8dd09e0 (diff)
downloadbugzilla-a86ee3a1ca5213d5401c6425cfb0fcfc7bb15e78.tar.gz
bugzilla-a86ee3a1ca5213d5401c6425cfb0fcfc7bb15e78.tar.xz
Bug 432907: Create a JSON frontend for WebServices
Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=dkl, a=mkanat
Diffstat (limited to 'Bugzilla/WebService/README')
-rw-r--r--Bugzilla/WebService/README18
1 files changed, 18 insertions, 0 deletions
diff --git a/Bugzilla/WebService/README b/Bugzilla/WebService/README
new file mode 100644
index 000000000..bbe320979
--- /dev/null
+++ b/Bugzilla/WebService/README
@@ -0,0 +1,18 @@
+The class structure of these files is a little strange, and this README
+explains it.
+
+Our goal is to make JSON::RPC and XMLRPC::Lite both work with the same code.
+(That is, we want to have one WebService API, and have two frontends for it.)
+
+The problem is that these both pass different things for $self to WebService
+methods.
+
+When XMLRPC::Lite calls a method, $self is the name of the *class* the
+method is in. For example, if we call Bugzilla.version(), the first argument
+is Bugzilla::WebService::Bugzilla. So in order to have $self
+(our first argument) act correctly in XML-RPC, we make all WebService
+classes use base qw(Bugzilla::WebService).
+
+When JSON::RPC calls a method, $self is the JSON-RPC *server object*. In other
+words, it's an instance of Bugzilla::WebService::Server::JSONRPC. So we have
+Bugzilla::WebService::Server::JSONRPC inherit from Bugzilla::WebService.