You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ti...@apache.org on 2004/09/10 21:11:19 UTC

svn commit: rev 43685 - cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding

Author: tim
Date: Fri Sep 10 12:11:18 2004
New Revision: 43685

Modified:
   cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/TempRepeaterJXPathBinding.java
Log:
Fix TempRepeaterBinding's virtual-rows to not forget namespaces.
(Step 2: also fix the "save" direction.)


Modified: cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/TempRepeaterJXPathBinding.java
==============================================================================
--- cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/TempRepeaterJXPathBinding.java	(original)
+++ cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/TempRepeaterJXPathBinding.java	Fri Sep 10 12:11:18 2004
@@ -22,6 +22,7 @@
 import org.apache.cocoon.forms.formmodel.Widget;
 import org.apache.commons.jxpath.JXPathContext;
 import org.apache.commons.jxpath.Pointer;
+import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
@@ -136,10 +137,10 @@
                     Node virtualNode = repeaterNode.getOwnerDocument().createElementNS(null, "virtual");
                     Node node = (Node)rowPointer.getNode();
                     Node clone = node.cloneNode(true);
-                    Node docElement = node.getOwnerDocument().getDocumentElement().cloneNode(false);
+                    Node fakeDocElement = node.getOwnerDocument().getDocumentElement().cloneNode(false);
                     virtualNode.appendChild(clone);
-                    docElement.appendChild(virtualNode);
-                    rowContext = JXPathContext.newContext(repeaterContext, docElement);
+                    fakeDocElement.appendChild(virtualNode);
+                    rowContext = JXPathContext.newContext(repeaterContext, fakeDocElement);
                     rowContext = rowContext.getRelativeContext(rowContext.getPointer("virtual"));
                 }
 
@@ -194,8 +195,12 @@
                         // narrow the context to this initially empty new virtual row.
                         if (virtualRows == true) {
                             rowNode = (Node)rowContext.getContextBean();
-                            virtualNode = rowNode.getOwnerDocument().createElementNS(null, "virtual");
-                            rowContext = JXPathContext.newContext(repeaterContext, virtualNode);
+                            Document document = rowNode.getOwnerDocument();
+                            virtualNode = document.createElementNS(null, "virtual");
+                            Node fakeDocElement = document.getDocumentElement().cloneNode(false);
+                            fakeDocElement.appendChild(virtualNode);
+                            rowContext = JXPathContext.newContext(repeaterContext, fakeDocElement);
+                            rowContext = rowContext.getRelativeContext(rowContext.getPointer("virtual"));
                         }
 
                         // Perform the insert row binding