Author: michiel
Date: 2009-09-15 10:16:58 +0200 (Tue, 15 Sep 2009)
New Revision: 38627
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/module/core/MMObjectBuilder.java
Log:
some assertions, and added a remark about the 'not-null' code in setDefaults
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/module/core/MMObjectBuilder.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/module/core/MMObjectBuilder.java
2009-09-15 07:54:20 UTC (rev 38626)
+++ mmbase/trunk/core/src/main/java/org/mmbase/module/core/MMObjectBuilder.java
2009-09-15 08:16:58 UTC (rev 38627)
@@ -668,6 +668,8 @@
*/
public boolean commit(MMObjectNode node) {
if (node.getOldBuilder() != null) {
+ assert node.getNumber() > 0;
+ assert node.getIntValue("otype") > 0;
mmb.getStorageManager().setNodeType(node, node.getBuilder());
}
mmb.getStorageManager().change(node);
@@ -826,7 +828,7 @@
return node;
}
/**
- * Sets defaults for a node. Fields "number", "owner" and "otype" are not
set by this method.
+ * Sets defaults for a node. Fields "number", "owner" and "otype", 'node'
typed fields and virtual fields are not set by this method.
* @param node The node to set the defaults of.
*/
public void setDefaults(MMObjectNode node) {
@@ -839,7 +841,12 @@
DataType dt = field.getDataType();
Object defaultValue = dt.getDefaultValue(null, null, field);
+
if ((defaultValue == null) && field.isNotNull()) {
+ // This makes the value non-null if that may not be stored in
the database because the field is 'not null'.
+ // This more or less break value-validation on 'required'.
+ // I suggest that this is moved to the database layer itself.
+
Class clazz = Fields.typeToClass(field.getType());
if (clazz != null) {
defaultValue = Casting.toType(clazz, null, "");
@@ -847,6 +854,7 @@
log.warn("No class found for type of " + field);
}
}
+
node.setValue(field.getName(), defaultValue);
}
}
@@ -1031,7 +1039,8 @@
if (node.getNumber() > 0 ) {
nodeCache.remove(node.getNumber());
}
-
+ assert node.getIntValue("otype") > 0;
+ assert node.getNumber() > 0;
res = node.commit();
} finally {
synchronized(nodeCache) {
@@ -1237,6 +1246,7 @@
return Collections.unmodifiableSet(fields.keySet());
}
+
/**
* Return a field's definition
* @param fieldName the requested field's name
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs