Update of /var/cvs/src/org/mmbase/bridge/util
In directory james.mmbase.org:/tmp/cvs-serv1396
Modified Files:
AbstractNode.java
Log Message:
test-case for 'duration' was failing because 'null' in implicitely stored as
-1, even if the field is not required. -1 is not a valid value for duration.
This fixes that
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/bridge/util
Index: AbstractNode.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/bridge/util/AbstractNode.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- AbstractNode.java 17 Oct 2007 12:48:14 -0000 1.22
+++ AbstractNode.java 12 Sep 2008 11:15:26 -0000 1.23
@@ -31,7 +31,7 @@
* here, to minimalize the implementation effort of fully implemented Nodes.
*
* @author Michiel Meeuwissen
- * @version $Id: AbstractNode.java,v 1.22 2007/10/17 12:48:14 michiel Exp $
+ * @version $Id: AbstractNode.java,v 1.23 2008/09/12 11:15:26 michiel Exp $
* @see org.mmbase.bridge.Node
* @since MMBase-1.8
*/
@@ -81,17 +81,33 @@
if (value == null) {
setValueWithoutProcess(fieldName, value);
} else {
- value = field.getDataType().cast(value, this, field);
- switch(field.getDataType().getBaseType()) {
+ DataType dt = field.getDataType();
+ value = dt.cast(value, this, field);
+ if (value == null && dt instanceof
org.mmbase.datatypes.NumberDataType) {
+ // null would otherwise be converted to -1, which makes little
sense.
+ // but must happen because set<Numeric>Value methods cannot
accept null.
+ setValueWithoutProcess(fieldName, value);
+ return;
+ }
+ switch(dt.getBaseType()) {
case Field.TYPE_STRING: setStringValue(fieldName, (String)
value); break;
- case Field.TYPE_INTEGER: setIntValue(fieldName,
Casting.toInt(value)); break;
+ case Field.TYPE_INTEGER:
+ setIntValue(fieldName, Casting.toInt(value));
+ break;
case Field.TYPE_BINARY: {
long length = getSize(fieldName);
- setInputStreamValue(fieldName, Casting.toInputStream(value),
length); break;
+ setInputStreamValue(fieldName, Casting.toInputStream(value),
length);
+ break;
}
- case Field.TYPE_FLOAT: setFloatValue(fieldName,
Casting.toFloat(value)); break;
- case Field.TYPE_DOUBLE: setDoubleValue(fieldName,
Casting.toDouble(value)); break;
- case Field.TYPE_LONG: setLongValue(fieldName,
Casting.toLong(value)); break;
+ case Field.TYPE_FLOAT:
+ setFloatValue(fieldName, Casting.toFloat(value));
+ break;
+ case Field.TYPE_DOUBLE:
+ setDoubleValue(fieldName, Casting.toDouble(value));
+ break;
+ case Field.TYPE_LONG:
+ setLongValue(fieldName, Casting.toLong(value));
+ break;
case Field.TYPE_XML: setXMLValue(fieldName, (Document) value);
break;
case Field.TYPE_NODE: setNodeValue(fieldName,
Casting.toNode(value, getCloud())); break;
case Field.TYPE_DATETIME: setDateValue(fieldName, (Date) value);
break;
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs