Author: tmortagne
Date: 2008-01-30 15:00:08 +0100 (Wed, 30 Jan 2008)
New Revision: 7198
Modified:
xwiki-platform/xwiki-plugins/trunk/application-manager/src/main/java/com/xpn/xwiki/plugin/applicationmanager/core/doc/objects/classes/DefaultXObjectDocument.java
Log:
XAAM-53: DefaultXObjectDocument.mergeObject does not overwrite fields that are
not null
Modified:
xwiki-platform/xwiki-plugins/trunk/application-manager/src/main/java/com/xpn/xwiki/plugin/applicationmanager/core/doc/objects/classes/DefaultXObjectDocument.java
===================================================================
---
xwiki-platform/xwiki-plugins/trunk/application-manager/src/main/java/com/xpn/xwiki/plugin/applicationmanager/core/doc/objects/classes/DefaultXObjectDocument.java
2008-01-30 13:37:28 UTC (rev 7197)
+++
xwiki-platform/xwiki-plugins/trunk/application-manager/src/main/java/com/xpn/xwiki/plugin/applicationmanager/core/doc/objects/classes/DefaultXObjectDocument.java
2008-01-30 14:00:08 UTC (rev 7198)
@@ -20,14 +20,16 @@
package com.xpn.xwiki.plugin.applicationmanager.core.doc.objects.classes;
+import java.util.Iterator;
import java.util.List;
import com.xpn.xwiki.XWikiContext;
import com.xpn.xwiki.XWikiException;
import com.xpn.xwiki.api.Document;
-import com.xpn.xwiki.api.Object;
import com.xpn.xwiki.doc.XWikiDocument;
+import com.xpn.xwiki.objects.BaseElement;
import com.xpn.xwiki.objects.BaseObject;
+import com.xpn.xwiki.objects.PropertyInterface;
/**
* Default implementation of XObjectDocument. This class manage an XWiki
document containing
@@ -159,7 +161,7 @@
*
* @see
com.xpn.xwiki.plugin.applicationmanager.core.doc.objects.classes.XObjectDocument#getObjectApi()
*/
- public Object getObjectApi()
+ public com.xpn.xwiki.api.Object getObjectApi()
{
BaseObject obj = getBaseObject(false);
@@ -186,7 +188,8 @@
}
/**
- * Merge two documents BaseObject.
+ * Overwrite current BaseObject fields with provided one. Only provided
non null fields are
+ * copied.
*
* @param sdoc the document to merge.
*/
@@ -196,7 +199,17 @@
return;
}
- getBaseObject(true).merge(sdoc.getBaseObject(false));
+ BaseObject obj1 = getBaseObject(true);
+ BaseObject obj2 = sdoc.getBaseObject(false);
+
+ for (Iterator it = obj1.getPropertyList().iterator(); it.hasNext();) {
+ String fieldName = (String) it.next();
+ Object fieldValue2 = obj2.safeget(fieldName);
+
+ if (fieldValue2 != null) {
+ obj1.safeput(fieldName, (PropertyInterface) ((BaseElement)
fieldValue2).clone());
+ }
+ }
}
/**
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications