Update of /var/cvs/src/org/mmbase/bridge/implementation
In directory james.mmbase.org:/tmp/cvs-serv9026

Modified Files:
      Tag: MMBase-1_8
        BasicNodeManager.java 
Log Message:
part of fix of   MMB-1642 is that the defaultvalue create by use of Cloud is 
also actually used by nodes create through bridge


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/bridge/implementation
See also: http://www.mmbase.org/jira/browse/MMB-1642


Index: BasicNodeManager.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/bridge/implementation/BasicNodeManager.java,v
retrieving revision 1.121.2.4
retrieving revision 1.121.2.5
diff -u -b -r1.121.2.4 -r1.121.2.5
--- BasicNodeManager.java       1 May 2007 15:53:37 -0000       1.121.2.4
+++ BasicNodeManager.java       6 Jun 2008 14:37:56 -0000       1.121.2.5
@@ -38,7 +38,7 @@
  * @author Rob Vermeulen
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: BasicNodeManager.java,v 1.121.2.4 2007/05/01 15:53:37 michiel 
Exp $
+ * @version $Id: BasicNodeManager.java,v 1.121.2.5 2008/06/06 14:37:56 michiel 
Exp $
 
  */
 public class BasicNodeManager extends BasicNode implements NodeManager, 
Comparable {
@@ -238,10 +238,33 @@
         // set the owner to the owner field as indicated by the user
         node.setValue("owner", cloud.getUser().getOwnerField());
 
+        setDefaultsWithCloud(node);
         return new NodeAndId(node, id);
     }
 
     /**
+     * Sometimes default values can only be filled if a cloud is present, 
hence only in the bridge.
+     * This is the counterpart of ${MMObjectBuilder#setDefaults}
+     * @since MMBase-1.8.6
+     */
+    protected void setDefaultsWithCloud(MMObjectNode node) {
+        for (Iterator i = getFields().iterator(); i.hasNext(); ) {
+            Field field = (Field) i.next();
+            if (field.isVirtual())                         continue;
+            if (field.getName().equals(MMObjectBuilder.FIELD_NUMBER))      
continue;
+            if (field.getName().equals(MMObjectBuilder.FIELD_OWNER))       
continue;
+            if (field.getName().equals(MMObjectBuilder.FIELD_OBJECT_TYPE)) 
continue;
+
+            if (node.isNull(field.getName())) {
+                org.mmbase.datatypes.DataType dt = field.getDataType();
+                //log.info("" + field.getName() + " " + dt);
+                Object defaultValue = 
dt.getDefaultValue(getCloud().getLocale(), getCloud(), field);
+                node.setValue(field.getName(), defaultValue);
+            }
+        }
+    }
+
+    /**
      * BasicNodeManager is garantueed to return BasicNode's. So extendsion 
must override this, and not [EMAIL PROTECTED] #createNode}
      * @since MMBase-1.8
      */
@@ -450,6 +473,7 @@
             typerelNodes = 
BasicCloudContext.mmb.getTypeRel().getAllowedRelations(thisOType);
         }
 
+
         List nodes = new ArrayList();
         while (typerelNodes.hasMoreElements()) {
             MMObjectNode n = (MMObjectNode) typerelNodes.nextElement();
@@ -597,5 +621,12 @@
         return new BasicRelationList(Collections.EMPTY_LIST, this);
     }
 
+    /*
+    public String toString() {
+        return "NodeManager " + getName() + "( " + getNode().getNumber() + ")";
+    }
+    */
+
+
 }
 
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to