Update of /var/cvs/src/org/mmbase/bridge/implementation
In directory james.mmbase.org:/tmp/cvs-serv9097
Modified Files:
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.134
retrieving revision 1.135
diff -u -b -r1.134 -r1.135
--- BasicNodeManager.java 12 Apr 2008 11:18:09 -0000 1.134
+++ BasicNodeManager.java 6 Jun 2008 14:38:59 -0000 1.135
@@ -38,7 +38,7 @@
* @author Rob Vermeulen
* @author Pierre van Rooden
* @author Michiel Meeuwissen
- * @version $Id: BasicNodeManager.java,v 1.134 2008/04/12 11:18:09 michiel Exp
$
+ * @version $Id: BasicNodeManager.java,v 1.135 2008/06/06 14:38:59 michiel Exp
$
*/
public class BasicNodeManager extends BasicNode implements NodeManager {
@@ -240,10 +240,34 @@
// 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
*/
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs