Well, shame on the Zope developers :) Seriously, if you are interested in changing the code your best bet is to: 1) subscribe to the Xml-Rpc-Dev mailing list, 2) get the latest code from CVS, and 3) start hacking
You might start with the XmlRpc base class, as that is where the data types are defined. Ryan Hoegg ISIS Networks mike marsh wrote: >Hi Ryan, > >Part of the problem is that I don't do the maintenance >of the Zope server code. Someone else does that. >Another person is using a python XmlRpc client to >connect to the Zope server, and his code can interpret >the "long int" without a problem. > >I read the XmlRpc Types page on the xml.apache.org >website. And I see that there is no definition for >"long int". I suppose that Zope's XmlRpc server has >extended the spec to include "long int", so I need to >know how to hack the XmlRpc classes so that they can >parse "long int". > >thanks, >mike > >--- Ryan Hoegg <[EMAIL PROTECTED]> wrote: > > >>Hi Mike, >> >>You may want to read the XML-RPC spec at >>http://www.xmlrpc.com/spec for >>more information on the data types supported by >>XML-RPC. In the "Scalar >><value>s" section, it says that integers are "four >>byte signed integers" >>and are denoted by <i4> or <int>. Further down in >>the 1/21/99 update, >>specific questions about allowable ranges for int >>and double are >>mentioned. It says that int is strictly defined as >>32 bit, while double >>is "implementation-dependent". >> >>It seems to me that your options are to somehow pack >>your large numbers >>into the other data types (string or several ints) >>or to use a different >>web services protocol like SOAP. >> >>If it was my project I might try using the packed >>int approach, i.e. 4 >>32 bit ints are packed to make a single 128 bit int. >> You could put them >>in a struct or a vector, the advantage of the struct >>being that you can >>explicitly name them "int-byte1", "int-byte2", etc. >> >>-- >>Ryan Hoegg >>ISIS Networks >> >>mike marsh wrote: >> >> >> >>>I learned about XMLRPC only a few days ago, so if >>> >>> >>it >> >> >>>sounds like I don't know what I'm talking about >>>then...I don't. >>> >>>MY QUESTION: >>>I think I want to know how to make my XmlRpcClient >>>understand <value><long int> 1524335 </long >>>int></value>. >>> >>>MY SITUATION: >>>I need to connect to a Zope database via XmlRpc. I >>>try calling a particular method, but an >>>XmlRpcException gets thrown. The exception string >>>says "cannot marshal <type 'long int'>. I suppose >>> >>> >>I >> >> >>>need an XmlRpc parser that can interpret <long int> >>>and create a Long object. Can someone tell me how >>> >>> >>to >> >> >>>modifiy org.apache.xml.XmlRpc.java? >>> >>>Below is some more info that may help explain my >>>problem. >>> >>>Thanks in advance, >>>mike >>> >>>STACK TRACE: >>>My code generates the following stack trace. >>>org.apache.xmlrpc.XmlRpcException: Unexpected Zope >>>exception: cannot marshal <type 'long int'> objects >>> at >>> >>> >>org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java:414) >> >> >>> at >>> >>> >>org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:149) >> >> >>> at >>>ncmi.dbclient.DBClient.query(DBClient.java:42) >>> at >>> >>> >>ncmi.dbclient.Browser.main(Browser.java:91) >> >> >>>Client calling procedure >>>'EMDB.Groups.Group_1.Project_59.Microscopy.values' >>>with parameters [] >>>Beginning parsing XML input stream >>>startElement: methodResponse >>>startElement: value >>>startElement: struct >>>startElement: member >>>startElement: name >>>endElement: name >>>startElement: value >>>startElement: int >>>endElement: int >>>endElement: value >>>endElement: member >>>startElement: member >>>startElement: name >>>endElement: name >>>startElement: value >>>startElement: string >>>endElement: string >>>endElement: value >>>endElement: member >>>endElement: struct >>>endElement: value >>>endElement: fault >>>endElement: methodResponse >>>DEBUG: >>>
