Update of /var/cvs/src/org/mmbase/module/core
In directory james.mmbase.org:/tmp/cvs-serv17537
Modified Files:
MMObjectNode.java
Log Message:
log warning if you store non serializables
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/module/core
Index: MMObjectNode.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/module/core/MMObjectNode.java,v
retrieving revision 1.221
retrieving revision 1.222
diff -u -b -r1.221 -r1.222
--- MMObjectNode.java 30 Jun 2008 08:29:33 -0000 1.221
+++ MMObjectNode.java 3 Jul 2008 15:53:58 -0000 1.222
@@ -40,7 +40,7 @@
* @author Eduard Witteveen
* @author Michiel Meeuwissen
* @author Ernst Bunders
- * @version $Id: MMObjectNode.java,v 1.221 2008/06/30 08:29:33 michiel Exp $
+ * @version $Id: MMObjectNode.java,v 1.222 2008/07/03 15:53:58 michiel Exp $
*/
public class MMObjectNode implements org.mmbase.util.SizeMeasurable,
java.io.Serializable {
@@ -457,6 +457,19 @@
}
/**
+ * MMObjectNode's are serializable (which is used by e.g. NodeEvent's). So
all values must be
+ * serializable too.
+ * This methods check that, and logs a warning if not so.
+ * @since MMBase-1.9
+ */
+ protected Object checkSerializable(String fieldName, Object fieldValue) {
+ if (fieldValue != null && (! (fieldValue instanceof Serializable))) {
+ log.warn("Value for " + fieldName + " is not serializable: " +
fieldValue, new Exception());
+ }
+ return fieldValue;
+ }
+
+ /**
* Stores a value in the values hashtable.
* This is a low-level method that circumvents typechecking and the
triggers of extended classes.
* You should normally call [EMAIL PROTECTED] #setValue} to change fields.
@@ -471,6 +484,7 @@
// This is just a hack to make app1 import/export working,
withough exposing the values map.
values.remove(fieldName);
}
+ fieldValue = checkSerializable(fieldName, fieldValue);
if (checkFieldExistance(fieldName)) {
values.put(fieldName, fieldValue);
}
@@ -486,6 +500,7 @@
*/
private void storeOldValue(String fieldName, Object object) {
if (! oldValues.containsKey(fieldName)) {
+ object = checkSerializable(fieldName, object);
oldValues.put(fieldName, object);
}
}
@@ -730,6 +745,7 @@
if(doc != null) {
// store the document inside the field.. much faster...
value = doc;
+ value = checkSerializable(fieldName, value);
values.put(fieldName, value);
} else {
values.put(fieldName, null);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs