Matt Mower wrote:
Hi folks,
I'm using the Apache XML-RPC 1.2-b1 library to communicate with a
process running on Frontier however the library seems to be improperly
encoding doubles.
According to the spec[1] only standard decimal representation is supported:
At this time, only decimal point notation is allowed, a plus or a
minus, followed by any number of numeric characters, followed by a
period and any number of numeric characters.
However I am occasionally seeing results being passed using scientific
notification:
valuedouble2.059538383036852E-4/double/value
Did I report this to the right place?
I've done a little digging and the problem appears to be in:
org.apache.xmlrpc.XmlWriter#writeObject( Object obj )
where it does:
else if (obj instanceof Double || obj instanceof Float)
{
startElement(double);
write(obj.toString());
endElement(double);
}
My suggested fix is to add a DecimalFormat instance to the class (it
appears to be thread safe so could be added as a static like dateTool)
and use:
else if (obj instanceof Double || obj instanceof Float)
{
startElement(double);
write( decimalFormat.format( obj ) );
endElement(double);
}
I've made this fix to my local copy and, in my limited tests, it seems
to work fine.
There is an issue about precision since you have to specify a pattern to
the DecimalFormat. I rather arbitrarily used
0.0### which was good enough for my purposes (i.e.
I no longer get errors) but probably this is the kind of thing that
should be configurable.
Any thoughts?
Matt
--
Evectors Software
Email:[EMAIL PROTECTED] Web:http://www.evectors.com
Tel:+44-(0)7977-076-709 Blog:http://matt.blogs.it/