You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ka...@apache.org on 2009/03/03 23:14:39 UTC

svn commit: r749796 - in /ode/branches/APACHE_ODE_1.X: bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/wsdl/ bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ jbi/src/main/java/org/apache/ode/jbi/msgmap/ utils/src/main/java/org/apache/od...

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;
     	}