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

Reply via email to