xmlrcp - how to marshall objects

Adam Tauno Williams awilliam at opengroupware.us
Fri Feb 5 21:15:42 CET 2010


On Fri, 2010-02-05 at 18:24 +0100, Jean-Michel Pichavant wrote:
> Jean-Michel Pichavant wrote:
> > Deos anyone knows where to find an code sample describing how to 
> > implement the interface to marshall one object into XMLRPC compliant 
> > structures ?
> > I googled without any success, and what google does not find does not 
> > exist.
> > Let say I have this very simple class:
> > class Point:
> >    def __init__(self, x, y):
> >    self.x = x
> >    self.y = y
> > I've looked into xmlrpc code, I see  2 options:
> > 1/ override the Marshaller class of client and server
> > 2/ looks like the lib is supporting a WRAPPER list system, it uses to 
> > Marshall Datetime & Binary object. Can it be possible to add its own 
> > class (could require to emplement the 'encode' method)
> > I sense I will spend much more time than required unless someone is 
> > pointing me in the right direction.
> I realized I gave a poor example, actually the Point object is marshable 
> (marshallable ? like to invent new words), xmlrpc will try to marshall 
> using __dict__ if possible.
> import os
> class Point:
>    def __init__(self, x, y):
>    self.x = x
>    self.y = y
>    self.notMarshallable = os

This example doesn't make any sense.  Why would you set a variable equal
to an important module in a class named Point?

What is it you are actually trying to accomplish?  If you are trying to
create an object publishing environment then maybe something like -

rpc = xmlrpclib.loads(payload, use_datetime=True)
method = rpc[1].split('.')
classname   = method[0]
methodname = method[1]
parameters  = rpc[0]
classclass = eval(classname)
handler = classclass()
call = getattr(handler, method_name)
result = apply(call, parameters)
result = xmlrpclib.dumps(tuple([result]), methodresponse=True)

Obviously add copious amounts of exception handling and a security
model.
-- 
OpenGroupware developer: awilliam at whitemice.org
<http://whitemiceconsulting.blogspot.com/>
OpenGroupare & Cyrus IMAPd documenation @
<http://docs.opengroupware.org/Members/whitemice/wmogag/file_view>




More information about the Python-list mailing list