Guillaume,

It appears as though the HttpSoapClientMarshaler.toNMS() is not ever called
when using the HttpSoapConnector, is that correct? What component is
responsible for extracting the Soap message from the HTTP request? Is this
performed by Xfire? Apparently, I made changes that work (i.e. the current
HttpSoapTest jUnit tests pass), but the modified service is never actually
called by the HttpSoapConnector. Can you please clarify the relationship
between the classes here?

regards,
/jonathan

> -----Original Message-----
> From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, January 03, 2006 4:12 PM
> To: [email protected]
> Subject: Re: [servicemix-user] Problems with JSM flow and 
> SOAP messages
> 
> 
> 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