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



Reply via email to