Yes please, and attach your patches.
Thanks a lot !
Guillaume Nodet
[EMAIL PROTECTED] wrote:
Should I open a jira for this? One for the new feature in
HttpSoapClientMarshaller, and another for the potential defect in
SaajMarshaller?
/jonathan
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Tuesday, January 03, 2006 4:06 PM
To: [email protected]
Subject: RE: [servicemix-user] Problems with JSM flow and
SOAP messages
The earlier submission had a possible NullPointerException waiting to
happen; I've cleaned it up. The same is true of the current
SaajMarshaller.toNMS() method - a check should be performed
on the result of
parent.getAttributes() before any further action is taken, or a
NullPointerException may be raised.
/jonathan
Code Follows
public void toNMS(NormalizedMessage normalizedMessage, HttpMethod
method) throws Exception {
addNmsProperties(normalizedMessage, method);
String response = method.getResponseBodyAsString();
Node node = sourceTransformer.toDOMNode(new
StringSource(response));
CachedXPathAPI cachedXPathAPI = new CachedXPathAPI();
NodeIterator iterator =
cachedXPathAPI.selectNodeIterator(node,
"/*/*[local-name()='Body']/*");
Node root = iterator.nextNode();
/*
* Copy embedded namespaces from the envelope into the body,
similarly
* to the SaajMarshaller.toNMS() method.
*/
for (Node parent = root.getParentNode(); parent !=
null; parent =
parent.getParentNode()) {
NamedNodeMap attributes = parent.getAttributes();
if (attributes != null) {
for (int i = 0; i < attributes.getLength(); i++) {
Attr att = (Attr) attributes.item(i);
if (att.getName().startsWith("xmlns:")
&&
root.getAttributes().getNamedItemNS(att.getNamespaceURI(),
att.getLocalName()) == null) {
if (root.getNodeType() == Node.ELEMENT_NODE) {
((Element)
root).setAttributeNS(att.getNamespaceURI(),
att.getName(),
att.getValue());
}
}
}
}
}
normalizedMessage.setContent(new DOMSource(root));
}