Update of /var/cvs/applications/richtext/src/org/mmbase/richtext/processors/xml
In directory james.mmbase.org:/tmp/cvs-serv4849
Modified Files:
Wiki.java
Log Message:
made it work beter in transactions
See also:
http://cvs.mmbase.org/viewcvs/applications/richtext/src/org/mmbase/richtext/processors/xml
Index: Wiki.java
===================================================================
RCS file:
/var/cvs/applications/richtext/src/org/mmbase/richtext/processors/xml/Wiki.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- Wiki.java 10 Jun 2008 11:35:19 -0000 1.13
+++ Wiki.java 15 Jul 2008 10:00:59 -0000 1.14
@@ -29,7 +29,7 @@
* id of the node).
*
* @author Michiel Meeuwissen
- * @version $Id: Wiki.java,v 1.13 2008/06/10 11:35:19 michiel Exp $
+ * @version $Id: Wiki.java,v 1.14 2008/07/15 10:00:59 michiel Exp $
* @todo something goes wrong if same node relation multiple times.
*/
@@ -153,6 +153,7 @@
*
*/
Document parse(Node editedNode, Field field, Document source) {
+ Cloud cloud = editedNode.getCloud();
String fieldName = field.getName();
Set<String> usedIds = new HashSet<String>();
@@ -162,10 +163,18 @@
log.debug("Resolving " + editedNode + " " +
XMLWriter.write(source, true));
}
- Cloud cloud = editedNode.getCloud();
+
+ // In a transaction, the query will not return our new nodes.
+ // Administrate related idrels ourselves.
+ NodeList createdLinks = (NodeList) cloud.getProperty("createdlinks");
+ if (createdLinks == null) {
+ createdLinks = cloud.createNodeList();
NodeManager objects = cloud.getNodeManager("object");
NodeQuery q = Queries.createRelationNodesQuery(editedNode, objects,
"idrel", "destination");
NodeList links = cloud.getNodeManager("idrel").getList(q);
+ createdLinks.addAll(links);
+ cloud.setProperty("createdlinks", createdLinks);
+ }
// search all anchors
org.w3c.dom.NodeList as = source.getElementsByTagName("*");
@@ -179,7 +188,7 @@
a.removeAttribute("class");
String id = a.getAttribute("id");
if ("".equals(id)) continue;
- Node link = findById(a, links, fieldName, usedIds);
+ Node link = findById(a, createdLinks, fieldName, usedIds);
if (link == null) {
log.service("No relation found with id '" + id + "'.
Implicitely creating one now.");
@@ -191,6 +200,7 @@
newRel.setStringValue("id", decoratedId);
newRel.setStringValue("class", className);
newRel.commit();
+ createdLinks.add(newRel);
a.setAttribute("id", decoratedId);
usedIds.add(decoratedId);
} catch (Exception e) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs