You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2007/12/04 09:42:44 UTC

svn commit: r600837 - /myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/NumberConverter.java

Author: matzew
Date: Tue Dec  4 00:42:43 2007
New Revision: 600837

URL: http://svn.apache.org/viewvc?rev=600837&view=rev
Log:
TRINIDAD-849 fixed currency-string converter issue
(related to MYFACES-1782)

Modified:
    myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/NumberConverter.java

Modified: myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/NumberConverter.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/NumberConverter.java?rev=600837&r1=600836&r2=600837&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/NumberConverter.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/convert/NumberConverter.java Tue Dec  4 00:42:43 2007
@@ -210,13 +210,28 @@
     DecimalFormat df = (DecimalFormat)fmt;
     DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
 
-    //TODO: This guy replaces a bit to much...
-    if (dfs.getGroupingSeparator() == '\u00a0')
-      value = value.replace(' ', '\u00a0');
-         
-
+    // We change the grouping_separator b/c TRINIDAD-849
+    // we parse a second-time, once the first run fails
+    // source is this JDK bug: 4510618.
+    boolean changed = false;
+    if(dfs.getGroupingSeparator() == '\u00a0')
+    {
+      dfs.setGroupingSeparator(' ');
+      df.setDecimalFormatSymbols(dfs);
+      changed = true;
+    }
     ParsePosition pp = new ParsePosition(0);
     Number num = (Number) fmt.parseObject(value,pp);
+    if(changed)
+    {
+      dfs.setGroupingSeparator('\u00a0');
+      df.setDecimalFormatSymbols(dfs);
+    }
+    
+    if(num == null)
+    {
+      num = (Number) fmt.parseObject(value, pp);
+    }
 
     if (pp.getIndex() != value.length())
     {