Author: karthick
Date: Tue Mar  3 22:14:38 2009
New Revision: 749796

URL: http://svn.apache.org/viewvc?rev=749796&view=rev
Log:
ODE-536 Clone nodes using fool-proof utility method.

Modified:
    
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/wsdl/BpelExtensionSerializer.java
    
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
    
ode/branches/APACHE_ODE_1.X/jbi/src/main/java/org/apache/ode/jbi/msgmap/DocLitMapper.java
    
ode/branches/APACHE_ODE_1.X/utils/src/main/java/org/apache/ode/utils/DOMUtils.java

Modified: 
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/wsdl/BpelExtensionSerializer.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/wsdl/BpelExtensionSerializer.java?rev=749796&r1=749795&r2=749796&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/wsdl/BpelExtensionSerializer.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/wsdl/BpelExtensionSerializer.java
 Tue Mar  3 22:14:38 2009
@@ -133,7 +133,7 @@
     Node n = el.getParentNode();
     if (n == null || n.getNodeType() != Node.ELEMENT_NODE) {
       WSDLException we = new WSDLException(WSDLException.OTHER_ERROR,
-          
__msgs.msgCannotBeDocumentRootElement(DOMUtils.getElementQName(el).toString()));
+          
__msgs.msgCannotBeDocumentRootElement(DOMUtils.getNodeQName(el).toString()));
       we.setLocation(XPathUtils.getXPathExprFromNode(el));
       throw we;
     }
@@ -142,7 +142,7 @@
       || !def.getLocalName().equals(DOMUtils.WSDL_ROOT_ELEMENT))
     {
       WSDLException we =  new WSDLException(WSDLException.OTHER_ERROR,
-          __msgs.msgMustBeChildOfDef(DOMUtils.getElementQName(el).toString()));
+          __msgs.msgMustBeChildOfDef(DOMUtils.getNodeQName(el).toString()));
       we.setLocation(XPathUtils.getXPathExprFromNode(el));
       throw we;
     }

Modified: 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java?rev=749796&r1=749795&r2=749796&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
 Tue Mar  3 22:14:38 2009
@@ -483,10 +483,11 @@
             return (lval == ptr) ? replacement :  lval;
         }
 
-        Element replacement = doc.createElementNS(ptr.getNamespaceURI(), 
ptr.getLocalName());
+        QName ptrQName = DOMUtils.getNodeQName(ptr);
+        Element replacement = doc.createElementNS(ptrQName.getNamespaceURI(), 
ptrQName.getLocalPart());
         NodeList nl = src.getChildNodes();
         for (int i = 0; i < nl.getLength(); ++i)
-            replacement.appendChild(doc.importNode(nl.item(i), true));
+               replacement.appendChild(DOMUtils.cloneNode(doc, nl.item(i)));
         NamedNodeMap attrs = src.getAttributes();
         for (int i = 0; i < attrs.getLength(); ++i) {
             Attr attr = (Attr)attrs.item(i);

Modified: 
ode/branches/APACHE_ODE_1.X/jbi/src/main/java/org/apache/ode/jbi/msgmap/DocLitMapper.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/jbi/src/main/java/org/apache/ode/jbi/msgmap/DocLitMapper.java?rev=749796&r1=749795&r2=749796&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/jbi/src/main/java/org/apache/ode/jbi/msgmap/DocLitMapper.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/jbi/src/main/java/org/apache/ode/jbi/msgmap/DocLitMapper.java
 Tue Mar  3 22:14:38 2009
@@ -67,7 +67,7 @@
       return Recognized.FALSE;
     }
 
-    QName elName = DOMUtils.getElementQName(msg);
+    QName elName = DOMUtils.getNodeQName(msg);
 
     // If the message element matches the single part element, then
     // we are using doc-lit style messaging.
@@ -130,7 +130,7 @@
     assert partdef.getElementName() != null : "non-element part!";
     
     Element el = parse(nmsMsg.getContent());
-    if (!DOMUtils.getElementQName(el).equals(partdef.getElementName())) {
+    if (!DOMUtils.getNodeQName(el).equals(partdef.getElementName())) {
       String errmsg = "NMS message did not contain element "  + 
partdef.getElementName();
       __log.debug(errmsg);
       throw new MessageTranslationException(errmsg);

Modified: 
ode/branches/APACHE_ODE_1.X/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/utils/src/main/java/org/apache/ode/utils/DOMUtils.java?rev=749796&r1=749795&r2=749796&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
 Tue Mar  3 22:14:38 2009
@@ -695,8 +695,21 @@
         return true;
     }
 
-    public static QName getElementQName(Element el) {
-        return new QName(el.getNamespaceURI(),el.getLocalName());
+    public static QName getNodeQName(Node el) {
+       String localName = el.getLocalName();
+       String namespaceUri = el.getNamespaceURI();
+       if (localName == null) {
+               String nodeName = el.getNodeName();
+               int colonIndex = nodeName.indexOf(":");
+               if (colonIndex > 0) {
+                       localName = nodeName.substring(0, colonIndex);
+                       namespaceUri = nodeName.substring(colonIndex + 1);
+               } else {
+                       localName = nodeName;
+                       namespaceUri = null;
+               }
+       }
+        return new QName(namespaceUri, localName);
     }
     
     public static QName getNodeQName(String qualifiedName) {
@@ -1076,7 +1089,7 @@
      * except that it might have a different owner document. 
      * 
      * This method is fool-proof, unlike the <code>adoptNode</code> or 
<code>adoptNode</code> methods,
-     * in that it doesn't assume that the given node has a parent.
+     * in that it doesn't assume that the given node has a parent or a owner 
document.
      * 
      * @param document
      * @param sourceNode
@@ -1086,9 +1099,11 @@
        Node clonedNode = null;
 
        // what is my name?
-       String nodeName = sourceNode.getLocalName();
+       QName sourceQName = getNodeQName(sourceNode);
+       String nodeName = sourceQName.getLocalPart();
+       String namespaceURI = sourceQName.getNamespaceURI();
+       
        // if the node is unqualified, don't assume that it inherits the 
WS-BPEL target namespace
-       String namespaceURI = sourceNode.getNamespaceURI();
        if (Namespaces.WSBPEL2_0_FINAL_EXEC.equals(namespaceURI)) {
                namespaceURI = null;
        }


Reply via email to