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