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