[jboss-svn-commits] JBoss Common SVN: r2849 - in jbossxb/branches/1_0/src: test/java/org/jboss/test/xml and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu May 22 12:56:40 EDT 2008
Author: darran.lofthouse at jboss.com
Date: 2008-05-22 12:56:40 -0400 (Thu, 22 May 2008)
New Revision: 2849
Modified:
jbossxb/branches/1_0/src/main/java/org/jboss/xb/binding/SimpleTypeBindings.java
jbossxb/branches/1_0/src/test/java/org/jboss/test/xml/SoapEncUnitTestCase.java
Log:
[JBXB-141] xsd:double marshalled in exponential form.
Modified: jbossxb/branches/1_0/src/main/java/org/jboss/xb/binding/SimpleTypeBindings.java
===================================================================
--- jbossxb/branches/1_0/src/main/java/org/jboss/xb/binding/SimpleTypeBindings.java 2008-05-22 16:53:08 UTC (rev 2848)
+++ jbossxb/branches/1_0/src/main/java/org/jboss/xb/binding/SimpleTypeBindings.java 2008-05-22 16:56:40 UTC (rev 2849)
@@ -200,7 +200,7 @@
public String marshal(Object value)
{
- return String.valueOf(value);
+ return marshallDouble((Double)value);
}
};
@@ -1079,19 +1079,7 @@
}
else if(typeCode == XS_DOUBLE)
{
- Double d = (Double)value;
- if(d.doubleValue() == Double.POSITIVE_INFINITY)
- {
- result = "INF";
- }
- else if(d.doubleValue() == Double.NEGATIVE_INFINITY)
- {
- result = "-INF";
- }
- else
- {
- result = d.toString();
- }
+ result = marshallDouble((Double)value);
}
else if(typeCode == XS_BOOLEAN)
{
@@ -2259,6 +2247,31 @@
return result;
}
+ private static String marshallDouble(Double d)
+ {
+ String result;
+ if(d.doubleValue() == Double.POSITIVE_INFINITY)
+ {
+ result = "INF";
+ }
+ else if(d.doubleValue() == Double.NEGATIVE_INFINITY)
+ {
+ result = "-INF";
+ }
+ else
+ {
+ DecimalFormat df = new DecimalFormat();
+ df.setGroupingUsed(false);
+ df.setMinimumFractionDigits(1);
+ df.setMaximumFractionDigits(18);
+ df.setMinimumIntegerDigits(1);
+ df.setMaximumIntegerDigits(18);
+
+ result = df.format(d.doubleValue());
+ }
+ return result;
+ }
+
private static char convertDigit(int value)
{
value &= 0x0f;
Modified: jbossxb/branches/1_0/src/test/java/org/jboss/test/xml/SoapEncUnitTestCase.java
===================================================================
--- jbossxb/branches/1_0/src/test/java/org/jboss/test/xml/SoapEncUnitTestCase.java 2008-05-22 16:53:08 UTC (rev 2848)
+++ jbossxb/branches/1_0/src/test/java/org/jboss/test/xml/SoapEncUnitTestCase.java 2008-05-22 16:56:40 UTC (rev 2849)
@@ -29,7 +29,6 @@
import java.math.BigInteger;
import java.net.URL;
import java.util.Calendar;
-import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Arrays;
import java.util.TimeZone;
@@ -93,7 +92,7 @@
"<varShort>-32768</varShort>" +
"<varDecimal>3512359.1456</varDecimal>" +
"<varFloat>1.4E-45</varFloat>" +
- "<varDouble>4.9E-324</varDouble>" +
+ "<varDouble>0.0000000000000001</varDouble>" +
"<varBoolean>false</varBoolean>" +
"<varByte>-128</varByte>" +
"<varQName xmlns=\"\">String2</varQName>" +
@@ -101,7 +100,7 @@
"<varSoapString>String3</varSoapString>" +
"<varSoapBoolean>false</varSoapBoolean>" +
"<varSoapFloat>1.4E-45</varSoapFloat>" +
- "<varSoapDouble>4.9E-324</varSoapDouble>" +
+ "<varSoapDouble>0.0000000000000001</varSoapDouble>" +
"<varSoapDecimal>3512359.1111</varSoapDecimal>" +
"<varSoapInt>-2147483648</varSoapInt>" +
"<varSoapShort>-32768</varSoapShort>" +
@@ -199,7 +198,7 @@
struct.setVarShort((short)Short.MIN_VALUE);
struct.setVarDecimal(new BigDecimal("3512359.1456"));
struct.setVarFloat((float)Float.MIN_VALUE);
- struct.setVarDouble((double)Double.MIN_VALUE);
+ struct.setVarDouble(0.0000000000000001);
struct.setVarBoolean(false);
struct.setVarByte((byte)Byte.MIN_VALUE);
struct.setVarQName(new QName("String2"));
@@ -220,7 +219,7 @@
struct.setVarSoapString("String3");
struct.setVarSoapBoolean(new Boolean(false));
struct.setVarSoapFloat(new Float(Float.MIN_VALUE));
- struct.setVarSoapDouble(new Double(Double.MIN_VALUE));
+ struct.setVarSoapDouble(new Double(0.0000000000000001));
struct.setVarSoapDecimal(new BigDecimal("3512359.1111"));
struct.setVarSoapInt(new Integer(Integer.MIN_VALUE));
struct.setVarSoapShort(new Short(Short.MIN_VALUE));
More information about the jboss-svn-commits
mailing list