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