CxfPayload to Node conversion is not working properly 
------------------------------------------------------

                 Key: CAMEL-4143
                 URL: https://issues.apache.org/jira/browse/CAMEL-4143
             Project: Camel
          Issue Type: Bug
          Components: camel-cxf
    Affects Versions: 2.8.0
            Reporter: Alexey Venderov
            Priority: Minor


We are using {{camel-cxf}} component and building it from the sources. Also we 
have slightly modified {{CxfPayloadConverterTest.testCxfPayloadToNode}} test, 
added some additional checks. Here are the changes that were made to the test:
{code:borderStyle=solid}
Index: CxfPayloadConverterTest.java
===================================================================
--- CxfPayloadConverterTest.java        (revision 6644)
+++ CxfPayloadConverterTest.java        (revision 6686)
@@ -49,6 +49,7 @@
         DocumentBuilderFactory documentBuilderFactory =
                 DocumentBuilderFactory.newInstance();
+        documentBuilderFactory.setNamespaceAware(true);
         DocumentBuilder documentBuilder = 
documentBuilderFactory.newDocumentBuilder();
         document = documentBuilder.parse(file);
         document.getDocumentElement().normalize();
@@ -118,5 +119,13 @@
         exchange.getIn().setBody(payload);
         node = exchange.getIn().getBody(Node.class);
         assertNotNull(node);
+        Element root = (Element) node;
+        assertEquals("root element name", "root", root.getNodeName());
+        assertEquals("root element namespace", "http://www.test.org/foo";,
+                root.getNamespaceURI());
+        Element bar = (Element) root.getElementsByTagName("bar").item(0);
+        assertEquals("child element name", "bar", bar.getNodeName());
+        assertEquals("child element namespace", "http://www.test.org/foo";,
+                bar.getNamespaceURI());
     }
 } 
{code}
Since there is no explicit converter from {{CxfPayload}} to {{Node}} the 
fallback converter from {{CxfPayloadConverter}} is used for this conversion. 
Fallback converter from {{CxfPayloadConverter}} under the hood uses converters 
from {{XmlConverter}}. There are two suitable converters in {{XmlConverter}} 
class which are randomly selected. Some times {{public Element 
toDOMElement(Node node)}} converter is used and some times {{public Document 
toDOMDocument(final Node node)}} converter is used. If {{public Document 
toDOMDocument(final Node node)}} converter is used then test fails with 
{{ClassCastException}}. To avoid this, explicit converter from {{CxfPayload}} 
to {{Node}} should be added. Patch that adds {{CxfPayload}} to {{Node}} 
converter is provided. 


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to