Hello.  Currently, XMLRPCServlet catches any exception in a service
method and wraps it in a Fault object with faultCode forced to 1.
This seems... wrong.  The whole point of having fault codes is that
you can flag error conditions to the caller in an easy-to-parse way.
I suggest something like the following be applied to XMLRPCServlet.py;
it allows your service method to raise a Fault directly, in which case
it's marshalled back unmolested.

[diff begins]
diff -d -c -r1.3 XMLRPCServlet.py
*** XMLRPCServlet.py    3 Mar 2003 03:27:53 -0000       1.3
--- XMLRPCServlet.py    11 Jan 2004 02:24:19 -0000
***************
*** 44,49 ****
--- 44,53 ----
                                        response = self.call(method, *params)
                                if type(response) != type(()):
                                        response = (response,)
+                       except xmlrpclib.Fault, fault:
+                               response = xmlrpclib.dumps(fault, encoding=encoding)
+                               self.sendOK('text/xml', response, transaction)
+                               self.handleException(transaction)
                        except Exception, e:
                                fault = self.resultForException(e, transaction)
                                response = xmlrpclib.dumps(xmlrpclib.Fault(1, fault), 
encoding=encoding)
[diff ends]
~


-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
Webware-discuss mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/webware-discuss

Reply via email to