Don't hurt me, but why not transfer your long int as a string?
It does get converted to a string for the xmlrpc transfer anyway.
On the server side, you simply return
return "" + longVal
instead of
return longVal
And on the client side, you accept a string... and then Long.parseLong()
There's really no performance problem, and you don't have to create
non-spec implemantions of xmlrpc.
-Jim
> -----Original Message-----
> From: mike marsh [mailto:[EMAIL PROTECTED]]
> Sent: Friday, September 20, 2002 11:28 AM
> To: [EMAIL PROTECTED]
> Subject: Re: cannot marshal ...
>
>
> 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:
> > >
> >
>
>
> __________________________________________________
> Do you Yahoo!?
> New DSL Internet Access from SBC & Yahoo!
> http://sbc.yahoo.com
>