Update of /var/cvs/src/org/mmbase/datatypes
In directory james.mmbase.org:/tmp/cvs-serv4467

Modified Files:
        NumberDataType.java 
Log Message:
MMB-1700


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/datatypes
See also: http://www.mmbase.org/jira/browse/MMB-1700


Index: NumberDataType.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/NumberDataType.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- NumberDataType.java 11 Aug 2008 15:51:02 -0000      1.28
+++ NumberDataType.java 12 Aug 2008 16:11:36 -0000      1.29
@@ -22,7 +22,7 @@
  * A DataType representing some kind of numeric value, like a floating point 
number or an integer number.
  *
  * @author Pierre van Rooden
- * @version $Id: NumberDataType.java,v 1.28 2008/08/11 15:51:02 michiel Exp $
+ * @version $Id: NumberDataType.java,v 1.29 2008/08/12 16:11:36 michiel Exp $
  * @since MMBase-1.8
  */
 abstract public class NumberDataType<E extends Number&Comparable<E>> extends 
ComparableDataType<E> {
@@ -44,10 +44,19 @@
              ParsePosition p = new ParsePosition(0);
              String s = (String) preCast;
              Number number =  nf.parse(s, p);
-             log.info("Parsing " + preCast + " -> " + number);
-             if (p.getIndex() < s.length()) throw new CastException("Not a 
number: " + preCast);
+             if (log.isDebugEnabled()) {
+                 log.debug("Parsed " + s + " to " + number + " (" + p + " " + 
l);
+             }
+             if (p.getIndex() < s.length() || p.getErrorIndex() >= 0) {
+                 log.debug("Not correct, falling back to toDouble");
+                 if (! StringDataType.DOUBLE_PATTERN.matcher((String) 
preCast).matches()) {
+                     throw new CastException("Not a number: " + preCast);
+                 }
+                 return Casting.toDouble(preCast);
+             }
              return number;
          }
+
          return Casting.toDouble(preCast); // this makes it e.g. possible to 
report that 1e20 is too big for an integer.
      }
 
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to