You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2007/09/28 05:16:05 UTC

svn commit: r580203 - in /ode/trunk: bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java utils/src/main/java/org/apache/ode/utils/DOMUtils.java

Author: mriou
Date: Thu Sep 27 20:16:04 2007
New Revision: 580203

URL: http://svn.apache.org/viewvc?rev=580203&view=rev
Log:
ODE-188 copies the missing namespace declarations from the context.

Modified:
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
    ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java?rev=580203&r1=580202&r2=580203&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java Thu Sep 27 20:16:04 2007
@@ -467,8 +467,7 @@
             return (lval == ptr) ? replacement :  lval;
         }
 
-        Element replacement = doc.createElementNS(ptr.getNamespaceURI(), ptr
-                .getLocalName());
+        Element replacement = doc.createElementNS(ptr.getNamespaceURI(), ptr.getLocalName());
         NodeList nl = src.getChildNodes();
         for (int i = 0; i < nl.getLength(); ++i)
             replacement.appendChild(doc.importNode(nl.item(i), true));
@@ -476,6 +475,8 @@
         for (int i = 0; i < attrs.getLength(); ++i)
             replacement.setAttributeNodeNS((Attr)doc.importNode(attrs.item(i), true));
         parent.replaceChild(replacement, ptr);
+        DOMUtils.copyNSContext(ptr, replacement);
+        
         return (lval == ptr) ? replacement :  lval;
     }
 

Modified: ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
URL: http://svn.apache.org/viewvc/ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java?rev=580203&r1=580202&r2=580203&view=diff
==============================================================================
--- ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java (original)
+++ ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java Thu Sep 27 20:16:04 2007
@@ -111,6 +111,9 @@
         return sRet;
     }
 
+    /**
+     * @deprecated relies on XMLSerializer which is a deprecated Xerces class, use domToString instead
+     */
     static public String prettyPrint(Element e) throws IOException {
         OutputFormat format = new OutputFormat(e.getOwnerDocument());
         format.setLineWidth(65);
@@ -793,7 +796,24 @@
                 domElement.setAttributeNS(DOMUtils.NS_URI_XMLNS, "xmlns", uri);
             else
                 domElement.setAttributeNS(DOMUtils.NS_URI_XMLNS, "xmlns:"+ prefix, uri);
+        }
+    }
 
+    public static void copyNSContext(Element source, Element dest) {
+        Map<String, String> sourceNS = getParentNamespaces(source);
+        sourceNS.putAll(getMyNamespaces(source));
+        Map<String, String> destNS = getParentNamespaces(dest);
+        destNS.putAll(getMyNamespaces(dest));
+        // (source - dest) to avoid adding twice the same ns on dest
+        for (String pr : destNS.keySet()) sourceNS.remove(pr);
+
+        for (Map.Entry<String, String> entry : sourceNS.entrySet()) {
+            String prefix = entry.getKey();
+            String uri = entry.getValue();
+            if (prefix == null || "".equals(prefix))
+                dest.setAttributeNS(DOMUtils.NS_URI_XMLNS, "xmlns", uri);
+            else
+                dest.setAttributeNS(DOMUtils.NS_URI_XMLNS, "xmlns:"+ prefix, uri);
         }
     }