Author: jcompagner Date: Fri Mar 7 13:58:23 2008 New Revision: 634836 URL: http://svn.apache.org/viewvc?rev=634836&view=rev Log: WICKET-1395
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/convert/converters/BigDecimalConverter.java wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/convert/converters/ConvertersTest.java Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/convert/converters/BigDecimalConverter.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/convert/converters/BigDecimalConverter.java?rev=634836&r1=634835&r2=634836&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/convert/converters/BigDecimalConverter.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/convert/converters/BigDecimalConverter.java Fri Mar 7 13:58:23 2008 @@ -17,7 +17,6 @@ package org.apache.wicket.util.convert.converters; import java.math.BigDecimal; -import java.text.NumberFormat; import java.util.Locale; /** @@ -40,39 +39,30 @@ if (value == null || value.trim().equals("")) return null; - NumberFormat format = getNumberFormat(locale); - try + final Number number = parse(value, -Double.MAX_VALUE, Double.MAX_VALUE, locale); + if (number instanceof BigDecimal) { - Number number = format.parse(value); - if (number instanceof BigDecimal) - { - return number; - } - else if (number instanceof Double) - { - return new BigDecimal(number.doubleValue()); - } - else if (number instanceof Long) - { - return new BigDecimal(number.longValue()); - } - else if (number instanceof Float) - { - return new BigDecimal(number.floatValue()); - } - else if (number instanceof Integer) - { - return new BigDecimal(number.intValue()); - } - else - { - return new BigDecimal(value); - } + return number; } - catch (Exception e) + else if (number instanceof Double) { - throw newConversionException("Cannot parse '" + value + "' using format " + format, - value, locale).setFormat(format); + return new BigDecimal(number.doubleValue()); + } + else if (number instanceof Long) + { + return new BigDecimal(number.longValue()); + } + else if (number instanceof Float) + { + return new BigDecimal(number.floatValue()); + } + else if (number instanceof Integer) + { + return new BigDecimal(number.intValue()); + } + else + { + return new BigDecimal(value); } } } Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/convert/converters/ConvertersTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/convert/converters/ConvertersTest.java?rev=634836&r1=634835&r2=634836&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/convert/converters/ConvertersTest.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/convert/converters/ConvertersTest.java Fri Mar 7 13:58:23 2008 @@ -16,6 +16,7 @@ */ package org.apache.wicket.util.convert.converters; +import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; import java.util.Locale; @@ -61,11 +62,11 @@ { final IConverterLocator converter = new ConverterLocator(); assertEquals("7", converter.getConverter(Integer.class).convertToString(new Integer(7), - Locale.US)); + Locale.US)); assertEquals("7.1", converter.getConverter(Double.class).convertToString(new Double(7.1), - Locale.US)); + Locale.US)); assertEquals("7,1", converter.getConverter(Double.class).convertToString(new Double(7.1), - DUTCH_LOCALE)); + DUTCH_LOCALE)); Calendar cal = Calendar.getInstance(DUTCH_LOCALE); cal.clear(); @@ -73,9 +74,9 @@ Date date = cal.getTime(); assertEquals(date, converter.getConverter(Date.class).convertToObject("24-10-02", - DUTCH_LOCALE)); + DUTCH_LOCALE)); assertEquals("24-10-02", converter.getConverter(Date.class).convertToString(date, - DUTCH_LOCALE)); + DUTCH_LOCALE)); // empty strings should return null, NOT throw NPEs assertNull(converter.getConverter(Integer.class).convertToObject("", Locale.US)); @@ -87,8 +88,21 @@ assertNull(converter.getConverter(Date.class).convertToObject("", Locale.US)); assertNull(converter.getConverter(Double.class).convertToObject("", Locale.US)); assertEquals(Boolean.FALSE, converter.getConverter(Boolean.class).convertToObject("", - Locale.US)); + Locale.US)); assertNotNull(converter.getConverter(String.class).convertToObject("", Locale.US)); + } + + /** + * @throws Exception + */ + public void testThousandSeperator() throws Exception + { + BigDecimalConverter bdc = new BigDecimalConverter(); + assertEquals(new BigDecimal(3000), bdc.convertToObject("3 000", Locale.FRENCH)); + + DoubleConverter dc = new DoubleConverter(); + assertEquals(new Double(3000), dc.convertToObject("3 000", Locale.FRENCH)); + } /**