cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Kulp (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-4652) Additional namespace is added when web service provider implements Provider<DOMSource>
Date Mon, 26 Nov 2012 12:44:58 GMT

    [ https://issues.apache.org/jira/browse/CXF-4652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13503761#comment-13503761
] 

Daniel Kulp commented on CXF-4652:
----------------------------------


While I don't object to the patch, I do want to point out that the bug is really in your code,
not CXF.   You are not setting the DocumentBuilder to be namespace aware.   Thus, the resulting
DOM doesn't have the namespaces properly parsed and processed.   Most likely, if you add documentFactory.setNamespaceAware(true)
it would work for you as the DOM would be properly constructed.
                
> Additional namespace is added when web service provider implements Provider<DOMSource>
> --------------------------------------------------------------------------------------
>
>                 Key: CXF-4652
>                 URL: https://issues.apache.org/jira/browse/CXF-4652
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.6.2
>         Environment: win7 + oracle jdk 1.6.0_29-b11
>            Reporter: Han Hong Fang
>            Assignee: Freeman Fang
>             Fix For: 2.4.11, 2.5.7, 2.6.4, 2.7.1
>
>         Attachments: W3CDOMStreamReader.java.patch
>
>
> In the invoke method of web service provider which implements Provider<DOMSource>,
using the following code to return a response DOMSource,
>     DOMSource response = new DOMSource();
>     DocumentBuilderFactory documentFacory = DocumentBuilderFactory.newInstance();
>     DocumentBuilder documentBuilder = null;
>     try {
>     documentBuilder = documentFacory.newDocumentBuilder();
>     } catch (ParserConfigurationException e) {
>         throw new RuntimeException(e);
>     }
>     Document doc;
>     try {
>         doc = documentBuilder.parse(new InputSource(
>         new ByteArrayInputStream(message.getBytes("UTF-8"))));
>     } catch (Exception e) {
>         throw new RuntimeException("error parse: " + str, e);
>     }
>     response.setNode(doc);
> In above code, if message string is:
>  "<ns2:echoResponse xmlns:ns2="annotations.webserviceprovider.fq"><return>Hello
world</return></ns2:echoResponse>", 
> but the soapMessage body will be:
>  "<ns2:echoResponse xmlns:ns2="annotations.webserviceprovider.fq" xmlns="annotations.webserviceprovider.fq"><return>Hello
world</return></ns2:echoResponse>"
> Additional attribute xmlns="annotations.webserviceprovider.fq" is added by cxf. This
additional attribute causes the unmarshal issue at client side.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message